Modber Сообщество
профессионалов по 1С

Обход результата запроса по группировкам 1С 8

  
Сообщений: 4

-1
[b]Помогите разобраться моей задачей. Уже 3-й день мучаю и множество вариантов перепробовал, но так и не добился необходимого результата. Задача следующая: Есть регистр накопления ТМЦ (партионный учет товара на складах), Необходимо построить отчет остатки товаров на складах по группировкам.[/b] --Склад- | |- ТМЦ- | | |- партия- | | |- партия- | |- ТМЦ- | | |- партия- | | |- партия- --Склад- | |- ТМЦ- | | |- партия- И т.д. Вывести отчет необходимо в свой макет без использования построителя. Вот мой запрос и вывод его в форму: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТМЦОстатки.ТМЦ КАК ТМЦ, | ТМЦОстатки.Склад КАК Склад, | ТМЦОстатки.Дата КАК Дата, | СУММА(ТМЦОстатки.КоличествоОстаток) КАК КоличествоОстаток, | СУММА(ТМЦОстатки.СуммаЗакупкиОстаток) КАК СуммаЗакупкиОстаток |ИЗ | РегистрНакопления.ТМЦ.Остатки(&Период) КАК ТМЦОстатки"; Если ПоСкладам = Истина Тогда Если Не Склад.Пустая() И ТабличнаяЧастьТМЦ.Количество() <> 0 Тогда Запрос.Текст = Запрос.Текст+" |ГДЕ | ТМЦОстатки.Склад = &Склад | И ТМЦОстатки.ТМЦ В (&ТМЦ)"; ИначеЕсли Не Склад.Пустая() И ТабличнаяЧастьТМЦ.Количество() = 0 Тогда Запрос.Текст = Запрос.Текст+" |ГДЕ | ТМЦОстатки.Склад = &Склад"; ИначеЕсли Склад.Пустая() И ТабличнаяЧастьТМЦ.Количество() <> 0 Тогда Запрос.Текст = Запрос.Текст+" |ГДЕ | ТМЦОстатки.ТМЦ В (&ТМЦ)"; ИначеЕсли Склад.Пустая() И ТабличнаяЧастьТМЦ.Количество() = 0 Тогда КонецЕсли; Иначе Если ТабличнаяЧастьТМЦ.Количество() <> 0 Тогда Запрос.Текст = Запрос.Текст+" |ГДЕ | ТМЦОстатки.ТМЦ В (&ТМЦ)"; Иначе КонецЕсли; КонецЕсли; Запрос.Текст = Запрос.Текст+" | |СГРУППИРОВАТЬ ПО | ТМЦОстатки.Склад, | ТМЦОстатки.ТМЦ, | ТМЦОстатки.Дата |УПОРЯДОЧИТЬ ПО | Склад, | ТМЦ, | Дата"; Запрос.УстановитьПараметр("Период",КонецДня(ДатаОтчета)); Если ПоСкладам = Истина Тогда Если Не Склад.Пустая() И ТабличнаяЧастьТМЦ.Количество() <> 0 Тогда Запрос.УстановитьПараметр("Склад",Склад.Ссылка); Запрос.УстановитьПараметр("ТМЦ",МассивТМЦ); ИначеЕсли Не Склад.Пустая() И ТабличнаяЧастьТМЦ.Количество() = 0 Тогда Запрос.УстановитьПараметр("Склад",Склад.Ссылка); ИначеЕсли Склад.Пустая() И ТабличнаяЧастьТМЦ.Количество() <> 0 Тогда Запрос.УстановитьПараметр("ТМЦ",МассивТМЦ); ИначеЕсли Склад.Пустая() И ТабличнаяЧастьТМЦ.Количество() = 0 Тогда КонецЕсли; Иначе Если ТабличнаяЧастьТМЦ.Количество() <> 0 Тогда Запрос.УстановитьПараметр("ТМЦ",МассивТМЦ); Иначе КонецЕсли; КонецЕсли; // Обойти запрос группировками .............. // Вывести по результатам группировок отчет Результат = Запрос.Выполнить(); ВыборкаПоСкладу = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоСкладу.Следующий() Цикл Сообщить(ВыборкаПоСкладу.Склад); ВыборкаПоТМЦ = ВыборкаПоСкладу.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоТМЦ.Следующий() Цикл Сообщить(ВыборкаПоТМЦ.ТМЦ); ВыборкаПоПартиям = ВыборкаПоТМЦ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоПартиям.Следующий() Цикл Сообщить(ВыборкаПоПартиям.Дата); КонецЦикла; КонецЦикла; КонецЦикла; Проблема заключается в том что Обход по группировкам запроса выполнить неполучается, всевремя обходит по группировке ТМЦ, а если я изменяю ВыборкаПоСкладу = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); на ВыборкаПоСкладу = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Склад"); то выдает ошибку о том что данной группировки не существует. Помогите пожалуйста. Буду Вам очень признателен!
Сообщений: 2

0
Необходимо добавить ИТОГИ СУММА(КоличествоОстаток),СУММА(СуммаЗакупкиОстаток) ПО Склад,ТМЦ Если отсутствуют Итоги, то не сможешь сделать Обход ПоГруппировкам, ты из компании тех, кто путают понятия группировки по итогам с СГРУППИРОВАТЬ ПО
В начало страницы 
|
Перейти на форум: