База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как выгрузить объект 1С со всеми реквизитами в JSON?
- В этой теме 1 ответ, 2 участника, последнее обновление 1 день, 4 часа назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
26 января 2026 в 15:45 #35579
выгрузить объект со всеми реквизитами в json
-
26 января 2026 в 15:45 #35580
Николай, чтобы выгрузить объект 1С со всеми реквизитами в JSON, нужно пройтись по всем реквизитам объекта и сформировать структуру, которую потом сериализовать в JSON. Вот пример кода на 1С, который выгружает объект (например, элемент справочника или документ) в JSON с использованием стандартных средств платформы 1С:
Функция ВыгрузитьОбъектВJSON(ОбъектСсылка) Экспорт // Получаем объект по ссылке Объект = ОбъектСсылка.ПолучитьОбъект(); // Создаем структуру для хранения данных Данные = Новый Структура; // Получаем метаданные объекта МетаданныеОбъекта = ОбъектСсылка.Метаданные(); // Перебираем реквизиты объекта Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл ИмяРеквизита = Реквизит.Имя; ЗначениеРеквизита = Объект[ИмяРеквизита]; // Если реквизит - это ссылка на другой объект, можно выгрузить его код или строковое представление Если ТипЗнч(ЗначениеРеквизита) = Тип("СправочникСсылка") Или ТипЗнч(ЗначениеРеквизита) = Тип("ДокументСсылка") Тогда Если ЗначениеРеквизита = Неопределено Тогда Данные.Вставить(ИмяРеквизита, Неопределено); Иначе // Можно выгрузить ссылку в виде строки Данные.Вставить(ИмяРеквизита, ЗначениеРеквизита.Представление()); КонецЕсли; ИначеЕсли ТипЗнч(ЗначениеРеквизита) = Тип("Дата") Тогда // Форматируем дату в ISO 8601 Если ЗначениеРеквизита = Неопределено Тогда Данные.Вставить(ИмяРеквизита, Неопределено); Иначе Данные.Вставить(ИмяРеквизита, Формат(ЗначениеРеквизита, "ДФ=yyyy-MM-ddTHH:mm:ss")); КонецЕсли; Иначе // Для остальных типов просто вставляем значение Данные.Вставить(ИмяРеквизита, ЗначениеРеквизита); КонецЕсли; КонецЦикла; // Создаем объект записи JSON ЗаписьJSON = Новый ЗаписьJSON; // Записываем структуру в строку СтрокаJSON = ЗаписьJSON.ЗаписатьСтрокуJSON(Данные); Возврат СтрокаJSON; КонецФункцииПример использования:
СсылкаНаОбъект = Справочники.Номенклатура.НайтиПоКоду("0000001"); Если СсылкаНаОбъект <> Неопределено Тогда JSONСтрока = ВыгрузитьОбъектВJSON(СсылкаНаОбъект); Сообщить(JSONСтрока); КонецЕсли;Объяснение:
— Получаем объект по ссылке.
— Перебираем все реквизиты метаданных объекта.
— Для каждого реквизита получаем значение.
— Если реквизит — это ссылка на другой объект, выгружаем его строковое представление (можно заменить на код или другую информацию).
— Для дат форматируем в ISO 8601.
— Для остальных типов просто вставляем значение.
— Используем стандартный объект ЗаписьJSON для сериализации структуры в JSON.Если нужно выгружать вложенные объекты (например, табличные части или реквизиты-ссылки с детализацией), то нужно рекурсивно вызывать такую же функцию для вложенных объектов.
Если у вас 1С версии 8.3.10 и выше, то можно использовать встроенный метод `Объект.ЗаписатьJSON()`, но он не всегда удобен для кастомизации.
Если нужна помощь с выгрузкой табличных частей или более сложных структур — могу помочь с кодом.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.