Документы и Справочники в JSON


Пример выгрузки всех данных Документа или Справочника в JSON

Весь код представлен здесь, скачивать обработки нет необходимости.

Для обычных форм:

&НаСервере
функция ПолучитьСтруктуру(знач Объект)
Структура = Новый Структура(); /// реквизиты
Для каждого Реквизит из Объект.Метаданные().СтандартныеРеквизиты Цикл
Если ТипЗнч(Объект[Реквизит.Имя]) = тип("Число") ИЛИ ТипЗнч(Объект[Реквизит.Имя]) = тип("Дата") ИЛИ ТипЗнч(Объект[Реквизит.Имя]) = тип("Булево") тогда
Структура.Вставить(Реквизит.Имя, Объект[Реквизит.Имя]);
иначе
Структура.Вставить(Реквизит.Имя, Строка(Объект[Реквизит.Имя]));
КонецЕсли;
КонецЦикла;

Для каждого Реквизит из Объект.Метаданные().Реквизиты Цикл
Если ТипЗнч(Объект[Реквизит.Имя]) = тип("Число") ИЛИ ТипЗнч(Объект[Реквизит.Имя]) = тип("Дата") ИЛИ ТипЗнч(Объект[Реквизит.Имя]) = тип("Булево") тогда
Структура.Вставить(Реквизит.Имя, Объект[Реквизит.Имя]);
иначе
Структура.Вставить(Реквизит.Имя, Строка(Объект[Реквизит.Имя]));
КонецЕсли;
Если  ТипЗнч(Объект[Реквизит.Имя]) = тип("СправочникСсылка.Организации") ИЛИ ТипЗнч(Объект[Реквизит.Имя])  = тип("СправочникСсылка.Контрагенты") тогда
Структура.Вставить(Реквизит.Имя+"ИНН", Объект[Реквизит.Имя].ИНН);
Структура.Вставить(Реквизит.Имя+"КПП", Объект[Реквизит.Имя].КПП);
КонецЕсли;
//т.к. код или номер объекта для индефикации
Если НЕ Объект[Реквизит.Имя] = Неопределено и Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект[Реквизит.Имя])) тогда
Структура.Вставить(Реквизит.Имя+"Код", Объект[Реквизит.Имя].Код);
ИначеЕсли НЕ Объект[Реквизит.Имя] = Неопределено и Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект[Реквизит.Имя])) тогда
Структура.Вставить(Реквизит.Имя+"Номер", Объект[Реквизит.Имя].Номер);
КонецЕсли;
КонецЦикла;

Для каждого ТабличнаяЧасть из Объект.Метаданные().ТабличныеЧасти Цикл
//вариант1 Теут //infostart.ru/profile/502386/ +
ТаблизазНач = Объект[ТабличнаяЧасть.Имя].Выгрузить();
Для Каждого Колонка Из ТаблизазНач.Колонки цикл
Массив =  ТаблизазНач.ВыгрузитьКолонку(Колонка.Имя);
МассивВстроку = Новый Массив;
МассивКодНомер = Новый Массив;
МассивАртикул = Новый Массив;
МассивИНН = Новый Массив;
МассивКПП = Новый Массив;

Для Каждого Стр из Массив цикл
Если ТипЗнч(Стр) = тип("Число") ИЛИ ТипЗнч(Стр) = тип("Дата")  ИЛИ ТипЗнч(Стр) = тип("Булево") тогда
МассивВстроку.Добавить( Стр);
иначе
МассивВстроку.Добавить( Строка(Стр));
КонецЕсли;
Если  ТипЗнч(Стр) = тип("СправочникСсылка.Номенклатура") тогда
МассивАртикул.Добавить(Стр.Артикул);
КонецЕсли;
Если  ТипЗнч(Стр) = тип("СправочникСсылка.Организации") ИЛИ ТипЗнч(Стр) = тип("СправочникСсылка.Контрагенты") тогда
МассивИНН.Добавить(Стр.ИНН);
МассивКПП.Добавить(Стр.КПП);
КонецЕсли;
//т.к. код или номер объекта для индефикации
Если НЕ Стр = Неопределено и Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Стр)) тогда
МассивКодНомер.Добавить(Стр.Код);
ИначеЕсли НЕ Стр = Неопределено и Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Стр)) тогда
МассивКодНомер.Добавить(Стр.Номер);
КонецЕсли;
КонецЦикла;
Структура.Вставить(ТабличнаяЧасть.Имя+Колонка.Имя, МассивВстроку);
//проверяем и добавляем дополнительные колонки
Если МассивАртикул.Количество() > 0 тогда
Структура.Вставить(ТабличнаяЧасть.Имя+Колонка.Имя + "Артикул", МассивАртикул);
КонецЕсли;
Если МассивКодНомер.Количество() > 0 тогда
Структура.Вставить(ТабличнаяЧасть.Имя+Колонка.Имя + "КодНомер", МассивКодНомер);
КонецЕсли;
Если МассивКПП.Количество() > 0 тогда
Структура.Вставить(ТабличнаяЧасть.Имя+Колонка.Имя + "КПП", МассивКодНомер);
КонецЕсли;
Если МассивИНН.Количество() > 0 тогда
Структура.Вставить(ТабличнаяЧасть.Имя+Колонка.Имя + "ИНН", МассивКодНомер);
КонецЕсли;

КонецЦикла;
//вариант1 -

////вариант2 Будаев  //infostart.ru/profile/798953/  +
//ТаблицаЗнач = Объект[ТабличнаяЧасть.Имя].Выгрузить();
//МассивТабЧасти = Новый Массив;
//Для Каждого СтрТЗ Из ТаблицаЗнач Цикл
//    СтруктураСтр = Новый Структура;
//    Для Каждого Колонка Из ТаблицаЗнач.Колонки Цикл
//        Если ТипЗнч(СтрТЗ[Колонка.Имя]) = тип("Число") ИЛИ ТипЗнч(СтрТЗ[Колонка.Имя]) = тип("Дата") ИЛИ ТипЗнч(СтрТЗ[Колонка.Имя]) = тип("Булево") тогда
//            СтруктураСтр.Вставить(Колонка.Имя, СтрТЗ[Колонка.Имя]);
//        Иначе
//            СтруктураСтр.Вставить(Колонка.Имя, Строка(СтрТЗ[Колонка.Имя]));
//        КонецЕсли;
//
//        Если НЕ СтрТЗ[Колонка.Имя] = Неопределено и Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(СтрТЗ[Колонка.Имя])) тогда
//            СтруктураСтр.Вставить(Колонка.Имя+"Код", СтрТЗ[Колонка.Имя].Код);
//        ИначеЕсли НЕ СтрТЗ[Колонка.Имя] = Неопределено и Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(СтрТЗ[Колонка.Имя])) тогда
//            СтруктураСтр.Вставить(Колонка.Имя+"Номер", СтрТЗ[Колонка.Имя].Номер);
//        КонецЕсли;
//    КонецЦикла;
//    МассивТабЧасти.Добавить(СтруктураСтр);
//КонецЦикла;
//Структура.Вставить(ТабличнаяЧасть.Имя, МассивТабЧасти);
//// вариант2 -
КонецЦикла;
Структура.Вставить("ВыполнилВыгрузку", Пользователи.ТекущийПользователь().Наименование);
Возврат Структура;

КонецФункции

Для управляемых форм

&НаКлиенте
Процедура ВыгрузитьВ_JSON(Команда)
Если Объект.СсылкаНаОбъект = Неопределено ИЛИ Объект.Каталог = "" тогда
Сообщить("Объект или каталог не выбран.");
Возврат;
КонецЕсли;
// ПримерКаталога = "C:Folder";
ТипСсылки = ЭтоСправочникИлиДокумент();
Если ТипСсылки = Неопределено тогда
Сообщить("Для данного типа выгрузка не предусмотрена. Только справочники или документы");
Возврат;
КонецЕсли;
Каталог = Объект.Каталог;
ИмяФайлаОтправки = Каталог + "" + ТипСсылки+".json";
ВыполнитьСериализацию(ИмяФайлаОтправки);
Сообщить( ИмяФайлаОтправки);
КонецПроцедуры

Процедура ВыполнитьСериализацию(ИмяФайлаОтправки)
ЗаписиJSON = Новый ЗаписьJSON;
ЗаписиJSON.ОткрытьФайл(ИмяФайлаОтправки,,, Новый ПараметрыЗаписиJSON(, Символы.Таб));
НастройкиСериал = Новый НастройкиСериализацииJSON;
НастройкиСериал.ВариантЗаписиДаты  = ВариантЗаписиДатыJSON.ЛокальнаяДата;
НастройкиСериал.ФорматСериализацииДаты  = ФорматДатыJSON.ISO;
//СтруктураДокумента = ПолучитьСтруктуру(Объект.СсылкаНаОбъект);
//ЗаписатьJSON(ЗаписиJSON, СтруктураДокумента, НастройкиСериал);
Значение = Объект.СсылкаНаОбъект.ПолучитьОбъект();
СериализаторXDTO.ЗаписатьJSON(ЗаписиJSON, Значение, НазначениеТипаXML.Явное);
ЗаписиJSON.Закрыть();
КонецПроцедуры

Тестировалось на Управление производственным предприятием, редакция 1.3 (1.3.122.2) и 1С:Комплексная автоматизация 2 (2.4.7.141), платформа 8.3.13.1513

Пример результата

{
"#type": "jcfg:DocumentObject.ЗаказКлиента",
"#value": {
"Ref": "0227135d-296e-11e5-92f1-0050568b35ac",
"DeletionMark": false,
"Date": "2024-07-13T18:46:57",
"Number": "ТД00-000028",
"Posted": true,
"Партнер": "2f5f7e5c-f873-11df-aecd-0015e9b8c48d",
"Контрагент": "2f5f7e5d-f873-11df-aecd-0015e9b8c48d",
"Организация": "51ed67a3-7220-11df-b336-0011955cba6b",
"Соглашение": "b49127d4-752b-11df-b338-0011955cba6b",
"Сделка": "00000000-0000-0000-0000-000000000000",
"Валюта": "26093579-c180-11e4-a7a9-000d884fd00d",
"СуммаДокумента": 27000,
"ГрафикОплаты": "f0e40f8c-7390-11df-b338-0011955cba6b",
"ЖелаемаяДатаОтгрузки": "0001-01-01T00:00:00",
"Склад": "6f87e83f-722c-11df-b336-0011955cba6b",
"ЦенаВключаетНДС": true,
"Менеджер": "a4212b3d-730a-11df-b338-0011955cba6b",
"ДополнительнаяИнформация": "",
"ДокументОснование": null,
"НеОтгружатьЧастями": true,
"Статус": "КОбеспечению",
"МаксимальныйКодСтроки": 6,
"ДатаСогласования": "2024-06-21T00:00:00",
"Согласован": true,
"ФормаОплаты": "ПлатежнаяКарта",
"БанковскийСчет": "51ed67dd-7220-11df-b336-0011955cba6b",
"БанковскийСчетКонтрагента": "50d41479-e4f3-11e0-af8f-0015e9b8c48d",
"Касса": "00000000-0000-0000-0000-000000000000",
"СуммаАвансаДоОбеспечения": 0,
"СуммаПредоплатыДоОтгрузки": 0,
"ДатаОтгрузки": "2024-07-16T00:00:00",
"АдресДоставки": "Москва Нагорная улица 34",
"НалогообложениеНДС": "ПродажаОблагаетсяНДС",
"СкидкиРассчитаны": true,
"ХозяйственнаяОперация": "РеализацияКлиенту",
"Комментарий": "",
"НомерПоДаннымКлиента": "",
"ДатаПоДаннымКлиента": "0001-01-01T00:00:00",
"Грузоотправитель": "00000000-0000-0000-0000-000000000000",
"Грузополучатель": "00000000-0000-0000-0000-000000000000",
"БанковскийСчетГрузоотправителя": "00000000-0000-0000-0000-000000000000",
"БанковскийСчетГрузополучателя": "00000000-0000-0000-0000-000000000000",
"ГруппаФинансовогоУчета": "00000000-0000-0000-0000-000000000000",
"КартаЛояльности": "00000000-0000-0000-0000-000000000000",
"Договор": "00000000-0000-0000-0000-000000000000",
"Подразделение": "51ed67e1-7220-11df-b336-0011955cba6b",
"Автор": {
"#type": "jcfg:CatalogRef.Пользователи",
"#value": "a4212b3d-730a-11df-b338-0011955cba6b"
},
"ПорядокРасчетов": "ПоЗаказамНакладным",
"Назначение": "0227135c-296e-11e5-92f1-0050568b35ac",
"СпособДоставки": "Самовывоз",
"ПеревозчикПартнер": "00000000-0000-0000-0000-000000000000",
"ЗонаДоставки": "00000000-0000-0000-0000-000000000000",
"ВремяДоставкиС": "0001-01-01T00:00:00",
"ВремяДоставкиПо": "0001-01-01T00:00:00",
"АдресДоставкиПеревозчика": "",
"АдресДоставкиЗначенияПолей": "<КонтактнаяИнформация xmlns="http://www.v8.1c.ru/ssl/contactinfo" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Представление="Москва Нагорная улица 34"><Комментарий/><Состав xsi:type="Адрес"><Состав xsi:type="АдресРФ"/></Состав></КонтактнаяИнформация>",
"АдресДоставкиПеревозчикаЗначенияПолей": "",
"ДополнительнаяИнформацияПоДоставке": "",
"КонтактноеЛицо": "2f5f7e5e-f873-11df-aecd-0015e9b8c48d",
"Руководитель": "bb251f0d-6b94-11e2-bfed-0015e9b8c48d",
"ГлавныйБухгалтер": "bb251f10-6b94-11e2-bfed-0015e9b8c48d",
"ВернутьМногооборотнуюТару": false,
"СрокВозвратаМногооборотнойТары": 0,
"СостояниеЗаполненияМногооборотнойТары": "",
"СуммаВозвратнойТары": 0,
"НазначениеПлатежа": "",
"ТребуетсяЗалогЗаТару": false,
"Приоритет": "260937c5-c180-11e4-a7a9-000d884fd00d",
"ИдентификаторПлатежа": "ЗК1707ТД000000280004",
"ОсобыеУсловияПеревозки": false,
"ОсобыеУсловияПеревозкиОписание": "",
"НаправлениеДеятельности": "00000000-0000-0000-0000-000000000000",
"ПорядокОплаты": "РасчетыВРубляхОплатаВРублях",
"Товары": [
{
"ДатаОтгрузки": "2024-07-16T00:00:00",
"Номенклатура": "bd72d927-55bc-11d9-848a-00112f43529a",
"Характеристика": "00000000-0000-0000-0000-000000000000",
"Упаковка": "f0658892-7924-11df-b33a-0011955cba6b",
"КоличествоУпаковок": 3,
"Количество": 3,
"ВидЦены": "73867e74-73c8-11df-b338-0011955cba6b",
"Цена": 6750,
"Сумма": 20250,
"СтавкаНДС": "НДС18",
"СуммаНДС": 3088.98,
"СуммаСНДС": 20250,
"ПроцентРучнойСкидки": 0,
"СуммаРучнойСкидки": 0,
"ПроцентАвтоматическойСкидки": 0,
"СуммаАвтоматическойСкидки": 0,
"ПричинаОтмены": "00000000-0000-0000-0000-000000000000",
"КодСтроки": 1,
"Отменено": false,
"КлючСвязи": 1,
"Склад": "6f87e83f-722c-11df-b336-0011955cba6b",
"СрокПоставки": 0,
"Содержание": "",
"СтатусУказанияСерий": 0,
"ВариантОбеспечения": "Обособленно",
"Серия": "00000000-0000-0000-0000-000000000000",
"НоменклатураНабора": "00000000-0000-0000-0000-000000000000",
"ХарактеристикаНабора": "00000000-0000-0000-0000-000000000000"
},
{
"ДатаОтгрузки": "2024-07-16T00:00:00",
"Номенклатура": "e8a71fee-55bc-11d9-848a-00112f43529a",
"Характеристика": "00000000-0000-0000-0000-000000000000",
"Упаковка": "f0658899-7924-11df-b33a-0011955cba6b",
"КоличествоУпаковок": 1,
"Количество": 1,
"ВидЦены": "73867e74-73c8-11df-b338-0011955cba6b",
"Цена": 6750,
"Сумма": 6750,
"СтавкаНДС": "НДС18",
"СуммаНДС": 1029.66,
"СуммаСНДС": 6750,
"ПроцентРучнойСкидки": 0,
"СуммаРучнойСкидки": 0,
"ПроцентАвтоматическойСкидки": 0,
"СуммаАвтоматическойСкидки": 0,
"ПричинаОтмены": "00000000-0000-0000-0000-000000000000",
"КодСтроки": 6,
"Отменено": false,
"КлючСвязи": 2,
"Склад": "6f87e83f-722c-11df-b336-0011955cba6b",
"СрокПоставки": 0,
"Содержание": "",
"СтатусУказанияСерий": 0,
"ВариантОбеспечения": "Обособленно",
"Серия": "00000000-0000-0000-0000-000000000000",
"НоменклатураНабора": "00000000-0000-0000-0000-000000000000",
"ХарактеристикаНабора": "00000000-0000-0000-0000-000000000000"
}
],
"ЭтапыГрафикаОплаты": [
{
"ВариантОплаты": "КредитПослеОтгрузки",
"ДатаПлатежа": "2024-07-18T00:00:00",
"ПроцентПлатежа": 100,
"СуммаПлатежа": 27000,
"ПроцентЗалогаЗаТару": 100,
"СуммаЗалогаЗаТару": 0,
"СуммаОтклоненияМерныхТоваров": 0,
"Сдвиг": 0
}
]
}
}

Если кого то интересует через получение структуры документа
 

Функция ПолучитьСтруктуру(знач Объект)
Структура = Новый Структура(); /// реквизиты
Для каждого Реквизит из Объект.Метаданные().СтандартныеРеквизиты Цикл
Если ТипЗнч(Объект[Реквизит.Имя]) = тип("Число") ИЛИ ТипЗнч(Объект[Реквизит.Имя]) = тип("Дата") ИЛИ ТипЗнч(Объект[Реквизит.Имя]) = тип("Булево") тогда
Структура.Вставить(Реквизит.Имя, Объект[Реквизит.Имя]);
иначе
Структура.Вставить(Реквизит.Имя, Строка(Объект[Реквизит.Имя]));
КонецЕсли;
КонецЦикла;

Для каждого Реквизит из Объект.Метаданные().Реквизиты Цикл
Если ТипЗнч(Объект[Реквизит.Имя]) = тип("Число") ИЛИ ТипЗнч(Объект[Реквизит.Имя]) = тип("Дата") ИЛИ ТипЗнч(Объект[Реквизит.Имя]) = тип("Булево") тогда
Структура.Вставить(Реквизит.Имя, Объект[Реквизит.Имя]);
иначе
Структура.Вставить(Реквизит.Имя, Строка(Объект[Реквизит.Имя]));
КонецЕсли;
Если  ТипЗнч(Объект[Реквизит.Имя]) = тип("СправочникСсылка.Организации") ИЛИ ТипЗнч(Объект[Реквизит.Имя])  = тип("СправочникСсылка.Контрагенты") тогда
Структура.Вставить(Реквизит.Имя+"ИНН", Объект[Реквизит.Имя].ИНН);
Структура.Вставить(Реквизит.Имя+"КПП", Объект[Реквизит.Имя].КПП);
КонецЕсли;
//т.к. код или номер объекта для индефикации
Если НЕ Объект[Реквизит.Имя] = Неопределено и Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект[Реквизит.Имя])) тогда
Структура.Вставить(Реквизит.Имя+"Код", Объект[Реквизит.Имя].Код);
ИначеЕсли НЕ Объект[Реквизит.Имя] = Неопределено и Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект[Реквизит.Имя])) тогда
Структура.Вставить(Реквизит.Имя+"Номер", Объект[Реквизит.Имя].Номер);
КонецЕсли;
КонецЦикла;

Для каждого ТабличнаяЧасть из Объект.Метаданные().ТабличныеЧасти Цикл
ТаблизазНач = Объект[ТабличнаяЧасть.Имя].Выгрузить();
Для Каждого Колонка Из ТаблизазНач.Колонки цикл
Массив =  ТаблизазНач.ВыгрузитьКолонку(Колонка.Имя);
МассивВстроку = Новый Массив;
МассивКодНомер = Новый Массив;
МассивАртикул = Новый Массив;
МассивИНН = Новый Массив;
МассивКПП = Новый Массив;

Для Каждого Стр из Массив цикл
Если ТипЗнч(Стр) = тип("Число") ИЛИ ТипЗнч(Стр) = тип("Дата")  ИЛИ ТипЗнч(Стр) = тип("Булево") тогда
МассивВстроку.Добавить( Стр);
иначе
МассивВстроку.Добавить( Строка(Стр));
КонецЕсли;
Если  ТипЗнч(Стр) = тип("СправочникСсылка.Номенклатура") тогда
МассивАртикул.Добавить(Стр.Артикул);
КонецЕсли;
Если  ТипЗнч(Стр) = тип("СправочникСсылка.Организации") ИЛИ ТипЗнч(Стр) = тип("СправочникСсылка.Контрагенты") тогда
МассивИНН.Добавить(Стр.ИНН);
МассивКПП.Добавить(Стр.КПП);
КонецЕсли;
//т.к. код или номер объекта для индефикации
Если НЕ Стр = Неопределено и Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Стр)) тогда
МассивКодНомер.Добавить(Стр.Код);
ИначеЕсли НЕ Стр = Неопределено и Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Стр)) тогда
МассивКодНомер.Добавить(Стр.Номер);
КонецЕсли;
КонецЦикла;
Структура.Вставить(ТабличнаяЧасть.Имя+Колонка.Имя, МассивВстроку);
//проверяем и добавляем дополнительные колонки
Если МассивАртикул.Количество() > 0 тогда
Структура.Вставить(ТабличнаяЧасть.Имя+Колонка.Имя + "Артикул", МассивАртикул);
КонецЕсли;
Если МассивКодНомер.Количество() > 0 тогда
Структура.Вставить(ТабличнаяЧасть.Имя+Колонка.Имя + "КодНомер", МассивКодНомер);
КонецЕсли;
Если МассивКПП.Количество() > 0 тогда
Структура.Вставить(ТабличнаяЧасть.Имя+Колонка.Имя + "КПП", МассивКодНомер);
КонецЕсли;
Если МассивИНН.Количество() > 0 тогда
Структура.Вставить(ТабличнаяЧасть.Имя+Колонка.Имя + "ИНН", МассивКодНомер);
КонецЕсли;

КонецЦикла;
КонецЦикла;
Структура.Вставить("ВыполнилВыгрузку", Пользователи.ТекущийПользователь().Наименование);
Возврат Структура;
КонецФункции

Пример результата через получение структуры документа
 

{
"Проведен": true,
"Ссылка": "Заказ клиента ТД00-000028 от 13.07.2024 18:46:57",
"ПометкаУдаления": false,
"Дата": "2024-07-13T18:46:57",
"Номер": "ТД00-000028",
"Партнер": "Альфа",
"ПартнерКод": "ЦУ-00000002",
"Контрагент": "Альфа",
"КонтрагентИНН": "7705260667",
"КонтрагентКПП": "770526002",
"КонтрагентКод": "",
"Организация": "Торговый дом "Комплексный"",
"ОрганизацияИНН": "9999115007",
"ОрганизацияКПП": "999911500",
"ОрганизацияКод": "",
"Соглашение": "Оптовые продажи (предоплата)",
"СоглашениеКод": "",
"Сделка": "",
"СделкаКод": "           ",
"Валюта": "RUB",
"ВалютаКод": "643",
"СуммаДокумента": 27000,
"ГрафикОплаты": "Предоплата (любая)",
"ГрафикОплатыКод": "",
"ЖелаемаяДатаОтгрузки": "0001-01-01T00:00:00",
"Склад": "Центральный склад",
"СкладКод": "",
"ЦенаВключаетНДС": true,
"Менеджер": "Федоров Борис Михайлович",
"МенеджерКод": "",
"ДополнительнаяИнформация": "",
"ДокументОснование": "",
"НеОтгружатьЧастями": true,
"Статус": "К выполнению / В резерве",
"МаксимальныйКодСтроки": 6,
"ДатаСогласования": "2024-06-21T00:00:00",
"Согласован": true,
"ФормаОплаты": "Платежная карта",
"БанковскийСчет": "АКБ "ВПБ" (ЗАО), Торговый дом "Комплексный" (RUB)",
"БанковскийСчетКод": "",
"БанковскийСчетКонтрагента": ""МАСТЕР-БАНК" (ОАО) (RUB)",
"БанковскийСчетКонтрагентаКод": "",
"Касса": "",
"КассаКод": "",
"СуммаАвансаДоОбеспечения": 0,
"СуммаПредоплатыДоОтгрузки": 0,
"ДатаОтгрузки": "2024-07-16T00:00:00",
"АдресДоставки": "Москва Нагорная улица 34",
"НалогообложениеНДС": "Продажа облагается НДС",
"СкидкиРассчитаны": true,
"ХозяйственнаяОперация": "Реализация",
"Комментарий": "",
"НомерПоДаннымКлиента": "",
"ДатаПоДаннымКлиента": "0001-01-01T00:00:00",
"Грузоотправитель": "",
"ГрузоотправительИНН": "",
"ГрузоотправительКПП": "",
"ГрузоотправительКод": "",
"Грузополучатель": "",
"ГрузополучательИНН": "",
"ГрузополучательКПП": "",
"ГрузополучательКод": "",
"БанковскийСчетГрузоотправителя": "",
"БанковскийСчетГрузоотправителяКод": "",
"БанковскийСчетГрузополучателя": "",
"БанковскийСчетГрузополучателяКод": "",
"ГруппаФинансовогоУчета": "",
"ГруппаФинансовогоУчетаКод": "",
"КартаЛояльности": "",
"КартаЛояльностиКод": "",
"Договор": "",
"ДоговорКод": "",
"Подразделение": "Отдел продаж торгового направления",
"ПодразделениеКод": "000000002",
"Автор": "Федоров Борис Михайлович",
"АвторКод": "",
"ПорядокРасчетов": "По заказам",
"Назначение": "Альфа, ТД00-28, 13.07.2024 (Заказ клиента)",
"НазначениеКод": "",
"СпособДоставки": "Самовывоз",
"ПеревозчикПартнер": "",
"ПеревозчикПартнерКод": "           ",
"ЗонаДоставки": "",
"ЗонаДоставкиКод": "",
"ВремяДоставкиС": "0001-01-01T00:00:00",
"ВремяДоставкиПо": "0001-01-01T00:00:00",
"АдресДоставкиПеревозчика": "",
"АдресДоставкиЗначенияПолей": "<КонтактнаяИнформация xmlns="http://www.v8.1c.ru/ssl/contactinfo" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Представление="Москва Нагорная улица 34"><Комментарий/><Состав xsi:type="Адрес"><Состав xsi:type="АдресРФ"/></Состав></КонтактнаяИнформация>",
"АдресДоставкиПеревозчикаЗначенияПолей": "",
"ДополнительнаяИнформацияПоДоставке": "",
"КонтактноеЛицо": "Петров Семен Васильевич",
"КонтактноеЛицоКод": "",
"Руководитель": "Исаков О.В.",
"РуководительКод": "",
"ГлавныйБухгалтер": "Кострова В.Б.",
"ГлавныйБухгалтерКод": "",
"ВернутьМногооборотнуюТару": false,
"СрокВозвратаМногооборотнойТары": 0,
"СостояниеЗаполненияМногооборотнойТары": "",
"СуммаВозвратнойТары": 0,
"НазначениеПлатежа": "",
"ТребуетсяЗалогЗаТару": false,
"Приоритет": "Средний",
"ПриоритетКод": "",
"ИдентификаторПлатежа": "ЗК1707ТД000000280004",
"ОсобыеУсловияПеревозки": false,
"ОсобыеУсловияПеревозкиОписание": "",
"НаправлениеДеятельности": "",
"НаправлениеДеятельностиКод": "",
"ПорядокОплаты": "Расчеты в рублях, оплата в рублях",
"ТоварыНомерСтроки": [
1,
2
],
"ТоварыДатаОтгрузки": [
"2024-07-16T00:00:00",
"2024-07-16T00:00:00"
],
"ТоварыНоменклатура": [
"Комбайн кухонный BINATONE FP 67",
"Соковыжималка  BINATONE JE 102"
],
"ТоварыНоменклатураАртикул": [
"КВ- 900",
"СО-77777"
],
"ТоварыНоменклатураКодНомер": [
"000000057  ",
"000000090  "
],
"ТоварыХарактеристика": [
"",
""
],
"ТоварыХарактеристикаКодНомер": [
"",
""
],
"ТоварыУпаковка": [
"шт (1 шт)",
"шт (1 шт)"
],
"ТоварыУпаковкаКодНомер": [
"    ",
"    "
],
"ТоварыКоличествоУпаковок": [
3,
1
],
"ТоварыКоличество": [
3,
1
],
"ТоварыВидЦены": [
"Оптовая",
"Оптовая"
],
"ТоварыВидЦеныКодНомер": [
"",
""
],
"ТоварыЦена": [
6750,
6750
],
"ТоварыСумма": [
20250,
6750
],
"ТоварыСтавкаНДС": [
"18%",
"18%"
],
"ТоварыСуммаНДС": [
3088.98,
1029.66
],
"ТоварыСуммаСНДС": [
20250,
6750
],
"ТоварыПроцентРучнойСкидки": [
0,
0
],
"ТоварыСуммаРучнойСкидки": [
0,
0
],
"ТоварыПроцентАвтоматическойСкидки": [
0,
0
],
"ТоварыСуммаАвтоматическойСкидки": [
0,
0
],
"ТоварыПричинаОтмены": [
"",
""
],
"ТоварыПричинаОтменыКодНомер": [
"",
""
],
"ТоварыКодСтроки": [
1,
6
],
"ТоварыОтменено": [
false,
false
],
"ТоварыКлючСвязи": [
1,
2
],
"ТоварыСклад": [
"Центральный склад",
"Центральный склад"
],
"ТоварыСкладКодНомер": [
"",
""
],
"ТоварыСрокПоставки": [
0,
0
],
"ТоварыСодержание": [
"",
""
],
"ТоварыСтатусУказанияСерий": [
0,
0
],
"ТоварыВариантОбеспечения": [
"Обеспечивать обособленно",
"Обеспечивать обособленно"
],
"ТоварыСерия": [
"",
""
],
"ТоварыСерияКодНомер": [
"",
""
],
"ТоварыНоменклатураНабора": [
"",
""
],
"ТоварыНоменклатураНабораАртикул": [
"",
""
],
"ТоварыНоменклатураНабораКодНомер": [
"           ",
"           "
],
"ТоварыХарактеристикаНабора": [
"",
""
],
"ТоварыХарактеристикаНабораКодНомер": [
"",
""
],
"ЭтапыГрафикаОплатыНомерСтроки": [
1
],
"ЭтапыГрафикаОплатыВариантОплаты": [
"Кредит (плановый)"
],
"ЭтапыГрафикаОплатыДатаПлатежа": [
"2024-07-18T00:00:00"
],
"ЭтапыГрафикаОплатыПроцентПлатежа": [
100
],
"ЭтапыГрафикаОплатыСуммаПлатежа": [
27000
],
"ЭтапыГрафикаОплатыПроцентЗалогаЗаТару": [
100
],
"ЭтапыГрафикаОплатыСуммаЗалогаЗаТару": [
0
],
"ЭтапыГрафикаОплатыСуммаОтклоненияМерныхТоваров": [
0
],
"ЭтапыГрафикаОплатыСдвиг": [
0
],
"СкидкиНаценкиНомерСтроки": [],
"СкидкиНаценкиКлючСвязи": [],
"СкидкиНаценкиСкидкаНаценка": [],
"СкидкиНаценкиСумма": [],
"СкидкиНаценкиНапомнитьПозже": [],
"ДополнительныеРеквизитыНомерСтроки": [],
"ДополнительныеРеквизитыСвойство": [],
"ДополнительныеРеквизитыЗначение": [],
"ДополнительныеРеквизитыТекстоваяСтрока": [],
"ВыполнилВыгрузку": "Орлов Александр Владимирович"
}

 

14 Comments

  1. darkmessiahan

    (1) обновил)

    только возможностей для манипуляций стало меньше

    Reply
  2. Rustig

    (1)»читать справку» ?

    а сами прислали заметки из зазеркалья….

    за ссылку спасибо!

    Reply
  3. ArchLord42

    (3) если что урл зазеркалья https://wonderland.v8.1c.ru/

    Upd: это старое зазеркалье да, но в справке тоже есть это, только не так обширнл описано

    Reply
  4. 🅵🅾️🆇

    Если что, СериализаторXDTO — не то что от вас будут ожидать в большинстве случаев.

    Если с кемт интегрируетесь, лучше действовать через стандартную сериализацию, а для ссылок и сложных объектов там в конструкторе можно указать функцию преобразования в примитивы.

    Reply
  5. darkmessiahan

    (5) поподробнее?

    Reply
  6. 🅵🅾️🆇

    (6)

    Вот вам пример)

    Функция СериализоватьJSON(Данные, ФункцияПреобразования = «БыстроJSON») Экспорт
    ЗаписьJSON                                              = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    НастройкиСериализации                                   = Новый НастройкиСериализацииJSON();
    НастройкиСериализации.СериализовыватьМассивыКакОбъекты  = Ложь;
    НастройкиСериализации.ФорматСериализацииДаты            = ФорматДатыJSON.ISO;
    НастройкиСериализации.ВариантЗаписиДаты                 = ВариантЗаписиДатыJSON.ЛокальнаяДата; // ВариантЗаписиДатыJSON.ЛокальнаяДатаСоСмещением;
    ЗаписатьJSON(ЗаписьJSON, Данные, НастройкиСериализации, ФункцияПреобразования, веб_сериализация);
    Возврат ЗаписьJSON.Закрыть();
    КонецФункции // СериализоватьJSON()
    //************************************************************
    Функция БыстроJSON(Знач Свойство, Значение, ДополнительныеПараметры, Отказ) Экспорт
    
    // Таблица значений
    Если ТипЗнч(Значение) = Тип(«ТаблицаЗначений») Тогда
    /// TODO: преобразовывать ссылки из таблицы значений одним запросом, чтоб снизить количество обращений к базе данных.
    /// …
    
    // Переведем названия колонок на латиницу
    Для Каждого Колонка Из Значение.Колонки Цикл
    matchingFieldNames  = веб_заявки_повт.matchingFieldNames(, Истина);
    ИмяЛат              = matchingFieldNames[НРег(Колонка.Имя)];
    Колонка.Имя         = ?(ИмяЛат=Неопределено, Колонка.Имя, ИмяЛат);
    КонецЦикла;
    
    // Преобразуем в массив структур
    Возврат ОбщегоНазначения.ТаблицаЗначенийВМассив(Значение);
    КонецЕсли;
    
    Возврат XMLСтрока(Значение);
    КонецФункции // БыстроJSON()
    

    Показать

    Reply
  7. 🅵🅾️🆇

    (7)

    Ссылки, например, можете отдавать в виде структур, в которых фигурируют данные из XMLСтрока() и Метаданные()

    Для справочников, дополнительно код, для документов — номер и дату.

    Ну и тд и тп.

    Reply
  8. Yashazz

    Мда, ценность публикации ниже плинтуса.

    А ещё есть CommerceML )))

    А автору советую поизучать десериализацию дат, там неслабые грабли на самом деле спрятаны.

    Reply
  9. Светлый ум

    Зато комментарии про сериализацию, дадут пищу для размышления многим. Польза есть всегда.

    Reply
  10. darkmessiahan

    (9) нужна была выгрузка на сайт.

    1) Принимающая сторона из всех вариантов выбрала мой. Через получение структуры документов и сериализации каждого реквизита отдельно. Да в 99% случаев такой способ менее подходит чем типовые.

    2) В процессе гуглинга и поиске на инфостарте про JSON маловато информации. Хотелось запустить тему, устроить holywar. Что бы новички натыкались на эту тему, и черпали для себя новую полезную информацию, в т. ч. и я.

    Reply
  11. Yashazz

    (10) Следуя вашей логике, я могу замутить любой срач, опубликовав любую хрень, и потом отмазываться полезностью комментов, написанных более квалифицированными специалистами. Не смешно.

    Reply
  12. darkmessiahan

    (12) вы всех так достаете, или я чем то выделился?)

    моя публикация попадет в топ 10 на инфостарте, по бессмысленности?)

    Reply
  13. Yashazz

    (13) Не переводите на личности. По сути моего вопроса есть что ответить? Что делать публикации только ради комментов — это правильно?

    Reply
  14. e.budaev

    Табличную часть структуры по другому лучше формировать, н-р:

    ТаблицаЗнач = Объект[ТабличнаяЧасть.Имя].Выгрузить();
    МассивТабЧасти = Новый Массив;
    Для Каждого СтрТЗ Из ТаблицаЗнач Цикл
    СтруктураСтр = Новый Структура;
    Для Каждого Колонка Из ТаблицаЗнач.Колонки Цикл
    Если ТипЗнч(СтрТЗ[Колонка.Имя]) = тип(«Число») ИЛИ ТипЗнч(СтрТЗ[Колонка.Имя]) = тип(«Дата») ИЛИ ТипЗнч(СтрТЗ[Колонка.Имя]) = тип(«Булево») тогда
    СтруктураСтр.Вставить(Колонка.Имя, СтрТЗ[Колонка.Имя]);
    Иначе
    СтруктураСтр.Вставить(Колонка.Имя, Строка(СтрТЗ[Колонка.Имя]));
    КонецЕсли;
    
    Если НЕ СтрТЗ[Колонка.Имя] = Неопределено и Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(СтрТЗ[Колонка.Имя])) тогда
    СтруктураСтр.Вставить(Колонка.Имя+»Код», СтрТЗ[Колонка.Имя].Код);
    ИначеЕсли НЕ СтрТЗ[Колонка.Имя] = Неопределено и Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(СтрТЗ[Колонка.Имя])) тогда
    СтруктураСтр.Вставить(Колонка.Имя+»Номер», СтрТЗ[Колонка.Имя].Номер);
    КонецЕсли;
    КонецЦикла;
    МассивТабЧасти.Добавить(СтруктураСтр);
    КонецЦикла;
    Структура.Вставить(ТабличнаяЧасть.Имя, МассивТабЧасти);

    Показать

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *