Имя: Пароль:
1C
1С v8
Итоги в построителе запроса по второй группировке
0 tanya_w
 
02.08.11
16:49
УТ 10.3 На выходе пытаюсь добиться таблицы по количеству вида
Номенклатура | Склад1        | склад2        |..
Группа1      |  итогпогруппе | итогпогруппе  |..
артикул1     |  количество   |  количество   |...
артикул 2    |  количество   |  количество   |..
...

Запрос к ТоварывНТТ
ВЫБРАТЬ
   ТоварыВНТТОстатки.Склад.Ссылка КАК Склад,
   ТоварыВНТТОстатки.Номенклатура.Ссылка КАК Номенклатура,
   ТоварыВНТТОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   ТоварыВНТТОстатки.ЦенаВРознице КАК ЦенаВРознице,
   ТоварыВНТТОстатки.КоличествоОстаток КАК КоличествоОстаток,
   ТоварыВНТТОстатки.КоличествоОстаток * ТоварыВНТТОстатки.ЦенаВРознице КАК СуммаВРознице
ИЗ
   РегистрНакопления.ТоварыВНТТ.Остатки КАК ТоварыВНТТОстатки

УПОРЯДОЧИТЬ ПО
   ТоварыВНТТОстатки.Номенклатура.Артикул,
   ТоварыВНТТОстатки.Склад.Наименование
ИТОГИ
   СУММА(КоличествоОстаток),
   СУММА(СуммаВРознице)
ПО
   Номенклатура ИЕРАРХИЯ,
   Склад,
   ХарактеристикаНоменклатуры

В тексте:
ПостроительЗапроса.Выполнить();
   
   ВыборкаНоменклатура = ПостроительЗапроса.Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Номенклатура");
   
   
   Пока ВыборкаНоменклатура.Следующий() цикл
       ОбработкаПрерыванияПользователя();
       Если ВыборкаНоменклатура.Номенклатура.ЭтоГруппа тогда
           ИмяСекции = "СтрокаГ";
           Область = Макет.ПолучитьОбласть(ИмяСекции+"|ТМЦ");
           Область.Параметры.ПечСтрока = ВыборкаНоменклатура.Номенклатура;
           ТабДок.Вывести(Область);
           ТабДок.ТекущаяОбласть.Расшифровка = ВыборкаНоменклатура.Номенклатура;
                       
       Иначе
           
           Цвет="";

           ИмяСекции = "Строка"+?(ВидКартинки > 0, "К" + Строка(ВидКартинки), "");
           ОбработкаОбъектЗначенияСвойств = Обработки.ЗначенияСвойствОбъекта.Создать();
           ОбработкаОбъектЗначенияСвойств.ОбъектОтбораЗначений   =ВыборкаНоменклатура.Номенклатура.Ссылка;
           ОбработкаОбъектЗначенияСвойств.ОбъектОтбораНазначений =ВыборкаНоменклатура.Номенклатура.Ссылка;
           ОбработкаОбъектЗначенияСвойств.ПрочитатьЗаполнитьСвойстваИЗначения();
           Для каждого стр из ОбработкаОбъектЗначенияСвойств.СвойстваИЗначения Цикл
               Если (стр.Свойство.Наименование = СокрЛП("Цвета")) Тогда
                   
                    Цвет= СокрЛП(стр.Значение);
               
               КонецЕсли;
           КонецЦикла;    

           ПечСтрока = ВыборкаНоменклатура.Номенклатура.Артикул+ " " + ВыборкаНоменклатура.Номенклатура+?(Цвет="",""," Цвет: "+Цвет);
           Область = Макет.ПолучитьОбласть(ИмяСекции+"|ТМЦ");
           Область.Параметры.ПечТекстСтроки = ПечСтрока;
           Область.Параметры.ПечЕд = ВыборкаНоменклатура.Номенклатура.ЕдиницаХраненияОстатков.Наименование;
           Область.Параметры.Расшифровка = ВыборкаНоменклатура.Номенклатура;
           Если ИмяСекции <> "СтрокаГ" Тогда
               
               Выб = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.Прямой);
               Пока Выб.Следующий() Цикл
                   Если  ЗначениеЗаполнено(Выб.Номенклатура.ОсновноеИзображение) Тогда
                       Изображение = Выб.Номенклатура.ОсновноеИзображение.Хранилище.Получить();
                       Если Изображение <> Неопределено И ВидКартинки<>0 Тогда
                           Область.Рисунки["Рисунок" + ВидКартинки].Картинка = Изображение;
                       КонецЕсли;
                   КонецЕсли;
               КонецЦикла;
           КонецЕсли;
           ТабДок.Вывести(Область);
           
       КонецЕсли;
           ВыборкаСклад = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Склад");
Пока ВыборкаСклад.Следующий() цикл

А дальше получается, что расчет количества в ВыборкаСклад идет только в разрезе элементов номенклатуры. Для групп расчет не происходит.
В чем моя ошибка?
1 salvator
 
02.08.11
17:06
(0) В таблице, которую ты пытаешься получить, я не вижу итогов по складу. Зачем тогда в запросе они?
2 tanya_w
 
02.08.11
17:30
а на пересечение номенклатура - склад ж идут итоги по складу
3 salvator
 
02.08.11
17:34
Тогда надо сначала итоги по складу перебрать, потом по группе товаров, потом уже по характеристикам.
4 tanya_w
 
02.08.11
17:47
перемена в запросе ничего не дает. или имеется ввиду обход результата?
5 salvator
 
02.08.11
17:48
(4) и то и другое
6 tanya_w
 
02.08.11
18:12
спасибо, попробую. смущает то, что за основу я брала существующий отчет с тем же принципом - выводятся итоги по номенклатуре/складу. там обход группировок идет в том же порядке, что и у меня.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший