Ошибка при записи в JSON

1. NicolasCage 04.03.24 17:23 Сейчас в теме
Доброго времени суток. Практикуюсь с работой с запросами и записью результата в JSON. Появляется ошибка на строке записи в JSON: ЗаписатьJSON(Запись, СтруктураДанных);

		Выборка = Запрос.Выполнить().Выбрать();
	
	СтруктураДанных = Новый Структура;
	Товары = Новый Массив; 

	Пока Выборка.Следующий() Цикл  
		СтруктураТовара = Новый Структура("category_id, id, guid, name, quantity, price, creation_date, oem, brand_code, private_code, auto_brand");
		ЗаполнитьЗначенияСвойств(СтруктураТовара, Выборка); 
		
		КоличествоЗаписейВТаблице = Выборка.count;
		 
		СтруктураЕдиницыИзмерения = Новый Структура;
		СтруктураЕдиницыИзмерения.Вставить("packet_id", Выборка.packet_id);
		СтруктураЕдиницыИзмерения.Вставить("packet_name", Выборка.packet_name);
		
		СтруктураТовара.Вставить("packetData", СтруктураЕдиницыИзмерения);
		
		СтруктураПроизводительСтрана = Новый Структура;
		СтруктураПроизводительСтрана.Вставить("country_id", Выборка.country_id);
		СтруктураПроизводительСтрана.Вставить("country_name", Выборка.country_name);
		
		СтруктураТовара.Вставить("countryData", СтруктураПроизводительСтрана);  
		
		СтруктураСклад = Новый Структура;
		СтруктураСклад.Вставить("stock", Выборка.stock);
		
		СтруктураТовара.Вставить("stockData", СтруктураСклад);
	
		Если НЕ Выборка.image.Пустая() Тогда
			ДвоичныеДанные = РаботаСФайлами.ДвоичныеДанныеФайла(Выборка.image);
			ДанныеBase64 = Base64Строка(ДвоичныеДанные);
			ДанныеBase64 = СтрЗаменить(ДанныеBase64, Символы.ВК, "");
			ДанныеBase64 = СтрЗаменить(ДанныеBase64, Символы.ПС, "");
		КонецЕсли;
				
        СтруктураТовара.Вставить("image", ДанныеBase64); //NULL если пусто
		Товары.Добавить(СтруктураТовара);	
	КонецЦикла;
		
	СтруктураДанных.Вставить("Items", Товары); 
	
	Запись = Новый ЗаписьJSON(); 
	Запись.УстановитьСтроку();
	ЗаписатьJSON(Запись, СтруктураДанных);    	
    СтруктураJSON = Запись.Закрыть();

Показать


Просмотрел код и не могу понять в чем ошибка. И через отладчик видно, что вроде все записано корректно. Глаз замылился уже. Ткните носом где я ошибся!
По теме из базы знаний
Найденные решения
4. starik-2005 3170 04.03.24 18:33 Сейчас в теме
NULL не умеет JSON писать.
СтруктураТовара.Вставить("image", ДанныеBase64); //NULL если пусто
NicolasCage; +1 Ответить
9. spacecraft 04.03.24 21:26 Сейчас в теме
(8) quantity = Null
stock = Null
NicolasCage; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 04.03.24 17:40 Сейчас в теме
(1)
СтруктураТовара = Новый Структура("category_id, id, guid, name, quantity, price, creation_date, oem, brand_code, private_code, auto_brand");
ЗаполнитьЗначенияСвойств(СтруктураТовара, Выборка);

там и далее, какие типы данных?
В JSON могут быть записаны значения следующих типов:
Неопределено,
Булево,
Число,
Строка,
Дата (будет преобразована в строку),
Структура,
ФиксированнаяСтруктура,
Массив,
ФиксированныйМассив,
Соответствие,
ФиксированноеСоответствие.
3. laperuz 47 04.03.24 18:26 Сейчас в теме
guid в строку преобразован?
Из похожих на простые типы самый вероятный кандидат
4. starik-2005 3170 04.03.24 18:33 Сейчас в теме
NULL не умеет JSON писать.
СтруктураТовара.Вставить("image", ДанныеBase64); //NULL если пусто
NicolasCage; +1 Ответить
5. spacecraft 04.03.24 19:50 Сейчас в теме
(4) там по этому коду не получается Null. Там возможно Неопределено, но ни как не Null.
А вот из выборки вполне возможно.
6. NicolasCage 04.03.24 20:41 Сейчас в теме
(2) (3) (4) (5) Запись картинки не вызывало ошибку. В JSON действительно записывался null (если была пустая строка в результате запроса). И guid в строку преобразован. Вы не поверите, мужики, но у меня все работало пока я не добавил вот этот код:

        КоличествоЗаписейВТаблице = Выборка.count;
         
        СтруктураЕдиницыИзмерения = Новый Структура;
        СтруктураЕдиницыИзмерения.Вставить("packet_id", Выборка.packet_id);
        СтруктураЕдиницыИзмерения.Вставить("packet_name", Выборка.packet_name);
        
        СтруктураТовара.Вставить("packetData", СтруктураЕдиницыИзмерения);
        
        СтруктураПроизводительСтрана = Новый Структура;
        СтруктураПроизводительСтрана.Вставить("country_id", Выборка.country_id);
        СтруктураПроизводительСтрана.Вставить("country_name", Выборка.country_name);
        
        СтруктураТовара.Вставить("countryData", СтруктураПроизводительСтрана);  
        
        СтруктураСклад = Новый Структура;
        СтруктураСклад.Вставить("stock", Выборка.stock);
        
        СтруктураТовара.Вставить("stockData", СтруктураСклад);
Показать


После этого все сломалось. Я поэтому думаю может структура не правильно организована?
7. spacecraft 04.03.24 20:53 Сейчас в теме
(6)
В JSON действительно записывался null

это уже в тексте формата json. 1С так Неопределено записывает. Но нельзя передавать для записи Null.
После этого все сломалось

Значит ищите в каком месте появляется неподдерживаемое значение.
СтруктураСклад.Вставить("stock", Выборка.stock);

Возможно тут ссылка. Ссылки тоже не поддерживаются.
8. NicolasCage 04.03.24 21:05 Сейчас в теме
(7) Вот что показывает отладка
Прикрепленные файлы:
9. spacecraft 04.03.24 21:26 Сейчас в теме
(8) quantity = Null
stock = Null
NicolasCage; +1 Ответить
10. NicolasCage 04.03.24 21:40 Сейчас в теме
(9) Спасибо тебе огромное, добрый человек! Теперь понял, исправил.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот