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

Как программно сделать иерархию групп и элементов

Автор MKozzlik, 10 окт 2011, 10:04

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

MKozzlik

У меня есть справочник номенклатура, у него имеется иерархия. Как мне при выгрузке этого справочника сохранить иерархию групп и элементов? т.е. как поместить группу в нужную группу и элемент в нужную группу..что надо написать, помогите пожалуйста

progmikon

А вы хотите сохранить информацию по иерархии? Для дальнейшей загрузки? Или хотите видеть дерево элементов в экселе (с плюсиками или минусиками)?

MKozzlik

Да надо сохранить информацию об иерархии для дальнейшей загрузки, и поместить каждый элемент в нужную группу и каждую группу в соответствующую группу..

progmikon

Понятно. Используйте некий ключ уникальности, например
Выгружаете в первой колонке КОД НОМЕНКЛАТУРЫ, во второй НАЗВАНИЕ НОМЕНКЛАТУРЫ, в третьей КОД РОДИТЕЛЯ(!!) НОМЕНКЛАТУРЫ.

MKozzlik

Спасибо, а как сам элемент поместить в нужную группу?
Строка:
"НовыйЭлемент.Родитель = Стр.Родитель" где Стр это строка результата из запроса, не работает

progmikon

Цитата: MKozzlik от 10 окт 2011, 10:22
Спасибо, а как сам элемент поместить в нужную группу?
Строка:
"НовыйЭлемент.Родитель = Стр.Родитель" где Стр это строка результата из запроса, не работает
Какой тип у "Родитель"? Ссылка?

MKozzlik

Пока у меня такой код, выгружает все, без иерархии:

Запрос.Текст =  "ВЫБРАТЬ
               |   Номенклатура.Код,
               |   Номенклатура.Наименование,
               |   Номенклатура.Ссылка,
               |   Номенклатура.Родитель,
               |   Номенклатура.ЭтоГруппа
               |ИЗ
               |   Справочник.Номенклатура КАК Номенклатура
               |ГДЕ
               |   (НЕ Номенклатура.ПометкаУдаления)";
            
Результат = Запрос.Выполнить().Выгрузить();
Для каждого Стр Из Результат Цикл
   Если Стр.ЭтоГруппа Тогда
      НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу();
      НоваяГруппа.Родитель = Стр.Родитель;
      НоваяГруппа.Код = Стр.Код;
      НоваяГруппа.Наименование = Стр.Наименование;
      НоваяГруппа.Записать();
   Иначе
      НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
      НовыйЭлемент.Код = Стр.Код;
      НовыйЭлемент.Наименование = Стр.Наименование;
      НовыйЭлемент.Записать();
    КонецЕсли;
КонецЦикла;


MKozzlik


MKozzlik

Цитата: MKozzlik от 10 окт 2011, 10:32
Нет, вроде не ссылка
Хотя нет, ссылка..что-то я не очень понимаю пока, надо объект получить чтобы родителя записать да? а как это сделать?

progmikon

А что-то я не понял код...Вы выгружаете в этот же справочник что-ли? Дублируете номенклатуру?

Теги:

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

Рейтинг@Mail.ru

Поиск