//====================================================================== Процедура Сформировать() Перем Запрос, ТекстЗапроса; печТекстФильтра = ОбъектМФ.ВернутьТекстФильтра(); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с НачДата по КонДата; |Без итогов; |Док = Документ.РасходнаяНакладная.ТекущийДокумент; |Фирма = Документ.РасходнаяНакладная.Фирма; |Клиент = Документ.РасходнаяНакладная.Контрагент; |Агент = Документ.РасходнаяНакладная.Проект; |Склад = Документ.РасходнаяНакладная.МестоХранения; |СуммаРуб = Документ.РасходнаяНакладная.Всего; |Функция Всего = Сумма(СуммаРуб); |Группировка Док; |"//}}ЗАПРОС ; ОбъектМФ.СформироватьУсловияЗапроса(ТекстЗапроса,Запрос); Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; тзДок=СоздатьОбъект("ИндексированнаяТаблица"); тзДок.ЗагрузитьЗапрос(Запрос,0,0); тзПодч=СоздатьОбъект("ИндексированнаяТаблица"); тзПодч.НоваяКолонка("Док"); тзПодч.НоваяКолонка("ДокПодч"); тзПодч.НоваяКолонка("ВсегоПодч"); Если флПрямойЗапрос=1 Тогда // ПрямойЗапрос ВТ $ПодчиненныеДокументы ЗапросПодч = СоздатьОбъект("ПрямойЗапрос"); ЗапросПодч.БухгалтерскийУчет = 0; ЗапросПодч.ОперативныйУчет = 0; ЗапросПодч.ПериодическиеЗначения = 0; ЗапросПодч.РежимОтладки = 0; ЗапросПодч.Текст=" |ВЫБРАТЬ | ПодчДок.ТекущийДокумент КАК [ДокПодч $Документ] | ,ПодчДок.ВидДокумента КАК [ДокПодч_вид $ВидДокумента] |ИЗ | $ПодчиненныеДокументы.Потомки(@ДокОсн) КАК ПодчДок |ГДЕ"; Если глЭтоSQL=1 Тогда ЗапросПодч.Текст=ЗапросПодч.Текст+" | ПодчДок.ВидДокумента = @лВидДок"; лЗначВидДок=глМетаДата.ИДДокумента("ПриходныйОрдер"); Иначе ЗапросПодч.Текст=ЗапросПодч.Текст+" | СОКРЛ(ПодчДок.ВидДокумента) = @лВидДок"; лЗначВидДок=глМетаДата.ЧислоВСтроку(глМетаДата.ИДДокумента("ПриходныйОрдер"),36); КонецЕсли; ЗапросПодч.ОписаниеПараметра("ДокОсн","Неопределенный"); ЗапросПодч.ОписаниеПараметра("лВидДок","ВидДокумента"); ЗапросПодч.ПодготовитьПараметризованныйЗапрос(); ВремяВып = _GetPerformanceCounter(); тзДок.ВыбратьСтроки(); Пока тзДок.ПолучитьСтроку()=1 Цикл ЗапросПодч.ПодставлятьПараметры("ДокОсн",тзДок.Док); ЗапросПодч.ПодставлятьПараметры("лВидДок",лЗначВидДок); тзВрем = ЗапросПодч.ВыполнитьПараметризованныйЗапрос(); тзВрем.ВыбратьСтроки(); Пока тзВрем.ПолучитьСтроку()=1 Цикл тзПодч.НоваяСтрока(); тзПодч.Док=тзДок.Док; тзПодч.ДокПодч=тзВрем.ДокПодч; тзПодч.ВсегоПодч=тзПодч.ДокПодч.Сумма; КонецЦикла; КонецЦикла; //лисхТЗ = тзПодч; //ОткрытьФорму("Отчет#", лисхТЗ, КаталогИБ()+"\Extforms\служб_ПросмотрСЗ_ТЗ_ИТЗ.ert"); Иначе // типовой ВремяВып = _GetPerformanceCounter(); ДокПодч=СоздатьОбъект("Документ"); тзДок.ВыбратьСтроки(); Пока тзДок.ПолучитьСтроку()=1 Цикл Если ДокПодч.ВыбратьПодчиненныеДокументы(,,тзДок.Док)=0 Тогда Продолжить; КонецЕсли; Пока ДокПодч.ПолучитьДокумент() = 1 Цикл Если (ДокПодч.Вид()="ПриходныйОрдер") и (ДокПодч.Проведен()=1) Тогда тзПодч.НоваяСтрока(); тзПодч.Док=тзДок.Док; тзПодч.ДокПодч=ДокПодч.ТекущийДокумент(); тзПодч.ВсегоПодч=ДокПодч.Сумма; КонецЕсли; КонецЦикла; КонецЦикла; КонецЕсли; Сообщить(глСообщитьРазностьТаймера(ВремяВып,_GetPerformanceCounter())); тзДок.Объединить(тзПодч); тзДок.Группировать("индДок:Док","Всего,ВсегоПодч",1); //лисхТЗ = тзДок; //ОткрытьФорму("Отчет#", лисхТЗ, КаталогИБ()+"\Extforms\служб_ПросмотрСЗ_ТЗ_ИТЗ.ert"); Таб=СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); Таб.ВывестиСекцию("Шапка"); Таб.Опции(0,0,Таб.ВысотаТаблицы(),0); тзДок.ВыбратьСтроки("индДок",1); Пока тзДок.ПолучитьСтроку("индДок",1)=1 Цикл тз=тзДок.тзПотомки; тз.ВыбратьСтроки(); Пока тз.ПолучитьСтроку()=1 Цикл Если тз.НомерСтроки=1 Тогда Таб.ВывестиСекцию("СтрДок"); Иначе Таб.ВывестиСекцию("СтрПодч"); КонецЕсли; КонецЦикла; КонецЦикла; Таб.ВывестиСекцию("Подвал"); Таб.ПараметрыСтраницы(1,,,2,2,2,2,0,0,1,,); Таб.ТолькоПросмотр(1); Таб.Показать("Реестр_РНК_ПКО",""); КонецПроцедуры