Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 06:52

Группировка товаров

Автор Nemel, 22 авг 2020, 12:29

0 Пользователей и 1 гость просматривают эту тему.

Nemel

Привет всем. Делаю печатную форму для документа Заказ покупателя. В запросе делаю группировку по столбцам и вывожу итоги

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



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


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

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

ВсегоПозиций = ВсегоПозиций + 1;
ПервыйСИзменением = ложь;
МассивДетальныхДанных.Добавить(ПараметрыДетПозиции);
КонецЦикла; // ВыборкаТовары
КонецЦикла; // ВыборкаЦветТкани
КонецЦикла; // ВыборкаВидТкани
КонецЦикла; // ВыборкаНомерМодели
КонецЦикла; // ВыборкаКодИзменения
ПараметрыПозиции.Вставить("ДетальныеДанные", МассивДетальныхДанных);
Позиции.Добавить(ПараметрыПозиции);
Номер = Номер + 1;
КонецЦикла;

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


Помогите доделать обработку не могу ничего придумать как убрать строку...


LexaK

товар и товар с изменением - это два разных товара!
что вам система и выводит в разные строчки.
что бы все группировалось по товарам - убирайте изменения,
либо агригируйте изменение, Максимум или Минимум тогда будет товар с каким-то одним изменением
если помогло нажмите: Спасибо!

Nemel

Цитата: LexaK от 24 авг 2020, 10:03
либо агригируйте изменение, Максимум или Минимум тогда будет товар с каким-то одним изменением
Спасибо за ответ, можете пояснить что значит термин Агригирование? Можно примером если не сложно.

LexaK

можно и без агрегирования, просто уберите из запроса Изменения (все - коды, наименования и т.д.) останутся одни товары - что и требовалось
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск