База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как загрузить иерархический справочник из JSON в 1С:Предприятие?
- В этой теме 1 ответ, 2 участника, последнее обновление 2 месяца, 2 недели назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
16 декабря 2025 в 21:30 #35121
как правильно загрузить с помощью Json иерархический справочник
-
16 декабря 2025 в 21:30 #35122
Загрузка иерархического справочника из JSON в 1С:Предприятии требует правильной обработки структуры данных, так как справочник содержит элементы с вложенностью (родительские и дочерние элементы). Общий алгоритм следующий:
1. **Подготовка JSON**
JSON должен содержать массив объектов, где каждый объект — элемент справочника с полями:
— Уникальный идентификатор (например, Код или ВнешнийИд)
— Наименование
— Ссылка на родителя (например, РодительВнешнийИд или РодительКод) — для построения иерархии
— Другие реквизиты справочникаПример JSON:
JavaScript1234567891011121314151617[{"Код": "001","Наименование": "Корневая категория","РодительКод": null},{"Код": "001-01","Наименование": "Подкатегория 1","РодительКод": "001"},{"Код": "001-02","Наименование": "Подкатегория 2","РодительКод": "001"}]2. **Чтение JSON в 1С**
Используйте встроенные средства платформы:1С (Код)1ДанныеJSON = ПрочитатьJSON(СтрокаJSON);3. **Построение словаря для быстрого поиска элементов по коду**
Чтобы быстро находить ссылки на элементы справочника по внешнему идентификатору, создайте соответствие:1С (Код)1СоответствиеКодов = Новый Соответствие;4. **Обработка элементов и создание/обновление справочника**
Для корректной загрузки иерархии нужно:
— Сначала создать все корневые элементы (где РодительКод = null)
— Затем рекурсивно или циклом создавать дочерние элементы, подставляя ссылку на родителяПример кода:
1С (Код)123456789101112131415161718192021222324252627282930313233Процедура ЗагрузитьСправочникИзJSON(ДанныеJSON)СоответствиеКодов = Новый Соответствие;// Сначала создаем корневые элементыДля Каждого Элемент Из ДанныеJSON ЦиклЕсли ПустаяСтрока(Элемент.РодительКод) ТогдаСсылка = Справочники.ИерархическийСправочник.СоздатьЭлемент();Ссылка.Код = Элемент.Код;Ссылка.Наименование = Элемент.Наименование;// Заполнить другие реквизитыСсылка.Записать();СоответствиеКодов.Вставить(Элемент.Код, Ссылка);КонецЕсли;КонецЦикла;// Затем создаем дочерние элементыДля Каждого Элемент Из ДанныеJSON ЦиклЕсли НЕ ПустаяСтрока(Элемент.РодительКод) ТогдаЕсли СоответствиеКодов.Содержит(Элемент.РодительКод) ТогдаРодитель = СоответствиеКодов.Получить(Элемент.РодительКод);Ссылка = Справочники.ИерархическийСправочник.СоздатьЭлемент();Ссылка.Код = Элемент.Код;Ссылка.Наименование = Элемент.Наименование;Ссылка.Родитель = Родитель;// Заполнить другие реквизитыСсылка.Записать();СоответствиеКодов.Вставить(Элемент.Код, Ссылка);Иначе// Обработка ошибки: родитель не найденКонецЕсли;КонецЕсли;КонецЦикла;КонецПроцедуры5. **Особенности**
— Если иерархия глубже двух уровней, можно реализовать рекурсивную функцию, которая будет создавать элементы по уровням.
— Для обновления существующих элементов сначала ищите их по коду или внешнему идентификатору, а не создавайте заново.
— Для больших объемов данных рекомендуется использовать пакетную обработку и транзакции.6. **Пример вызова**
1С (Код)123СтрокаJSON = ПолучитьСтрокуJSONИзФайлаИлиВеба();ДанныеJSON = ПрочитатьJSON(СтрокаJSON);ЗагрузитьСправочникИзJSON(ДанныеJSON);—
### Рекомендую посмотреть здесь:
https://infostart.ru/public/667123/ — пример загрузки иерархического справочника из JSON с разбором кода и нюансами.
https://wonderland.v8.1c.ru/blog/sredstva-raboty-s-json/ — работа с JSON в 1С, включая чтение и запись.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.