|
XDTO пакет, разбор ответа. | ☑ | ||
---|---|---|---|---|
0
yyyuuu
06.02.20
✎
06:02
|
Друзья приет всем. Не могу понять, и читал и руками ковырял и все ровно понять не могу что Я делаю тут не так.
Начинается так: <?xml version='1.0' encoding='UTF-8'?><reference14ASU><row>.......... Хочу разбрать ипользуя XDTO пакеты которые Я загрузил по схеме XSD. Делаю так ТипЗначенияXDTO = ФабрикаXDTO.Тип("http://service.siw.pktbcki.rzd/", "reference14ASUResponse"); Получаю свойства. https://ibb.co/dWqpGkM Тут под первым индексом Мой первый узел. https://ibb.co/hFpyfVW https://ibb.co/0JXGKPK Я не могу понять что делаю не так, вроде все как по учебнику же сделал. Помогите пожалуйста друзья, ваще заглох прям. |
|||
1
yyyuuu
06.02.20
✎
06:04
|
Чтение объекта типа: {http://service.siw.pktbcki.rzd/}reference14ASUResponse - [1,252]
Проверка дополнительного свойства: форма: Элемент имя: row: Ошибка проверки данных XDTO: Структура объекта не соответствует типу: {http://service.siw.pktbcki.rzd/}reference14ASUResponse |
|||
2
yyyuuu
06.02.20
✎
06:14
|
Я ужеи так и так пробовал ну что только не сделал. Вообще въехать не могу. Ребята Надеюсь на вашу отзывчивость
|
|||
3
yyyuuu
06.02.20
✎
06:56
|
Может кто то поймет что тут не так происходит)
|
|||
4
бегинер
06.02.20
✎
08:33
|
пришли скриншот из soapui в котором видно сам xml ответ - чтоб понять его структуру
я так разбирал ответ xml ранее с дислокацией: ответ = Прокси.GetDislocation4Group(WSПараметр);//получил ответ Для Каждого Элемент Из ответ.GetDislocation4GroupResult.diffgram.DislocationSet.DislocationTable Цикл; Свойство=Элемент.получить("WagonModel");//модель вагона, устанавливаем какое сво-во будем читать модель_вагона=элемент.WagonModel; получаем само значение нашего свой-ва из ответа xml пакета цикл; т.е. массив набора вагонов у меня в ответе лежал иерархично: diffgram>DislocationSet>DislocationTable внутри DislocationTable уже был массив элементов с дислокацией вагонов, который в цикле мы обходим |
|||
5
yyyuuu
06.02.20
✎
08:48
|
||||
6
yyyuuu
06.02.20
✎
08:49
|
Да У Меня вроде и схемы и все что угодно бери да разбирай. А что то получается какая херня ) точнее даже она не получается)
|
|||
7
бегинер
06.02.20
✎
09:12
|
так попробуй:
Для Каждого Элемент Из ответ.reference14ASU.row Цикл; Свойство=Элемент.получить("NOM_VAG");//номер вагона сообщить(элемент.NOM_VAG); цикл; в "ответ" - те данные xml полученные |
|||
8
yyyuuu
06.02.20
✎
09:20
|
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(Разбор.Значение); ТипЗначенияXDTO = ФабрикаXDTO.Тип("http://service.siw.pktbcki.rzd/ ", "reference14ASUResponse"); Попытка ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ТипЗначенияXDTO); - Вот тут спекается, не верные поля. Я не дохожу еще до разбора даже) Исключение Сообщить("Ошибка при разборе ХМЛ Справка№14"); Сообщить(ОписаниеОшибки()); Возврат ЛОжь; КонецПопытки; |
|||
9
бегинер
06.02.20
✎
09:25
|
ну ты через чтениеXML делаешь - оно и ругается, может ответ не соотв размеченной структуре.
попробуй моим вариантов, эт типа как ручками читаем xml - не через "чтениеXML" Результат = WSПрокси.GetBlock(ИмяПользователя, Пароль,ТекстЗапроса);//тут или под другому - получаешь Справка№14 ответ=Результат; и далее мой код |
|||
10
бегинер
06.02.20
✎
09:27
|
я помню тоже мучался, в итоге как получил в 1с xml - обрабатывал моим способом, у меня были случаи что не все поля в ответе были обязательные - т.е. провайдер не следил за строгой структурой, делал попытка - исключение - иначе ругалось "нет такого поля"
|
|||
11
yyyuuu
06.02.20
✎
10:10
|
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(Разбор.Значение); ТипЗначенияXDTO = ФабрикаXDTO.Тип(); Попытка ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ТипЗначенияXDTO); Исключение Сообщить("Ошибка при разборе ХМЛ Справка№14"); Сообщить(ОписаниеОшибки()); Возврат ЛОжь; КонецПопытки; Сериализатор=Новый СериализаторXDTO(ФабрикаXDTO); //СериализаторXDTO.ВозможностьЧтенияXML(ЗначениеXDTO.NOM_NAK); Если Я уберу тип фабрики то Я спокойно его прочитаю, правда некоторые элементы идут как Объект XDTO. Хочу разобрать через фабрику ну не могу понять ну где что не так Для каждого ЗначениеXDTO Из ОбъектXDTOreference14ASU.row Цикл |
|||
12
бегинер
06.02.20
✎
10:23
|
ну нет здесь никакого удобства:
что здесь пишешь ручками поле NOM_NAK: СериализаторXDTO.ВозможностьЧтенияXML(ЗначениеXDTO.NOM_NAK) что ручками: Свойство=Элемент.получить("NOM_VAG")//номер вагона один фиг все поля при чтении будешь сам писать какие надо, так что нет смысла мне каж. заморачиваться |
|||
13
бегинер
06.02.20
✎
10:23
|
убирай тип фабрики и читай спокойно не парься :)
|
|||
14
Deon
06.02.20
✎
10:28
|
(11) Я РЖДшные справки через ПостроительDOM в ТаблицуЗначений загоняю, потом уже смотрю, что там получилось.
А если через схему, то можно попробовать загнать в ЧтениеXML строку между <row> </row> и смотреть, что там не так, например, убирая по одному полю из XDTO-пакета. Там поля <DATE_KON> и <DATE_NAZN>, возможно, всё портят |
|||
15
yyyuuu
07.02.20
✎
07:35
|
ДА там объект XDTO не читается никак, а так бы его читанул и все)
|
|||
16
yyyuuu
07.02.20
✎
07:35
|
(14)
Покажи пример) |
|||
17
yyyuuu
07.02.20
✎
08:09
|
ФабрикаXDTO.Тип("http://service.siw.pktbcki.rzd/";, "reference14ASUResponse").Свойства.Получить("reference14ASU").Тип.Свойства.Получить("row").Тип;
Уже так сделал, все ровно говорит что: роверка дополнительного свойства: форма: Элемент имя: row: Ошибка проверки данных XDTO: Структура объекта не соответствует типу: {http://service.siw.pktbcki.rzd/}reference14ASU |
|||
18
yyyuuu
18.02.20
✎
09:00
|
Не у кого не появились мысли рябта по этому поводу?)
|
|||
19
CaIIIka
18.02.20
✎
09:16
|
В том и проблема (в данном случае у вас), что 1С отвергает малейшие отклонения в XML от схемы. Нужно курить всю схему и искать эти отличия. Или искать причины по которым эти отличия имеются. Это нудный и кропотливый процесс. И, вот так на форуме, не видя всей картины и предыстории, вам врядли кто-то скажет: "вы вот тут у этого свойства вот это поменяйте"...
Еще возможно, что на другом конце внесли изменения в схему, и нужно просто у вас ее обновить, чтобы системы понимали друг друга. Любо забить на схему и грузить все напрямую. |
|||
20
yyyuuu
19.02.20
✎
07:08
|
Если есть желание Я могу любую недостающую информацию придоставить. Чтобы стало понятнее что к чему и зачем
|
|||
21
yyyuuu
20.02.20
✎
07:41
|
Я вот хочу понять, ну как же ХДТО работает. Как его раскочегарить. Задолбаби значения объект ХДТО
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |