Умные итоги по запросу с регистратором
Писал запрос по бухгалтерскому регистру с регистратором и держал пальцы крестиком, чтобы итоги были верными.
Предчувствия меня не обманули, они посчитались правильно, именно как остатки, а не сумма остатков по каждому регистратору. Пронесло!
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура, | ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток КАК СуммаНачальныйОстаток, | ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток, | ХозрасчетныйОстаткиИОбороты.СуммаОборот КАК СуммаОборот, | ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт, | ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт, | ХозрасчетныйОстаткиИОбороты.Регистратор КАК Регистратор, | ХозрасчетныйОстаткиИОбороты.Период КАК Период |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Дата1, &Дата2, Регистратор, Движения, Счет = &Счет, , Субконто2 = &Контрагент) КАК ХозрасчетныйОстаткиИОбороты |ИТОГИ | СУММА(СуммаНачальныйОстаток), | СУММА(СуммаКонечныйОстаток), | СУММА(СуммаОборотДт), | СУММА(СуммаОборотКт) |ПО | ОБЩИЕ, | Номенклатура"; Запрос.УстановитьПараметр("Дата1", Объект.Дата1); Запрос.УстановитьПараметр("Дата2", КонецДня(Объект.Дата2)); Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.ТМЦпринятыеНаОтветственноеХранение); //002. Запрос.УстановитьПараметр("Контрагент", Объект.Контрагент); НомерПП = 0; ВыборкаВсего = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаВсего.Следующий() Цикл ВыборкаНоменклатура = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаНоменклатура.Следующий() Цикл НомерПП = НомерПП + 1; Область = Макет.ПолучитьОбласть("Товар"); Область.Параметры.НаименованиеТовара = ВыборкаНоменклатура.Номенклатура; Область.Параметры.НомерПП = НомерПП; Область.Параметры.НачальныйОстаток = ВыборкаНоменклатура.СуммаНачальныйОстаток; Область.Параметры.КонечныйОстаток = ВыборкаНоменклатура.СуммаКонечныйОстаток; Область.Параметры.Приход = ВыборкаНоменклатура.СуммаОборотДт; Область.Параметры.Расход = ВыборкаНоменклатура.СуммаОборотКт; Результат.Вывести(Область); ВыборкаДокумент = ВыборкаНоменклатура.Выбрать(); Пока ВыборкаДокумент.Следующий() Цикл Область = Макет.ПолучитьОбласть("Документ"); Если ТипЗнч(ВыборкаДокумент.Регистратор) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда ПредставлениеДокумента = "Поступление №" + СокрЛП(ВыборкаДокумент.Регистратор.Номер); ИначеЕсли ТипЗнч(ВыборкаДокумент.Регистратор) = Тип("ДокументСсылка.ВозвратТоваровПоставщику") Тогда ПредставлениеДокумента = "Возврат №" + СокрЛП(ВыборкаДокумент.Регистратор.Номер); Иначе ПредставлениеДокумента = Строка(ВыборкаДокумент.Регистратор); КонецЕсли; Область.Параметры.Документ = ПредставлениеДокумента; Область.Параметры.Дата = ВыборкаДокумент.Период; Область.Параметры.НачальныйОстаток = ВыборкаДокумент.СуммаНачальныйОстаток; Область.Параметры.КонечныйОстаток = ВыборкаДокумент.СуммаКонечныйОстаток; Область.Параметры.Приход = ВыборкаДокумент.СуммаОборотДт; Область.Параметры.Расход = ВыборкаДокумент.СуммаОборотКт; Результат.Вывести(Область); КонецЦикла; КонецЦикла; Область = Макет.ПолучитьОбласть("Итого"); Область.Параметры.НачальныйОстаток = ВыборкаВсего.СуммаНачальныйОстаток; Область.Параметры.КонечныйОстаток = ВыборкаВсего.СуммаКонечныйОстаток; Область.Параметры.Приход = ВыборкаВсего.СуммаОборотДт; Область.Параметры.Расход = ВыборкаВсего.СуммаОборотКт; Результат.Вывести(Область); КонецЦикла;
Свежие комментарии