Имя: Пароль:
1C
1С v8
Группировка товара и вывод
0 nemel09
 
22.08.20
12:54
Привет всем. Делаю печатную форму для документа Заказ покупателя. В запросе делаю группировку по столбцам и вывожу итоги


|ВЫБРАТЬ
                   |    ВТТовары.ПредставлениеНоменклатуры КАК ПредставлениеНоменклатуры,
                   |    ВТТовары.ИзменениеВПошиве КАК ИзменениеВПошиве,
                   |    ВТТовары.ОписаниеИзменения КАК ОписаниеИзменения,
                   |    ВТТовары.НомерМодели КАК НомерМодели,
                   |    ВТТовары.ВидТкани КАК ВидТкани,
                   |    ВТТовары.ЦветТкани КАК ЦветТкани,
                   |    ВТТовары.Количество КАК Количество,
                   |    ВТТовары.ЕдиницаИзмерения,
                   |    ВТТовары.Цена КАК Цена,
                   |    ВТТовары.Сумма КАК Сумма,
                   |    ВТТовары.СуммаНДС КАК СуммаНДС,
                   |    ВТТовары.ХарактеристикаРост,
                   |    ВТТовары.ХарактеристикаРазмер,
                   |    ЗначенияСвойствОбъектов.Значение КАК Рост,
                   |    ЗначенияСвойствОбъектов1.Значение КАК Размер,
                   |    ВТТовары.НомерСтроки КАК НомерСтроки,
                   |    ВТТовары.КодИзменения КАК КодИзменения,
                   |    ВТТовары.ИзменениеВЦвете,
                   |    ВТТовары.Скидка КАК Скидка,
                   |    ВТТовары.СкидкаА КАК СкидкаА,
                   |    ВТТовары.Номенклатура КАК Номенклатура
                   |ИЗ
                   |    ВТТовары КАК ВТТовары
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
                   |        ПО ВТТовары.ХарактеристикаНоменклатуры = ЗначенияСвойствОбъектов.Объект
                   |            И ВТТовары.ХарактеристикаРост = ЗначенияСвойствОбъектов.Свойство
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов1
                   |        ПО ВТТовары.ХарактеристикаРазмер = ЗначенияСвойствОбъектов1.Свойство
                   |            И ВТТовары.ХарактеристикаНоменклатуры = ЗначенияСвойствОбъектов1.Объект
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    НомерСтроки
                   |ИТОГИ
                   |    СУММА(Количество),
                   |    МАКСИМУМ(Цена),
                   |    СУММА(Сумма),
                   |    СУММА(СуммаНДС),
                   |    МАКСИМУМ(Скидка),
                   |    МАКСИМУМ(СкидкаА)
                   |ПО
                   |    ПредставлениеНоменклатуры,
                   |    НомерМодели,
                   |    КодИзменения,
                   |    ВидТкани,
                   |    ЦветТкани
                   |;



Делаю обработку запроса



