Всех приветствую, столкнулся со следующей проблемой:
Упаковываю данные в json файл через структуру, указываю свои ключи и значения по справочникам, однако на выходе получается несуразица, по типу:
{,
"productName": ,
"Шкаф мед. металл. двухсекц. двухдверный ШМ-04-МСК (нерж.сталь) МСК-5647.01 (700х320х1175)",
"articul": ,
"",
"package": ,
"шт",
"vid": ,
"Товары",
"nds": ,
"Без НДС"
},
{,
"productName": ,
"Банкетка БЛ-МСК (со спинкой, 1500х480х830, МСК-208)",
"articul": ,
"",
"package": ,
"шт",
"vid": ,
"Товары",
"nds": ,
"Без НДС"
}
Кто может помочь?
Упаковываю данные в json файл через структуру, указываю свои ключи и значения по справочникам, однако на выходе получается несуразица, по типу:
{,
"productName": ,
"Шкаф мед. металл. двухсекц. двухдверный ШМ-04-МСК (нерж.сталь) МСК-5647.01 (700х320х1175)",
"articul": ,
"",
"package": ,
"шт",
"vid": ,
"Товары",
"nds": ,
"Без НДС"
},
{,
"productName": ,
"Банкетка БЛ-МСК (со спинкой, 1500х480х830, МСК-208)",
"articul": ,
"",
"package": ,
"шт",
"vid": ,
"Товары",
"nds": ,
"Без НДС"
}
Функция Создатьjson()
ЗаписьДж = Новый ЗаписьJSON();
ЗаписьДж.ПроверятьСтруктуру = Ложь;
ПараметрыЗаписиДж = Новый ПараметрыЗаписиJSON( , Символы.Таб);
ЗаписьДж.ОткрытьФайл("C:\ФайлВыгрузки.json",,,ПараметрыЗаписиДж);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмеренияНаименование,
| Номенклатура.ВидНоменклатуры.Наименование КАК ВидНоменклатурыНаименование,
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.СтавкаНДС.Наименование КАК СтавкаНДСНаименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Структура1 = новый Структура;
Структура1.Вставить("productName" , Строка(ВыборкаДетальныеЗаписи.Наименование));
Если Не ВыборкаДетальныеЗаписи.Артикул = Null Тогда
Структура1.Вставить("articul" , Строка(ВыборкаДетальныеЗаписи.Артикул));
КонецЕсли;
Если Не ВыборкаДетальныеЗаписи.ЕдиницаИзмеренияНаименование = Null Тогда
Структура1.Вставить("package" , Строка(ВыборкаДетальныеЗаписи.ЕдиницаИзмеренияНаименование));
КонецЕсли;
Если Не ВыборкаДетальныеЗаписи.ВидНоменклатурыНаименование = Null Тогда
Структура1.Вставить("vid" , Строка(ВыборкаДетальныеЗаписи.ВидНоменклатурыНаименование));
КонецЕсли;
Если Не ВыборкаДетальныеЗаписи.СтавкаНДСНаименование = Null Тогда
Структура1.Вставить("nds" , Строка(ВыборкаДетальныеЗаписи.СтавкаНДСНаименование));
КонецЕсли;
Запрос1 = Новый Запрос;
Запрос1.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура.Ссылка КАК НоменклатураСсылка,
| ТоварыНаСкладахОстатки.Склад.Наименование КАК СкладНаименование,
| ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииОстаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
|ГДЕ
| ТоварыНаСкладахОстатки.Номенклатура.Ссылка = &Ссылка";
Запрос1.УстановитьПараметр("Ссылка", ВыборкаДетальныеЗаписи.Ссылка);
РезультатЗапроса1 = Запрос1.Выполнить();
ВыборкаДетальныеЗаписи1 = РезультатЗапроса1.Выбрать();
Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл
Если Не ВыборкаДетальныеЗаписи1.ВНаличииОстаток = Null Тогда
Структура1.Вставить("Ostatok" , Строка(ВыборкаДетальныеЗаписи1.ВНаличииОстаток));
КонецЕсли;
Если Не ВыборкаДетальныеЗаписи1.СкладНаименование = Null Тогда
Структура1.Вставить("sklad" , Строка(ВыборкаДетальныеЗаписи1.СкладНаименование));
КонецЕсли;
КонецЦикла;
Запрос2 = Новый Запрос;
Запрос2.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
| ЦеныНоменклатурыСрезПоследних.ВидЦены.Наименование КАК ВидЦеныНаименование,
| ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
| ЦеныНоменклатурыСрезПоследних.Валюта.Наименование КАК ВалютаНаименование
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
|ГДЕ
| ЦеныНоменклатурыСрезПоследних.Номенклатура.Ссылка = &Ссылка
|
|УПОРЯДОЧИТЬ ПО
| ЦеныНоменклатурыСрезПоследних.Период УБЫВ";
Запрос2.УстановитьПараметр("Ссылка", ВыборкаДетальныеЗаписи.Ссылка);
РезультатЗапроса2 = Запрос2.Выполнить();
ВыборкаДетальныеЗаписи2 = РезультатЗапроса2.Выбрать();
Пока ВыборкаДетальныеЗаписи2.Следующий() Цикл
Если Не ВыборкаДетальныеЗаписи2.Цена = Null Тогда
Структура1.Вставить("price" , Строка(ВыборкаДетальныеЗаписи2.Цена));
КонецЕсли;
Если Не ВыборкаДетальныеЗаписи2.ВидЦеныНаименование = Null Тогда
Структура1.Вставить("vidPrice" , Строка(ВыборкаДетальныеЗаписи2.ВидЦеныНаименование));
КонецЕсли;
Если Не ВыборкаДетальныеЗаписи2.ВалютаНаименование = Null Тогда
Структура1.Вставить("Valuta" , Строка(ВыборкаДетальныеЗаписи2.ВалютаНаименование));
КонецЕсли;
КонецЦикла;
ЗаписатьJSON(ЗаписьДж, Структура1);
КонецЦикла;
ЗаписьДж.Закрыть();
КонецФункции
ПоказатьКто может помочь?
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) Я бы сделал так:
.....
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Данные = Новый Массив;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
..........
Данные.Добавить(Структура1);
КонецЦикла;
ЗаписатьJSON(ЗаписьДж, Данные);
Показать
(4) Дай-ка, я догадаюсь...
При записи второго элемента у тебя вывалилось исключение в котором что-то говорилось про структуру json, ты ничего не понял, решил заглушить проверку при помощи и теперь удивляешсья, что у тебя json битый. Так дело было?
При записи второго элемента у тебя вывалилось исключение в котором что-то говорилось про структуру json, ты ничего не понял, решил заглушить проверку при помощи
ЗаписьДж.ПроверятьСтруктуру = Ложь;
(9) Ты хочешь неправильного json. Оно на самом верхнем уровне должно быть или объектом или массивом. Попробуй что-то вроде
ЗаписьДж.ЗаписатьНачалоМассива();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
...
КонецЦикла;
ЗаписьДж.ЗаписатьКонецМассива();
ЗаписьДж.Закрыть();
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот