|   |   | 
| 
 | 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 | 
        Я вот хочу понять, ну как же ХДТО работает. Как его раскочегарить. Задолбаби значения объект ХДТО     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |