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