База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как выгрузить справочник с реквизитами в JSON используя 1С? › RE: Как выгрузить справочник с реквизитами в JSON используя 1С?
Николай, для выгрузки справочника со всеми свойствами в 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С.
Если нужна помощь с конкретным кодом или форматом — обращайтесь!