Имя: Пароль:
1C
1С v8
Как сериализовать Граница / МоментВремени для передачи по HTTP?
0 s-n-a-y
 
11.04.25
14:36
Есть HTTP-сервис который выполняет запрос. Какие есть способы сериализации таких замысловатых штуковин? XMLСтрока не работает
1 Волшебник
 
11.04.25
14:38
оберните в структуру
2 PLUT
 
11.04.25
14:41
3 s-n-a-y
 
11.04.25
14:51
(1),(2) Сложновато, но можно. Есть конечно еще вариант с ЗначениеВСтрокуВнутр и он работает, но его почему-то не рекомендуют
4 Волшебник
 
11.04.25
14:55
(3) формат зависит от релиза, плохо для интеграций
5 Галахад
 
гуру
11.04.25
14:59
(3) Почему сложновато? Сразу передавайте параметры запроса одним параметром. Удобнее.
6 Мультук
 
гуру
11.04.25
15:03
(5)

Структуры, они как какулы. Там всё не так просто, брат (с)
7 s-n-a-y
 
11.04.25
15:26
(5) Как я понял, чтобы передать, например, границу нужно в структуре передать тип значения, дату, вид границы (в строковом представлении как предопределенное значение). И на приемнике обрабатывать все такие особые случаи с параметрами экзотических типов. Но так решение вроде рабочее. Параметры разумеется можно все в структуру закинуть, да
8 Garykom
 
гуру
11.04.25
15:14
Эмм если уж СКД со всеми настройками и отборами прекрасно в JSON сериализуется между конфами
То с МоментВремени точно нет никаких проблем
Используя штатную работу с JSON
https://wonderland.v8.1c.ru/blog/serializatsiya-prikladnykh-tipov-1s-predpriyatiya-v-json/?sphrase_id=1363428
9 s-n-a-y
 
11.04.25
15:26
(8) Теперь разобрался, благодарю
10 Мультук
 
гуру
11.04.25
15:29
(9)

Вдогонку. простой пример


&НаКлиенте
Процедура КукиМуки(Команда)
	КукиМукиНаСервере();
КонецПроцедуры


&НаСервере
Процедура КукиМукиНаСервере()
	тт = Новый Граница(ТекущаяДата(), ВидГраницы.Включая);
	
	пДанные = Новый Структура("Парам", тт);
	
	//Скукожим 
	строкаЖсон = СкукожитьвЖсон(пДанные);  
	Сообщить(строкаЖсон);
	
	//Раскукожим
	НоваяСтруктура = РаскукожитьИзЖсон(строкаЖсон);
	
	Сообщить(ТипЗнч(НоваяСтруктура));
	

КонецПроцедуры

&НаСервереБезКонтекста
Функция СкукожитьвЖсон(пДанные)

	ПараметрыЗаписиЖсон = Новый ПараметрыЗаписиJSON;
	
	ЗаписьЖсон = Новый ЗаписьJSON;
	ЗаписьЖсон.УстановитьСтроку(ПараметрыЗаписиЖсон);
	СериализаторXDTO.ЗаписатьJSON(ЗаписьЖсон, пДанные, НазначениеТипаXML.Явное);
	
	строкаЖсон = ЗаписьЖсон.Закрыть();

	Возврат 	строкаЖсон;
конецФункции	

&НаСервереБезКонтекста
Функция РаскукожитьИзЖсон(строкаЖсон)
	ЧтениеЖсон = Новый ЧтениеJSON;
	ЧтениеЖсон.УстановитьСтроку(строкаЖсон);
	
	об = СериализаторXDTO.ПрочитатьJSON(ЧтениеЖсон);
	
	ЧтениеЖсон.Закрыть();
	
	Возврат об;
КонецФункции	
	
11 s-n-a-y
 
11.04.25
15:33
(10) Ок, спасибо
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший