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