|
Интеграция 1С с Пони Экспресс. Через XDTO, не могу создать xml? | ☑ | ||
---|---|---|---|---|
0
Radion
06.10.15
✎
18:18
|
Добрый вечер, УТ 10.3. требуется интеграция с пони экспресс. Застопорился на сериализации через XDTO xml файла. Суть в следующем не могу понять как создать xml файл нужной структуры. Скачал xsd, грузанул создал пакет XDTO, осталось за малым создать xml. Перечитал Пытаюсь создать подобный тестовому файл не получается. (
|
|||
1
Горогуля
06.10.15
✎
18:22
|
очевидно, да
|
|||
2
Radion
06.10.15
✎
18:23
|
<?xml version="1.0" encoding="utf-8" ?>
- <Request xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="OrderRequest"> <Mode>Order</Mode> - <OrderList> - <Order> <ClientsNumber>kb48-12744</ClientsNumber> - <Payment> <Mode>Bill</Mode> </Payment> - <ServiceList> - <Service xsi:type="DeliveryService"> <PickupDate>2015-10-01T00:00:00+03:00</PickupDate> <Mode>Express</Mode> - <Sender> - <Address> <Country>Россия</Country> <PostCode>127023</PostCode> <City>Москва</City> <StreetAddress>ул.Строителей, д.13</StreetAddress> </Address> - <Company> <Name>ОАО "Компания"</Name> </Company> - <PersonList> - <Person> <Name>Петров Игорь Иванович</Name> - <PhoneList> <string>+7 495 342-3422</string> <string>12-44</string> </PhoneList> </Person> - <Person> <Name>Иванов Семен</Name> - <PhoneList> <string>+7 910 456-7895</string> </PhoneList> ... кусок тестового файла |
|||
3
Serginio1
06.10.15
✎
18:29
|
ЗаписьХМЛ= новый ЗаписьXML;
ЗаписьХМЛ.УстановитьСтроку(); //Можешь Открыть файл и писать прямо в файл ФабрикаXDTO.записатьXML(ЗаписьХМЛ,ТвойОбъектXDTO,,,,НазначениеТипаXML.Явное); текст=Новый ТекстовыйДокумент; Текст.УстановитьТекст(ЗаписьХМЛ.Закрыть()); Текст.Показать(); |
|||
4
Radion
06.10.15
✎
18:30
|
//Сериализация и отправка документов в ПониЭкспресс
OrderRequest = ФабрикаXDTO.Создать("http://www.ponyexpress.ru/ws/track/v1","OrderRequest"); OrderRequest.Mode = "Order"; DeliveryService = ФабрикаXDTO.Создать("http://www.ponyexpress.ru/ws/track/v1", "DeliveryService"); Для Каждого ТекДок Из ТаблицаЗаказов Цикл Если ЗначениеЗаполнено(ТекДок.АдресДоставки) Тогда Address = ФабрикаXDTO.Создать("http://www.ponyexpress.ru/ws/track/v1", "Address"); Address.PostCode = ТекДок.Индекс; Address.Country = ТекДок.Страна; Address.City = ТекДок.Город; Address.District = ТекДок.Район; Address.Region = ""; Address.StreetAddress= ТекДок.Улица; //DeliveryService.Добавить(Address); //DeliveryService.Sender.Добавить(Address); КонецЕсли; КонецЦикла; DeliveryService.Sender = Address; OrderRequest.OrderList = DeliveryService; Получается: <OrderRequest xmlns="http://www.ponyexpress.ru/ws/track/v1" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Mode xsi:type="xs:string">Order</Mode> <OrderList xsi:type="DeliveryService"> <Sender xsi:type="Address"> <Country>Казахстан</Country> <Region/> <District/> <PostCode>005008</PostCode> <City>Актау</City> <StreetAddress>Шевченко 162А, кв 26</StreetAddress> </Sender> </OrderList> </OrderRequest> |
|||
5
Radion
06.10.15
✎
18:31
|
(3) Сергей, спасибо. Это работает (отправка). Я не могу грамотно с помощью XDTO сериализовать xml файл.
|
|||
6
Radion
06.10.15
✎
18:31
|
Чтобы отправить этот самый xml файл.
|
|||
7
Serginio1
06.10.15
✎
18:35
|
Так в 3 это и есть сериализация объекта XDTO
ТвойОбъектXDTO |
|||
8
Radion
06.10.15
✎
18:38
|
(7) не правильно выразился, мне нужно добавить значение в структуру через xdto, и потом сериализовать.
|
|||
9
Serginio1
06.10.15
✎
18:38
|
Если тебе нужно Десериализовать, то
ЧтениеXML=Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ИмяФайла); ЧтениеXML.ПерейтиКСодержимому(); ОбъектXDTO=ФабрикаXDTO.ПрочитатьXML(ЧтениеXML,ФабрикаXDTO.Тип(ЧтениеXML.URIПространстваИмен,ЧтениеXML.Имя)); |
|||
10
Serginio1
06.10.15
✎
18:39
|
Напиши код что и куда ты хочешь добавить.
|
|||
11
Radion
06.10.15
✎
18:42
|
вот в (2) есть такой тэг: <Sender>, хочу заполнить вложенный <Address>
|
|||
12
Radion
06.10.15
✎
18:43
|
у меня такое ощущение, что xsd импортированный в 1С некорректный (
|
|||
13
Serginio1
06.10.15
✎
18:45
|
Sender имеет тип Address?
DeliveryService.Sender=Address Или он является AnyType? Напиши, что в итоге хочешь получить |
|||
14
Serginio1
06.10.15
✎
18:47
|
(12) Он корректный. Просто 1С не умеет читать.
Использование web-сервиса, wsdl-схема |
|||
15
Radion
06.10.15
✎
18:57
|
(13) да DeliveryService.Sender имеет тип AnyType.
|
|||
16
Radion
06.10.15
✎
20:14
|
(14) а возможно реализовать наоборот. Если типы данных из xsd файла не читаются 1С, возможно сгенерировать новый xsd из файла примера xml? или кто нибудь сталкивался с этой проблемой?
|
|||
17
Serginio1
06.10.15
✎
20:14
|
Ну судя по всему у тебя аналогично 14.
1С не разобрала Sender. |
|||
18
Serginio1
06.10.15
✎
20:15
|
Мне проще было через классы Net.
|
|||
19
Radion
07.10.15
✎
10:18
|
(18) понял. Спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |