8.х Чтение XDTO

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Svb, 25 июл 2017.

  1. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    1.090
    Симпатии:
    23
    Баллы:
    29
    Добрый день.
    Пытаюсь прочитать такой xml файл с помощью XDTO:
    Код:
    <?xml version="1.0" encoding="UTF-8"?>
    <КоммерческаяИнформация>
        <Документ>
            <Ид>d9679a46-7041-11e7-89cf-50e549e0b489</Ид>
            <Номер>MS-0000947б</Номер>
            <Дата>2017-07-24</Дата>
            <ХозОперация>Отпуск товара</ХозОперация>
        </Документ>
    </КоммерческаяИнформация>
    Сделал XDTO-пакет:
    2017-07-25_21-36-14.png
    Пытаюсь прочитать
    Код:
        ЧтениеXML = Новый ЧтениеXML;
        ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
       
        тОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ФабрикаXDTO.Тип("http://www.commerceml.org", "КоммерческаяИнформация"));
       
    
    Получаю ошибку
    2017-07-25_21-37-33.png
    Где я накосячил?
  2. 1с-ник
    Offline

    1с-ник Профессионал в 1С Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    162
    Баллы:
    104
    Код:
    <КоммерческаяИнформация xmlns="http://www.commerceml.org">
    ...
    </КоммерческаяИнформация>
  3. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    1.090
    Симпатии:
    23
    Баллы:
    29
    Слишком тонкий намек. Я не понял где косяк.
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.247
    Симпатии:
    963
    Баллы:
    204
    Володя, у тебя явно не хватает описания пространства имен и типов в твоем рукодельном *.XML

    Создай новый объект, сериализуй в XML и погляди, как оно должно выглядеть.
  5. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    1.090
    Симпатии:
    23
    Баллы:
    29
    Ну у меня там один тип "Документ". Остальные - простые типы "string".
    Попробую после обеда сделать то, что ты написал. Если я конечно правильно тебя понял )
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.247
    Симпатии:
    963
    Баллы:
    204
    По твоей логике, 1С должна каким-то образом догадаться о том, что у тебя в файле значения типа STRING, а одно типа - Документ? :)
  7. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    1.090
    Симпатии:
    23
    Баллы:
    29
    Нет, это я прописывал. Все равно не понимает )
  8. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    1.090
    Симпатии:
    23
    Баллы:
    29
    Шляпа какая-то
    Этот 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 глотать все? )
  9. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.247
    Симпатии:
    963
    Баллы:
    204
    Володя, доведи XML до нужной структуры, либо обрабатывай XML "врукопашную" и не парь моск всему форуму :)
    Как ты выражаешься "надпись" xmlns="http://www.commerceml.org" - это описание пространства имен, из которого у тебя дальнейшие значения.
    Описание типов остальных значений в виде xsi:type="xs:string" так же нужны.
    Дату все же лучше в виде даты передавать, а не строки :)
  10. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    1.090
    Симпатии:
    23
    Баллы:
    29
    Вадим, что значит доведи? Этот xml без xmnls мне приходит из КА, читай от поставщика. Как я могу его довести? )
    Причем, на платформе 8.2 у нас ходят в обе стороны обмены с сайтом через xml. И никаких xmnls в этих файлах нет.

    Я же когда читаю файл - я даю понять какой объект xdto надо использовать:
    тОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ФабрикаXDTO.Тип("http://www.commerceml.org", "КоммерческаяИнформация"));
    Считаю, что обязательное требование наличия xmnls в файле - избыточно!
  11. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.247
    Симпатии:
    963
    Баллы:
    204
    Ты можешь считать что угодно, однако, формат XDTO(в остальном мире SOAP) стандартизирован.

    Файл отправителем каким образом формируется? Так понимаю, не с помощью XDTO, ну так и обрабатывай его так же без применения XDTO, либо преобразовывай на месте в формат, понятный для применения XDTO и будет все работать.
  12. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    1.090
    Симпатии:
    23
    Баллы:
    29
    В остальном мире похожих проблем нет, а 1сники мучаются. Я вчера почитал форум.
    Зачем было делать инструмент xdto - если он работает только в 10% случаев. Причем, повторюсь, в 8.2 работает без xmnls.
  13. AsadRoman
    Offline

    AsadRoman

    Регистрация:
    22 авг 2011
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Ну пришел тебе файл XML - возьми да вставь в него недостающее опять же средствами 1С. И обрабатываю спокойненько дальше. Если от ошибки нельзя избавиться, то ее нужно обойти.
  14. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    1.090
    Симпатии:
    23
    Баллы:
    29
    Так и сделал. Но это костылек
  15. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.247
    Симпатии:
    963
    Баллы:
    204
    Дык у тебя костыльки изначально пошли, когда ты решил любой XML обработать фабрикой XDTO :)
  16. AsadRoman
    Offline

    AsadRoman

    Регистрация:
    22 авг 2011
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    1С вот это костылек.
  17. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    1.090
    Симпатии:
    23
    Баллы:
    29
    Но, но, полегше ))

Поделиться этой страницей