База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как создать функцию для формирования JSON из табличной части 1С Управление торго
- В этой теме 1 ответ, 2 участника, последнее обновление 5 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
27 июля 2026 в 20:33 #38225
1с Конфигурация Управление торговлей 10.3 На основании табличной части Товары документа РеализацияТоваровУслуг создать функцию формирующую файл формата json следующего образца{
«OrderNum»:»S128-1-markType»,
«OrderDate»:»2024-06-16T15:08:56″,
«OrderState»:»open»,
«OrderType»:»sale»,
«OrderDesc»:»Адрес, дата\время, тел.»,
«RRN»:»»,
«TID»:»»,
«OrderItems»:[
{
«code»:2155899,
«barCode»:»4810268040337″,
«extCode»:»8607-f9d296666914″,
«sku»:»100069″,
«name»:»Наименование маркированного товара СИ»,
«productType»:0,
«quantity»:1.0,
«value»:20.00,
«discount»:0.00,
«markType»:1,
«tax»:{
«taxRate»:20.00
}
}
],
«prepaymentAmount»:10.00,
«prepPmtDetail»:[
{
«PrepDetailAmount»:10.00,
«PrepDetailMethod»:»Кредит/Рассрочка»
}
],
«currency»:»BYN»,
«totalAmount»:20.00
} -
27 июля 2026 в 20:33 #38226
Вот пример функции на 1С (Управление торговлей 10.3), которая формирует JSON в нужном формате на основании табличной части Товары документа РеализацияТоваровУслуг.
Функция использует стандартный объект ЗаписьJSON для формирования строки JSON.
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107Функция СформироватьJSONПоРеализации(ДокументРеализация)// Создаем объект для записи JSONЗапись = Новый ЗаписьJSON;Запись.ЗаписатьНачалоОбъекта();// Записываем основные поля заказаЗапись.ЗаписатьИмя("OrderNum");Запись.ЗаписатьЗначение(ДокументРеализация.Номер + "-markType");Запись.ЗаписатьИмя("OrderDate");// Форматируем дату в ISO 8601 с временемЗапись.ЗаписатьЗначение(Формат(ДокументРеализация.Дата, "ДФ=yyyy-MM-ddTHH:mm:ss"));Запись.ЗаписатьИмя("OrderState");Запись.ЗаписатьЗначение("open");Запись.ЗаписатьИмя("OrderType");Запись.ЗаписатьЗначение("sale");Запись.ЗаписатьИмя("OrderDesc");// Здесь можно подставить нужное описание, например, адрес и телефон из реквизитов документаЗапись.ЗаписатьЗначение("Адрес, дата\время, тел.");Запись.ЗаписатьИмя("RRN");Запись.ЗаписатьЗначение("");Запись.ЗаписатьИмя("TID");Запись.ЗаписатьЗначение("");// Записываем массив OrderItemsЗапись.ЗаписатьИмя("OrderItems");Запись.ЗаписатьНачалоМассива();Для Каждого СтрокаТовара Из ДокументРеализация.Товары ЦиклЗапись.ЗаписатьНачалоОбъекта();// Пример заполнения полей, подставьте свои реквизиты и логикуЗапись.ЗаписатьИмя("code");Запись.ЗаписатьЗначение(СтрокаТовара.Номенклатура.Код); // или другой уникальный кодЗапись.ЗаписатьИмя("barCode");Запись.ЗаписатьЗначение(СтрокаТовара.Номенклатура.Штрихкод); // если естьЗапись.ЗаписатьИмя("extCode");Запись.ЗаписатьЗначение(""); // если есть внешний код, иначе пустоЗапись.ЗаписатьИмя("sku");Запись.ЗаписатьЗначение(СтрокаТовара.Номенклатура.Код); // или другой идентификаторЗапись.ЗаписатьИмя("name");Запись.ЗаписатьЗначение(СтрокаТовара.Номенклатура.Наименование);Запись.ЗаписатьИмя("productType");Запись.ЗаписатьЗначение(0); // если есть тип, подставьтеЗапись.ЗаписатьИмя("quantity");Запись.ЗаписатьЗначение(СтрокаТовара.Количество);Запись.ЗаписатьИмя("value");Запись.ЗаписатьЗначение(СтрокаТовара.Сумма / СтрокаТовара.Количество); // цена за единицуЗапись.ЗаписатьИмя("discount");Запись.ЗаписатьЗначение(0.00); // если есть скидка, подставьтеЗапись.ЗаписатьИмя("markType");Запись.ЗаписатьЗначение(1); // если есть тип маркировки, подставьте// Вложенный объект taxЗапись.ЗаписатьИмя("tax");Запись.ЗаписатьНачалоОбъекта();Запись.ЗаписатьИмя("taxRate");Запись.ЗаписатьЗначение(СтрокаТовара.СтавкаНДС * 100); // например 0.2 -> 20.00Запись.ЗаписатьКонецОбъекта();Запись.ЗаписатьКонецОбъекта();КонецЦикла;Запись.ЗаписатьКонецМассива();// ПреплатаЗапись.ЗаписатьИмя("prepaymentAmount");// Пример: сумма предоплаты, можно брать из документа или параметровЗапись.ЗаписатьЗначение(10.00);// Массив prepPmtDetailЗапись.ЗаписатьИмя("prepPmtDetail");Запись.ЗаписатьНачалоМассива();Запись.ЗаписатьНачалоОбъекта();Запись.ЗаписатьИмя("PrepDetailAmount");Запись.ЗаписатьЗначение(10.00);Запись.ЗаписатьИмя("PrepDetailMethod");Запись.ЗаписатьЗначение("Кредит/Рассрочка");Запись.ЗаписатьКонецОбъекта();Запись.ЗаписатьКонецМассива();Запись.ЗаписатьИмя("currency");Запись.ЗаписатьЗначение("BYN"); // валютаЗапись.ЗаписатьИмя("totalAmount");Запись.ЗаписатьЗначение(ДокументРеализация.СуммаДокумента);Запись.ЗаписатьКонецОбъекта();Возврат Запись.Закрыть();КонецФункцииКак использовать:
1С (Код)12345Документ = Документы.РеализацияТоваровУслуг.НайтиПоНомеру("S128-1", ТекущаяДата());Если Документ <> Неопределено ТогдаJSONСтрока = СформироватьJSONПоРеализации(Документ);// Записать JSONСтрока в файл или использовать по назначениюКонецЕсли;—
Объяснение:
— В JSON формируется объект с нужными полями.
— Табличная часть Товары перебирается циклом, для каждой строки формируется объект с нужными полями.
— Для полей, которых нет в типовой конфигурации (например, extCode, markType), нужно подставить свои данные или оставить пустыми.
— Даты форматируются в ISO 8601.
— Суммы и цены берутся из реквизитов строки табличной части.
— Для записи JSON используется стандартный объект ЗаписьJSON, который корректно формирует структуру.Если нужно, могу помочь адаптировать под конкретные реквизиты вашей конфигурации.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.