0. starik-2005 1921 25.02.16 23:15 Сейчас в теме

Пример рекурсивной выгрузки иерархической структуры в XDTO

Решил реализовать иерархию в пакете XDTO и выгрузить ее рекурсивно. Задача оказалась нетривиальной, хотя и весьма простой. Изысканиями решил поделиться с народом, чтобы не пропадало народное добро.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. hulio 52 28.02.16 11:55 Сейчас в теме
Не понял, для чего вы создали тип УникальныйИдентификатор? Все равно вы айдишники в строку преобразуете.
Еще у вас на выходе неправильная XML-ка получилась - подразделения нижних уровней присутствуют и на верхнем уровне тоже. Например, подразделение "Склады" и содержит вложенные подразделения "Центральный склад", "Склад мебели" и т.д., а далее эти же подразделения идут сами по себе, без указания вложенности:
<Подразделение>
<Ид>6f87e81e-722c-11df-b336-0011955cba6b</Ид>
<Наименование>Склады</Наименование>
<Подразделения>
<Подразделение>
<Ид>1418c674-7307-11df-b338-0011955cba6b</Ид>
<Наименование>Склад мебели</Наименование>
</Подразделение>
<Подразделение>
<Ид>1418c675-7307-11df-b338-0011955cba6b</Ид>
<Наименование>Торговый зал</Наименование>

</Подразделение>
<Подразделение>
<Ид>1418c673-7307-11df-b338-0011955cba6b</Ид>
<Наименование>Центральный склад</Наименование>
</Подразделение>
</Подразделения>
</Подразделение>
<Подразделение>
<Ид>49278eed-7ef4-11df-866e-00d0d0817f92</Ид>
<Наименование>Торговые представители</Наименование>
</Подразделение>
<Подразделение>
<Ид>1418c675-7307-11df-b338-0011955cba6b</Ид>
<Наименование>Торговый зал</Наименование>

</Подразделение>

В таком случае было бы проще не упаковывать вложенные подразделения в отдельный контейнер, а добавить свойство "ИДРодителя"
2. starik-2005 1921 28.02.16 23:16 Сейчас в теме
(1) hulio, замечательно, что Вы заметили.
1. По вопросу у УИН, то это как пример того, как можно определять типы данных в XDTO-пакете.
2. По поводу файла, то действительно вывелось все и сразу. Причиной тому - передача "Неопределено" в функцию, в которой выбирается текущий уровень через выборку справочника. Это легко исправляется.
3. По поводу ИД родителя, то это не удовлетворяет условию разбираемой тут задачи, а именно - выгрузка иерархического справочника с помощью рекурсии.

Надеюсь, я смог ответить на все Ваши вопросы.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Бизнес-аналитик 1С
Москва
зарплата от 140 000 руб. до 200 000 руб.
Полный день

Консультант 1С (Бухгалтерия)
Санкт-Петербург
зарплата от 100 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 150 000 руб.
Полный день

Программист 1С
Тюмень
зарплата от 70 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб. до 150 000 руб.
Полный день