Пока ВыборкаТоварыИерархия.Следующий()Цикл
        ПараметрыПозиции = Новый Структура;
        ПараметрыПозиции.Вставить("Номер", Номер);
        //ПараметрыПозиции.Вставить("ОписаниеНоменклатуры", ВыборкаТовары.ПредставлениеНоменклатуры + Символы.ПС + ВыборкаТовары.ИзменениеВПошиве);
        ПараметрыПозиции.Вставить("Номенклатура", ВыборкаТоварыИерархия.ПредставлениеНоменклатуры);
        //++Р--------------------------
        ПараметрыПозиции.Вставить("Цена", ВыборкаТоварыИерархия.Цена - (ВыборкаТоварыИерархия.Цена*((?(ВыборкаТоварыИерархия.Скидка = Null, 0,ВыборкаТоварыИерархия.Скидка)/100)+(?(ВыборкаТоварыИерархия.СкидкаА = Null, 0,ВыборкаТоварыИерархия.СкидкаА)/100))));
        //--Р--------------------------
        ПараметрыПозиции.Вставить("Количество", ВыборкаТоварыИерархия.Количество);
        ПараметрыПозиции.Вставить("Сумма", ВыборкаТоварыИерархия.Сумма);
        ПараметрыПозиции.Вставить("СуммаНДС", ВыборкаТоварыИерархия.СуммаНДС);    
        МассивДетальныхДанных    = Новый Массив;
        ВыборкаКодИзменения        = ВыборкаТоварыИерархия.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        
        Пока ВыборкаКодИзменения.Следующий() Цикл
            ВыборкаНомерМодели = ВыборкаКодИзменения.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
            Пока ВыборкаНомерМодели.Следующий() Цикл
                ВыборкаВидТкани = ВыборкаНомерМодели.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                Пока ВыборкаВидТкани.Следующий() Цикл
                    ВыборкаЦветТкани = ВыборкаВидТкани.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                    Пока ВыборкаЦветТкани.Следующий() Цикл
                        ВыборкаТовары    = ВыборкаЦветТкани.Выбрать();
                        ПервыйСИзменением = Истина;
                        Пока ВыборкаТовары.Следующий() Цикл
                            ПараметрыДетПозиции = Новый Структура;
                            ПараметрыДетПозиции.Вставить("Номер", ВыборкаТовары.НомерСтроки);
                            ПараметрыДетПозиции.Вставить("ИзменениеВПошиве", ?(ПервыйСИзменением, ВыборкаТовары.ИзменениеВПошиве, ""));
                            ПараметрыДетПозиции.Вставить("НомерМодели", ?(ПервыйСИзменением, ВыборкаТовары.НомерМодели, ""));
                            ПараметрыДетПозиции.Вставить("ОписаниеИзменения", ВыборкаТовары.ОписаниеИзменения);
                            ПараметрыДетПозиции.Вставить("ВидТкани", ?(ПервыйСИзменением, ВыборкаТовары.ВидТкани, ""));
                            ПараметрыДетПозиции.Вставить("ЦветТкани", Строка(?(ПервыйСИзменением, ВыборкаТовары.ЦветТкани, "")) + " " + Строка(ВыборкаТовары.ИзменениеВЦвете));
                            ПараметрыДетПозиции.Вставить("Размер", ВыборкаТовары.Размер);
                            ПараметрыДетПозиции.Вставить("Рост", ВыборкаТовары.Рост);
                            ПараметрыДетПозиции.Вставить("Количество", ВыборкаТовары.Количество);
                            ПараметрыДетПозиции.Вставить("ЕдиницаИзмерения", ВыборкаТовары.ЕдиницаИзмерения);                        
                            ПараметрыДетПозиции.Вставить("Цена", ВыборкаТовары.Цена - (ВыборкаТовары.Цена*((?(ВыборкаТовары.Скидка = Null, 0,ВыборкаТовары.Скидка)/100)+(?(ВыборкаТовары.СкидкаА = Null, 0,ВыборкаТовары.СкидкаА)/100))));//ВыборкаТовары.Цена);
                            ПараметрыДетПозиции.Вставить("Сумма", ВыборкаТовары.Сумма);
                            ПараметрыДетПозиции.Вставить("СуммаНДС", ВыборкаТовары.СуммаНДС);
                            Итого         = Итого + ПараметрыДетПозиции.Сумма;
                            ИтогоНДС    = ИтогоНДС + ПараметрыДетПозиции.СуммаНДС;
                            
                            ВсегоПозиций = ВсегоПозиций + 1;
                            ПервыйСИзменением = ложь;
                            МассивДетальныхДанных.Добавить(ПараметрыДетПозиции);
                        КонецЦикла; // ВыборкаТовары
                    КонецЦикла; // ВыборкаЦветТкани
                КонецЦикла; // ВыборкаВидТкани
            КонецЦикла; // ВыборкаНомерМодели
        КонецЦикла; // ВыборкаКодИзменения
        ПараметрыПозиции.Вставить("ДетальныеДанные", МассивДетальныхДанных);
                Позиции.Добавить(ПараметрыПозиции);
        Номер = Номер + 1;
    КонецЦикла;    

В итоге товары группируются, но если в поле ИзменениеВПошиве есть какие то данные, то оно выводится отдельно от всей группировки.

https://d.radikal.ru/d12/2008/a6/0d076ccd195d.jpg

Помогите доделать обработку не могу ничего придумать как убрать строку...
1 Креатив
 
22.08.20
15:46
(0)Сначала нужно посмотреть, то ли возвращает запрос? Выгрузи в отладчике в ТЗ и посмотри.
2 nemel09
 
25.08.20
09:52
(1) Выгрузил, запрос мне возвращает что товар с изменением это отдельный товар нежели товар без изменения( что и логично), а вот как из объединить не могу придумать...
3 Мимохожий Однако
 
25.08.20
10:21
Запрос показывай...
4 nemel09
 
25.08.20
10:29
(3) вот полный запрос


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