Вход | Регистрация
 

XDTO пакет, разбор ответа.

XDTO пакет, разбор ответа.
Я
   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
Я не могу понять что делаю не так, вроде все как по учебнику же сделал. Помогите пожалуйста друзья, ваще заглох прям.
   yyyuuu
 
1 - 06.02.20 - 06:04
Чтение объекта типа: {http://service.siw.pktbcki.rzd/}reference14ASUResponse - [1,252]
Проверка дополнительного свойства:
    форма: Элемент
    имя: row: Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: {http://service.siw.pktbcki.rzd/}reference14ASUResponse
   yyyuuu
 
2 - 06.02.20 - 06:14
Я ужеи так и так пробовал ну что только не сделал. Вообще въехать не могу. Ребята Надеюсь на вашу отзывчивость
   yyyuuu
 
3 - 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 уже был массив элементов с дислокацией вагонов, который в цикле мы обходим
   yyyuuu
 
5 - 06.02.20 - 08:48
   yyyuuu
 
6 - 06.02.20 - 08:49
Да У Меня вроде и схемы и все что угодно бери да разбирай. А что то получается какая херня ) точнее даже она не получается)
   бегинер
 
7 - 06.02.20 - 09:12
так попробуй:

Для Каждого Элемент Из ответ.reference14ASU.row Цикл;
  
   Свойство=Элемент.получить("NOM_VAG")//номер вагона


   сообщить(элемент.NOM_VAG);



цикл;

в "ответ" - те данные xml полученные
   yyyuuu
 
8 - 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 - обрабатывал моим способом, у меня были случаи что не все поля в ответе были обязательные - т.е. провайдер не следил за строгой структурой, делал попытка - исключение - иначе ругалось "нет такого поля"
   yyyuuu
 
11 - 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
убирай тип фабрики и читай спокойно не парься :)
   Deon
 
14 - 06.02.20 - 10:28
(11) Я РЖДшные справки через ПостроительDOM в ТаблицуЗначений загоняю, потом уже смотрю, что там получилось.
А если через схему, то можно попробовать загнать в ЧтениеXML строку между <row> </row> и смотреть, что там не так, например, убирая по одному полю из XDTO-пакета. Там поля <DATE_KON> и <DATE_NAZN>, возможно, всё портят
   yyyuuu
 
15 - 07.02.20 - 07:35
ДА там объект XDTO  не читается никак, а так бы его читанул и все)
   yyyuuu
 
16 - 07.02.20 - 07:35
(14)
Покажи пример)
   yyyuuu
 
17 - 07.02.20 - 08:09
ФабрикаXDTO.Тип("http://service.siw.pktbcki.rzd/";;, "reference14ASUResponse").Свойства.Получить("reference14ASU").Тип.Свойства.Получить("row").Тип;
Уже так сделал, все ровно говорит что:
роверка дополнительного свойства:
    форма: Элемент
    имя: row: Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: {http://service.siw.pktbcki.rzd/}reference14ASU
   yyyuuu
 
18 - 18.02.20 - 09:00
Не у кого не появились мысли рябта по этому поводу?)
   CaIIIka
 
19 - 18.02.20 - 09:16
В том и проблема (в данном случае у вас), что 1С отвергает малейшие отклонения в XML от схемы. Нужно курить всю схему и искать эти отличия. Или искать причины по которым эти отличия имеются. Это нудный и кропотливый процесс. И, вот так на форуме, не видя всей картины и предыстории, вам врядли кто-то скажет: "вы вот тут у этого свойства вот это поменяйте"...
Еще возможно, что на другом конце внесли изменения в схему, и нужно просто у вас ее обновить, чтобы системы понимали друг друга. Любо забить на схему и грузить все напрямую.
   yyyuuu
 
20 - 19.02.20 - 07:08
Если есть желание Я могу любую недостающую информацию придоставить. Чтобы стало понятнее что к чему и зачем
   yyyuuu
 
21 - 20.02.20 - 07:41
Я вот хочу понять, ну как же ХДТО работает. Как его раскочегарить. Задолбаби значения объект ХДТО


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.