База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как выгрузить справочник с реквизитами в JSON используя 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 3 недели, 5 дней назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
5 декабря 2025 в 12:45 #34487
выгрузка справочника со всеми свойствами в json
-
5 декабря 2025 в 12:45 #34488
Николай, для выгрузки справочника со всеми свойствами в JSON в 1С:Предприятии можно использовать встроенные механизмы сериализации XDTO с записью в JSON. Вот пример процедуры, которая выгружает все элементы справочника с их реквизитами в JSON-файл:
&НаСервереБезКонтекста Процедура ВыгрузитьСправочникВJSON(ИмяСправочника, ИмяФайла) // Получаем справочник по имени Справочник = Справочники[ИмяСправочника]; // Создаем объект записи JSON Запись = Новый ЗаписьJSON; ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, Символы.Таб); Запись.ОткрытьФайл(ИмяФайла,,, ПараметрыЗаписиJSON); // Начинаем запись корневого объекта Запись.ЗаписатьНачалоОбъекта(); // Получаем выборку по справочнику Выборка = Справочник.Выбрать(); Пока Выборка.Следующий() Цикл // Получаем объект элемента справочника Объект = Выборка.ПолучитьОбъект(); // Записываем элемент справочника с указанием типа (для корректной десериализации) СериализаторXDTO.ЗаписатьJSON(Запись, Объект, НазначениеТипаXML.Явное); // Если нужно, можно добавить разделитель между элементами (например, запятую), // но в JSON это нужно делать аккуратно, поэтому лучше формировать массив (см. ниже) КонецЦикла; // Завершаем корневой объект Запись.ЗаписатьКонецОбъекта(); // Закрываем файл Запись.Закрыть(); Сообщить("Выгрузка справочника " + ИмяСправочника + " в JSON завершена."); КонецПроцедурыОднако такой подход создаст JSON с набором объектов без массива, что не всегда удобно. Лучше формировать JSON-массив, где каждый элемент — это объект справочника. Вот пример с формированием массива:
&НаСервереБезКонтекста Процедура ВыгрузитьСправочникВJSON_Массив(ИмяСправочника, ИмяФайла) Справочник = Справочники[ИмяСправочника]; Запись = Новый ЗаписьJSON; ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, Символы.Таб); Запись.ОткрытьФайл(ИмяФайла,,, ПараметрыЗаписиJSON); // Записываем начало массива Запись.ЗаписатьНачалоМассива(); Выборка = Справочник.Выбрать(); Пока Выборка.Следующий() Цикл Объект = Выборка.ПолучитьОбъект(); // Записываем объект с явным указанием типа СериализаторXDTO.ЗаписатьJSON(Запись, Объект, НазначениеТипаXML.Явное); КонецЦикла; // Записываем конец массива Запись.ЗаписатьКонецМассива(); Запись.Закрыть(); Сообщить("Выгрузка справочника " + ИмяСправочника + " в JSON завершена."); КонецПроцедурыВ результате вы получите JSON-массив, где каждый элемент — это полный объект справочника со всеми реквизитами и типами.
Если нужно выгрузить конкретный справочник, например «Сотрудники», вызов будет таким:
ВыгрузитьСправочникВJSON_Массив("Сотрудники", "C:tempSotrudniki.json");—
Если требуется более компактный JSON без служебных данных типа `#type`, можно сериализовать объекты вручную, формируя структуру и записывая ее через `ЗаписатьJSON` или используя `Объект.Выгрузить()` с последующей конвертацией.
—
Рекомендую посмотреть здесь: https://infostart.ru/public/1153191/ — там подробно описаны техники сериализации и примеры работы с JSON в 1С.
Если нужна помощь с конкретным кодом или форматом — обращайтесь!
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.