Использование REST web-сервисов в "1C:Предприятии 8". Личный опыт. Часть 2.

0. Dorosh Dorosh (Dorosh) 110 11.12.16 18:17 Сейчас в теме
Комментарии
1. Иван Коротеев (kiv1c) 364 12.12.16 10:56 Сейчас в теме
хмм, а как вы тестировали? В данном случае вы в REST уже отправляете готовый элемент справочника в виде xml, никакой сложной обработки.
если в веб-сервисе не писать никакой логики, а только с помощью десериализации из xml (по-моему с помощью СериализаторXDTO.ПрочитатьXML) создать элемент справочника, то откуда берется такая большая разница по скорости в 3-10 раз?
2. Антон Грачев (Fragster) 793 12.12.16 12:36 Сейчас в теме
Формирование XML через конкатенацию - отвратительно. Можно очень просто сломать.
speshuric; spogo; hulio; +3 Ответить
3. Dorosh Dorosh (Dorosh) 110 12.12.16 14:03 Сейчас в теме
(2) Согласен, но деваться некуда, другого способа нет. Еще один минус в сторону REST.
4. Антон Грачев (Fragster) 793 12.12.16 15:44 Сейчас в теме
(3) начиная от ЗаписьXML и заканчивая СериализаторXDTO
5. Dorosh Dorosh (Dorosh) 110 12.12.16 19:15 Сейчас в теме
(4) И как с их помощью можно составить текст запроса для REST?
6. Антон Чарушкин (hulio) 24 13.12.16 10:33 Сейчас в теме
(5) Полагаю, как то так (накидал пример на коленке):
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку("UTF-8");

Запись.ЗаписатьОбъявлениеXML();

Запись.ЗаписатьНачалоЭлемента("entry");
Запись.ЗаписатьАтрибут("xmlns"			, "http://www.w3.org/2005/Atom");
Запись.ЗаписатьАтрибут("xmlns:d"		, "http://schemas.microsoft.com/ado/2007/08/dataservices");
Запись.ЗаписатьАтрибут("xmlns:m"		, "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata");
Запись.ЗаписатьАтрибут("xmlns:georss"	, "http://www.georss.org/georss");
Запись.ЗаписатьАтрибут("xmlns:gml"		, "http://www.opengis.net/gml");

Запись.ЗаписатьНачалоЭлемента("content");
Запись.ЗаписатьАтрибут("type", "application/xml");

Запись.ЗаписатьНачалоЭлемента("m:properties");

	Запись.ЗаписатьНачалоЭлемента("d:Ref_Key");
	Запись.ЗаписатьТекст(Строка(Новый УникальныйИдентификатор));
	Запись.ЗаписатьКонецЭлемента();

	Запись.ЗаписатьНачалоЭлемента("d:Code");
	Запись.ЗаписатьТекст("0001");
	Запись.ЗаписатьКонецЭлемента();
	
	Запись.ЗаписатьНачалоЭлемента("d:Description");
	Запись.ЗаписатьТекст("Ромашка, ООО");
	Запись.ЗаписатьКонецЭлемента();
	
	Запись.ЗаписатьНачалоЭлемента("d:INN");
	Запись.ЗаписатьТекст("1234567890");
	Запись.ЗаписатьКонецЭлемента();

Запись.ЗаписатьКонецЭлемента(); // m:properties

Запись.ЗаписатьКонецЭлемента(); // content

Запись.ЗаписатьКонецЭлемента(); // entry

СтрокаXML = Запись.Закрыть();
Показать


Получим что типа такого:
<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
	<content type="application/xml">
		<m:properties>
			<d:Ref_Key>286353be-14d9-4b5e-8bbd-3e8b641e9ef7</d:Ref_Key>
			<d:Code>0001</d:Code>
			<d:Description>Ромашка, ООО</d:Description>
			<d:INN>1234567890</d:INN>
		</m:properties>
	</content>
</entry>
Показать
7. Сергей Смирнов (Serginio) 670 13.12.16 11:00 Сейчас в теме
(3) Вообще то ODATA создаваласть для интеграции с любыми системами. А там как раз используют объекты
Linq to ODATA
8. Трактор Трактор (Трактор) 1147 14.12.16 09:58 Сейчас в теме
Не SOUP, а SOAP поправь опечатку.
VasilVtoroy; GreenDragon; +2 Ответить
9. Александр Анисков (vandalsvq) 859 15.12.16 07:20 Сейчас в теме
А почему не использовать JSON? По мне так он намного проще. По времени записи наверняка xml не уступает.
Rif_md; shmellevich; artbear; BigB; VasilVtoroy; +5 Ответить
Оставьте свое сообщение