Чтение иерархии номенклатуры из табличного документа

03.08.22

Разработка - Инструментарий разработчика

Вариация на тему Чтение группировок табличного документа. Чтение mxl документа как XDTO объекта и формирование иерархи справочника в СКД. На примере справочника номенклатуры.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Чтение иерархии номенклатуры из табличного документа:
.zip 536,07Kb
5 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Дано: табличный документ со сформированной иерархией справочника Номенклатура.

Задача: загрузить табличный документ в справочник с соблюдением иерархии.

Был вдохновлен для написания этой статьи разработкой Чтение группировок табличного документа. Немного изменил чтение табличного документа.

Вся процедура чтения и формирования иерархии поместилась вот в эти строки:

//Создать объект XDTO из табличного документа
ЗаписанныйОбъект = СериализаторXDTO.ЗаписатьXDTO(Результат);
ОписаниеЧисла = Новый ОписаниеТипов("Число");
ОписаниеСтроки = Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(300,ДопустимаяДлина.Переменная));

тзИерархия = Новый ТаблицаЗначений;
тзИерархия.Колонки.Добавить("Родитель",ОписаниеЧисла);
тзИерархия.Колонки.Добавить("НачалоГруппы",ОписаниеЧисла);
тзИерархия.Колонки.Добавить("КонецГруппы",ОписаниеЧисла);

тзСправочник = Новый ТаблицаЗначений;
тзСправочник.Колонки.Добавить("Код",ОписаниеЧисла);
тзСправочник.Колонки.Добавить("Наименование",ОписаниеСтроки);


//Прочитать группы из табличного документа
ГруппыСправочника = ЗаписанныйОбъект.vg;
Для каждого ГруппаСправочника Из ГруппыСправочника Цикл
	стрИерархия = тзИерархия.Добавить();
	стрИерархия.Родитель = ГруппаСправочника.b - 1;
	стрИерархия.НачалоГруппы = ГруппаСправочника.b;
	стрИерархия.КонецГруппы = ?(Не ЗначениеЗаполнено(ГруппаСправочника.e),стрИерархия.НачалоГруппы,ГруппаСправочника.e);
КонецЦикла; 

//Прочитать все данные справочника из табличного документа
ЭлементыСправочника = ЗаписанныйОбъект.rowsItem;
Для каждого ЭлементСправочника Из ЭлементыСправочника Цикл
	стрСправочник = тзСправочник.Добавить();
	стрСправочник.Код = ЭлементСправочника.index;
	стрСправочник.Наименование = ЭлементСправочника.row.c[0].c.tl.item[0].content;
КонецЦикла; 

//Передать таблицу иерархии и данных справочника в СКД, где сформировать дерево, готовое для записи в справочник
//дерево выводится в табличный документ лишь для проверки правильности формирования иерархии
//полученное дерево можно записать в справочник
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
СКД = ОбработкаОбъект.ПолучитьМакет("ФормированиеИерархии");
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(ПоместитьВоВременноеХранилище(СКД)));
КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ТаблицаИерархии",тзИерархия);
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ТаблицаСправочника",тзСправочник);
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
//Если при компоновке макета тип генератора задать Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"), то результат можно вывести в объект ДеревоЗначений
Макет = КомпоновщикМакета.Выполнить(СКД,Настройки,,,Тип("ГенераторМакетаКомпоновкиДанных"),,);
ПроцессорКомноновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомноновки.Инициализировать(Макет,,,,,);
//для вывода результата компоновки в ДеревоЗначений, процессор вывода нужно создавать
//ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
//также необходимо создать 
//ОбъектДерево = новый ДеревоЗначений;
//установить объект дерево для процессора вывода
//ПроцессорВывода.УстановитьОбъект(ОбъектДерево);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
Результат.Очистить();
ПроцессорВывода.Вывести(ПроцессорКомноновки,);

 

Разработка на платформе 1С:Предприятие 8.3 (8.3.17.1549).

Вступайте в нашу телеграмм-группу Инфостарт

ТабличныйДокумент иерархия XDTO СКД

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    267285    1488    421    

1177

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.

24900 руб.

20.08.2024    74575    377    170    

322

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    39967    112    54    

126

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    62963    130    36    

136

Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Программист Бизнес-аналитик Руководитель проекта 1С 8.3 Платные (руб)

Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено». Новое в 2.0 — обновление поставки: сравнение и объединение версий деревом «как в Конфигураторе» с выгрузкой плана решений; поиск конфликтов из-за перехватов расширений и висячих ссылок; загрузка из бинарных .cf/.cfe; циклические зависимости. Плюс анализ влияния, запросы BSL, роли и RLS, граф вызовов. Минута на развёртывание через Docker без необходимости подключения к Интернет. Любая 1С:Предприятие 8.3+.

14000 руб.

17.04.2026    8484    36    46    

51

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

17000 руб.

10.11.2023    26305    98    46    

104

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5.

6000 руб.

25.02.2026    4722    16    1    

20

Информационная безопасность Инструменты администратора БД Инструментарий разработчика Учет документов Системный администратор Программист Бизнес-аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С 8.5 Розничная и сетевая торговля (FMCG) Платные (руб)

Контроль ввода данных в 1С: проверка заполнения реквизитов, обязательные поля, контроль перед записью и проведением, запрет проведения документа. Позволяет настраивать любые проверки данных в 1С 8.3/8.5 от обязательных полей до сложных условий – без открытия конфигуратора и написания кода. Готовое расширение, которое подключается и работает сразу.

6000 руб.

15.04.2026    2514    6    0    

21
Для отправки сообщения требуется регистрация/авторизация