Добрый день. Пытаюсь прочитать такой xml файл с помощью XDTO: Код: <?xml version="1.0" encoding="UTF-8"?> <КоммерческаяИнформация> <Документ> <Ид>d9679a46-7041-11e7-89cf-50e549e0b489</Ид> <Номер>MS-0000947б</Номер> <Дата>2017-07-24</Дата> <ХозОперация>Отпуск товара</ХозОперация> </Документ> </КоммерческаяИнформация> Сделал XDTO-пакет: Пытаюсь прочитать Код: ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ПутьКФайлу); тОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ФабрикаXDTO.Тип("http://www.commerceml.org", "КоммерческаяИнформация")); Получаю ошибку Где я накосячил?
Володя, у тебя явно не хватает описания пространства имен и типов в твоем рукодельном *.XML Создай новый объект, сериализуй в XML и погляди, как оно должно выглядеть.
Ну у меня там один тип "Документ". Остальные - простые типы "string". Попробую после обеда сделать то, что ты написал. Если я конечно правильно тебя понял )
По твоей логике, 1С должна каким-то образом догадаться о том, что у тебя в файле значения типа STRING, а одно типа - Документ?
Шляпа какая-то Этот xml я выгрузил с помощью xdto и обртано 1с его проглатывает. Код: <?xml version="1.0" encoding="UTF-8"?><КоммерческаяИнформация xmlns="http://www.commerceml.org" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Документ><Ид xsi:type="xs:string">eryw234-rwer34ywr-45werer-44</Ид><Номер xsi:type="xs:string">5555</Номер><Дата xsi:type="xs:string">01-01-2015</Дата><ХозОперация xsi:type="xs:string">Закупка</ХозОперация></Документ></КоммерческаяИнформация> А этот, оригинальный - ни в какую. Структура вроде одинакова? Код: <?xml version="1.0" encoding="UTF-8"?> <КоммерческаяИнформация> <Документ> <Ид>d9679a46-7041-11e7-89cf-50e549e0b489</Ид> <Номер>MS-0000947б</Номер> <Дата>2017-07-24</Дата> <ХозОперация>Отпуск товара</ХозОперация> </Документ> </КоммерческаяИнформация> --- Объединение сообщений, 26 июл 2017 --- Если допелить в исходный xml эту надпись "xmlns="http://www.commerceml.org"" (по тончайшему намеку 1с-инка), то проглатывает. но не буду же я в каждый документ, котрый высылает мне КА руками допиливать эту строчку. Можно как-то заставить xdto глотать все? )
Володя, доведи XML до нужной структуры, либо обрабатывай XML "врукопашную" и не парь моск всему форуму Как ты выражаешься "надпись" xmlns="http://www.commerceml.org" - это описание пространства имен, из которого у тебя дальнейшие значения. Описание типов остальных значений в виде xsi:type="xs:string" так же нужны. Дату все же лучше в виде даты передавать, а не строки
Вадим, что значит доведи? Этот xml без xmnls мне приходит из КА, читай от поставщика. Как я могу его довести? ) Причем, на платформе 8.2 у нас ходят в обе стороны обмены с сайтом через xml. И никаких xmnls в этих файлах нет. Я же когда читаю файл - я даю понять какой объект xdto надо использовать: тОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ФабрикаXDTO.Тип("http://www.commerceml.org", "КоммерческаяИнформация")); Считаю, что обязательное требование наличия xmnls в файле - избыточно!
Ты можешь считать что угодно, однако, формат XDTO(в остальном мире SOAP) стандартизирован. Файл отправителем каким образом формируется? Так понимаю, не с помощью XDTO, ну так и обрабатывай его так же без применения XDTO, либо преобразовывай на месте в формат, понятный для применения XDTO и будет все работать.
В остальном мире похожих проблем нет, а 1сники мучаются. Я вчера почитал форум. Зачем было делать инструмент xdto - если он работает только в 10% случаев. Причем, повторюсь, в 8.2 работает без xmnls.
Ну пришел тебе файл XML - возьми да вставь в него недостающее опять же средствами 1С. И обрабатываю спокойненько дальше. Если от ошибки нельзя избавиться, то ее нужно обойти.