Перем ТП,КартинкаСтатуса,КартСтатусДока,оПривязки,_Форма,ДатаНач,ДатаКон,Таймоут,ТекРО; Перем Док,ТекДок; Перем СтарыеКассовыеОтчеты; Перем Желтый,Красный; Перем рс2; //********************************************************************************************* Функция СуммаКассОтчетаДо(док) Если ПустоеЗначение(док)=1 Тогда Возврат 0; КонецЕсли; наДату=глГГММДД(док.ДатаДок); рс2.УстПараметр(1,наДату); рс2.УстПараметр(2,наДату+"Z"); рс2.УстПараметр(3,Сред(Док.ОтборДока,2,4)); рс2.УстПараметр(4,док.Фирма); рс2.УстПараметр(5,док.Секция); Сум=рс2.ВыполнитьСкалярный(); Возврат ?(ПустоеЗначение(Сум)=1,"",Сум); КонецФункции // СуммаСтарыхКассовых Процедура ПодготовитьПарамЗапрос() рс2=СоздатьОбъект("ODBCRecordSet"); рс2.ДобПараметр(1,14,8,0); рс2.ДобПараметр(1,14,9,0); рс2.ДобПараметр(1,14,4,0); рс2.ДобПараметр(1,14,9,0); рс2.ДобПараметр(1,14,9,0); //рс2.Отладка(1); ТекстЗапроса="-- Получить Сумму Кассового отчета по старой схеме |select top 1 | case when (sum($КассаСтроки.Сертификат)=0) then cast(sum($КассаСтроки.Выручка)-sum($КассаСтроки.СуммаВозврата) as char) else '*'+cast(sum($КассаСтроки.Выручка)-sum($КассаСтроки.СуммаВозврата) as char) end as КассовыйОтчет |from _1sjourn as jur (nolock) //| left join $Документ.КассовыйОтчет as Касса (nolock) on jur.iddoc=Касса.iddoc | left join $ДокументСтроки.КассовыйОтчет as КассаСтроки (nolock) on jur.iddoc=КассаСтроки.iddoc |where (jur.iddocdef=$ВидДокумента.КассовыйОтчет) | and (jur.date_time_iddoc between ? and ?) | and (substring(jur.$ОбщийРеквизит.ОтборДока,2,4)=?) | and (jur.$ОбщийРеквизит.Фирма=?) //| and ($Касса.Склад=?) | and ($КассаСтроки.Секция=?) | and (jur.closed &1=1) |"; рс2.Подготовить(ТекстЗапроса); КонецПроцедуры // ПодготовитьПарамЗапрос //********************************************************************************************* Функция СуммаКассОтчета(РДок) Если ПустоеЗначение(РДок)=0 Тогда Если РДок.ПометкаУдаления()=0 Тогда Если рДок.ДатаДок<Константа.ДатаККМ Тогда Рез = СуммаКассОтчетаДо(РДок); Иначе //Рез = СуммаКассОтчетаПосле(РДок); Конецесли; Возврат Рез; КонецЕсли; Конецесли; КонецФункции //********************* Обработки условий { ********************* Функция УсловияФильтра() // возвращает условия в виде SQL запрос-строки усл=""; усл=усл+"--and-- Журнал.DATE_TIME_IDDOC Between :ДатаНач and :ДатаКон~"; усл=усл+"--and-- Журнал.iddocdef = $ВидДокумента.ОтчетРО"; Если ПустоеЗначение(ТекРО)=1 Тогда Если флБагет=0 Тогда усл=усл+"--and-- Журнал.$ОбщийРеквизит.ОтборДока='#"+" "+"'"; Иначе усл=усл+"--and-- Журнал.$ОбщийРеквизит.ОтборДока='$"+" "+"'"; КонецЕсли; Иначе Если флБагет=0 Тогда усл=усл+"--and-- Журнал.$ОбщийРеквизит.ОтборДока='#"+СокрЛП(ТекРО.Префикс)+"'"; Иначе усл=усл+"--and-- Журнал.$ОбщийРеквизит.ОтборДока='$"+СокрЛП(ТекРО.Префикс)+"'"; КонецЕсли; КонецЕсли; Если ПустаяСтрока(усл)=0 Тогда усл=Сред(усл,8);усл="where "+усл; усл=стрЗаменить(усл,"--and--"," and"); КонецЕсли; Возврат РазделительСтрок+усл; КонецФункции // УсловияФильтра() //********************* Обработки условий } ********************* Процедура ПолучитьДанные(открытие=0) Если открытие=1 Тогда сз=глПолучитьНастройкиЖурналовПользователя(); ДатаНач=сз.Получить("ДатаНач"); ДатаКон=сз.Получить("ДатаКон"); Таймоут=сз.Получить("Обновление"); КонецЕсли; Форма.Заголовок("-=Интервал: ["+ДатаНач+"-"+ДатаКон+"]=-",1); Форма.статус_запроса.Заголовок("Идет обработка..."); усл=УсловияФильтра(); ТекстЗапроса = "-- qryMaker:Журнал ОтчетРО |SELECT Журнал.IDDOC as [Документ $Документ.ОтчетРО] | , left(Журнал.DATE_TIME_IDDOC,8) as [Дата $Дата] | , Журнал.DOCNO as Номер | , Журнал.DATE_TIME_IDDOC as ПозицияДокумента | , case when (Журнал.ISMARK=1) then 0 when (Журнал.CLOSED &1=1) then 2 else 1 end as Проведен | , Журнал.$ОбщийРеквизит.ОтборДока as ОтборДока | , ОтчетРО.$ОбщийРеквизит.ПризнакПроведения as ПризнакПроведения | , Секции.descr as Секция | , $ОтчетРО.СтоимостьРуб as Сумма |FROM _1SJOURN AS Журнал with (nolock) | left join $Документ.ОтчетРО AS ОтчетРО (nolock) ON ОтчетРО.IDDOC = Журнал.IDDOC | left join $Справочник.Секции as Секции (nolock) on Секции.id=$ОтчетРО.Секция |"+усл+" |"; Источник=СоздатьОбъект("ПоставщикДанныхODBC.MSSQL"); Источник.БазаДанных = СоздатьОбъект("ODBCDatabase"); Источник.УстановитьТекстовыйПараметр("ДатаНач",ДатаНач); Источник.УстановитьТекстовыйПараметр("ДатаКон",ДатаКон); Источник.УстТекстЗапроса(ТекстЗапроса); Источник.УстКлючПорядка("ПозицияДокумента"); //Источник.Поля.Добавить("Документ").Автоудаление=0; Источник.УстИДПоле("Документ"); Источник.Отладка(1); Форма.Заголовок("- Период: ["+ДатаНач+" - "+ДатаКон+"]",1); ТП=_Форма.СоздатьЭлементУправления("ТабличноеПоле",Форма.ТП); ТП.АвтоШирина(); //ТП.ФиксацияСлева=3; Колонка=ТП.Колонки.Добавить("Проведен"); Колонка.Данные="Проведен"; Колонка.Заголовок=""; Колонка.Ширина=18; Колонка.ИзменениеРазмера=0; Колонка=ТП.Колонки.Добавить("ПризнакПроведения"); Колонка.Данные="ПризнакПроведения"; Колонка.Заголовок="пр"; Колонка.Ширина=18; Колонка.ИзменениеРазмера=0; Колонка=ТП.Колонки.Добавить("Секция"); Колонка.Данные="Секция"; Колонка.Заголовок="Секция"; //Колонка.Ширина=20; Колонка=ТП.Колонки.Добавить("Дата"); Колонка.Данные="Дата"; Колонка.Заголовок="Дата"; Колонка.Ширина=50; Колонка.ИзменениеРазмера=0; Колонка=ТП.Колонки.Добавить("Номер"); Колонка.Данные="Номер"; Колонка.Заголовок="Номер"; //Колонка.Ширина=50; Колонка=ТП.Колонки.Добавить("Сумма"); Колонка.Данные="Сумма"; Колонка.Заголовок="Сумма"; Колонка.ГоризонтальноеВыравнивание=2; //Колонка.Ширина=50; Колонка=ТП.Колонки.Добавить("КассовыйОтчет"); //Колонка.Данные="КассовыйОтчет"; Колонка.Заголовок="Касс. Отчет"; Колонка.Видимость=1; //Колонка.Ширина=50; ТП.ПоставщикДанных=Источник; ТП.ТаймаутОбновления=?(Таймоут<=15,15,Таймоут);//Время обновления журнала ТП.РежимВыделения=1; ТП.РежимВыделенияСтроки=2; ТП.ЦветФонаВыделения=глПолучитьЦвет(200,230,255); // голубой ТП.ЦветТекстаВыделения=глПолучитьЦвет(0,0,0); ТП.Колонки.Проведен.УстановитьКартинкиСтрок(КартСтатусДока,16); ТП.Колонки.ПризнакПроведения.УстановитьКартинкиСтрок(КартинкаСтатуса,16); ТП.ОбновитьСтроки(); Форма.статус_запроса.Заголовок(""); КонецПроцедуры // Сформировать //***************************{ Табличные поля ******************************* Процедура ТППриВыводеСтроки(ТП,ОформлениеСтроки,ДанныеСтроки,ТипРегиона) //ПриВыводеСтроки Докум=ДанныеСтроки.Получить("Документ"); ОбъектЯчейка=ОформлениеСтроки.Ячейки.Получить("ПризнакПроведения"); НомерКартинки=Число(ДанныеСтроки.Получить("ПризнакПроведения")); ОбъектЯчейка.ОтображатьКартинку=1; ОбъектЯчейка.ИндексКартинки=НомерКартинки-1; ОбъектЯчейка.ОтображатьТекст=0; ОбъектЯчейка=ОформлениеСтроки.Ячейки.Получить("Проведен"); НомерКартинки=Число(ДанныеСтроки.Получить("Проведен")); НомерКартинки=НомерКартинки+6; ОбъектЯчейка.ОтображатьКартинку=1; ОбъектЯчейка.ИндексКартинки=НомерКартинки; ОбъектЯчейка.ОтображатьТекст=0; ОбъектЯчейка.ЦветФона = 13160660; ОбъектЯчейка=ОформлениеСтроки.Ячейки.Получить("Сумма"); ОбъектЯчейка.Текст=СокрЛП(Формат(ДанныеСтроки.Получить("Сумма"),"Ч015.2")); серт=0; суммаКассы=СуммаКассОтчета(Докум); Если Лев(суммаКассы,1)="*" Тогда серт=1; суммаКассы=Число(Сред(суммаКассы,2)); Иначе суммаКассы=Число(суммаКассы); КонецЕсли; ОбъектЯчейка=ОформлениеСтроки.Ячейки.Получить("КассовыйОтчет"); ОбъектЯчейка.УстановитьТекст(СокрЛП(Формат(суммаКассы,"Ч015.2"))); ОбъектЯчейка.ГоризонтальноеВыравнивание=2; суммаОтчетаРО=Число(ДанныеСтроки.Получить("Сумма")); Если (суммаКассы<>0) и (суммаОтчетаРО<>0) Тогда Если (суммаОтчетаРО<>суммаКассы) и (серт=0) Тогда ОбъектЯчейка.ЦветФона = Красный; ИначеЕсли (суммаОтчетаРО<>суммаКассы) и (серт=1) Тогда ОбъектЯчейка.ЦветФона = Желтый; КонецЕсли; Иначе //ОбъектЯчейка.Текст="!!!"; ОбъектЯчейка.ЦветФона = 13160660; КонецЕсли; КонецПроцедуры Процедура ТПВыбор(ТП,стр,кол,ТипРегиона) //Выбор() ОткрытьФорму(ТекДок,,-1); КонецПроцедуры Процедура ТППриАктивизацииСтроки(ТП) //ПриАктивизацииСтроки() ТекДок=ТП.ТекущиеДанные.Получить("Документ"); КонецПроцедуры //*************************** Табличные поля }******************************* Процедура ПриОткрытии() _Форма=СоздатьОбъект("Форма"); _Форма.УстановитьФорму(Форма); КонецПроцедуры Процедура ПослеОткрытия() ПодготовитьПарамЗапрос(); ПолучитьДанные(1); КонецПроцедуры //****************************** ОБЩИЕ ДАННЫЕ ******************************** КартинкаСтатуса = СоздатьОбъект("Картинка"); КартинкаСтатуса.Загрузить("ПризнакЗакрытия"); КартинкаСтатуса.РежимРисования(1); КартСтатусДока = СоздатьОбъект("Картинка"); КартСтатусДока.Загрузить("Статусы"); КартСтатусДока.РежимРисования(1); СтарыеКассовыеОтчеты=1; Желтый = глПолучитьЦвет(240,249,68); Красный = глПолучитьЦвет(255,137,137);