Приветствую, форумчане!
1с 8.3, полностью самописная, уф.
Досталось в наследство: имеется обработка, в ней дерево. Одним из реквизитов является булево, если он отмечен, то обработка обходит всё дерево, далее отмеченные строки формирует нечто и создает документ с этими данными.
Всё работает, но, если в дереве имеются отмеченные строки с абсолютно одинаковыми реквизитами, то код типа их группирует и в создаваемый документ шлет одну строку.
Например:
1. Что-то 23/4 "дада" 5 шт
2. Что-то 23/4 "дада" 5 шт
В документ кидает "Что-то 23/4 "дада" 5 шт", а нужно все 2-е штуки позиций.
Никак не могу разобраться в коде, где этот код группирует одинаковые по реквизитам данные...
Код массНоменклатур = Новый Массив;
ссылкаПрЗадание = Неопределено;
ПрЗадание = Неопределено;
Для шаг = 0 по 1 Цикл
Для каждого тСтрокаЗаказа из ДеревоПроизводственныхЛистов.ПолучитьЭлементы() Цикл
Если НЕ ЗначениеЗаполнено( тСтрокаЗаказа.ЗаказНоменклатура ) Тогда
Продолжить;
КонецЕсли;
массНоменклатур.Очистить();
Для каждого тСтрокаНоменклатуры из тСтрокаЗаказа.ПолучитьЭлементы() Цикл
Если тСтрокаНоменклатуры.Произвести И
НЕ ЗначениеЗаполнено( тСтрокаНоменклатуры.ПроизводственноеЗадание )
И ЗначениеЗаполнено( тСтрокаНоменклатуры.ЗаказНоменклатура )
И ТипЗнч( тСтрокаНоменклатуры.ЗаказНоменклатура ) = Тип("СправочникСсылка.Номенклатура") Тогда
Если шаг = 0 И массНоменклатур.Найти( тСтрокаНоменклатуры.ЗаказНоменклатура ) = Неопределено Тогда
массНоменклатур.Добавить( тСтрокаНоменклатуры.ЗаказНоменклатура );
Если ПрЗадание = Неопределено Тогда
ПрЗадание = Документы.ПроизводственноеЗадание.СоздатьДокумент();
ПрЗадание.Дата = ТекущаяДата();
КонецЕсли;
НовСтр = ПрЗадание.ОсновнаяКомплектация.Добавить();
ЗаполнитьЗначенияСвойств( НовСтр, тСтрокаНоменклатуры );
НовСтр.Заказ = тСтрокаЗаказа.ЗаказНоменклатура;
НовСтр.Номенклатура = тСтрокаНоменклатуры.ЗаказНоменклатура;
НовСтр.ПроизводственныйЛист = тСтрокаЗаказа.ПроизводственныйЛистМодель;
НовСтр.Модель = тСтрокаНоменклатуры.ПроизводственныйЛистМодель;
ИначеЕсли шаг = 1 Тогда
тСтрокаНоменклатуры.ПроизводственноеЗадание = ссылкаПрЗадание;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Если НЕ ПрЗадание = Неопределено Тогда
ПрЗадание.Записать();
ссылкаПрЗадание = ПрЗадание.Ссылка;
КонецЕсли;
КонецЦикла;
ЗаполнитьЗначенияСвойств( НовСтр, тСтрокаНоменклатуры ) - грешу на это, точнее на "тСтрокаНоменклатуры"
тСтрокаНоменклатуры из тСтрокаЗаказа.ПолучитьЭлементы() - такое ощущение, что ПолучитьЭлементы группирует сразу.
Помогите разобраться с этой группировкой!
Сообщение отредактировал Vofka - 18.02.19, 10:36