8.х Чтение xml с помощью XDTO

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

  1. TopicStarter Overlay
    Svb
    Offline

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

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Добрый день.
    Можно ли прочитать с помощью XDTO файл такой структуры?
    Код:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?><!--Остатки 08.09.2016 16:30:21-->
    <data>
      <tires>
        <cae>001139</cae>
        <rest_sorm>0</rest_sorm>
        <rest_mkrs>0</rest_mkrs>
        <rest_sk2>0</rest_sk2>
        <rest_sk3>0</rest_sk3>
        <rest_sk4>0</rest_sk4>
        <rest_sk5>0</rest_sk5>
        <rest_sk6>более 40</rest_sk6>
        <rest_sk8>0</rest_sk8>
      </tires>
      <tires>
        <cae>001139</cae>
        <rest_sorm>0</rest_sorm>
        <rest_mkrs>0</rest_mkrs>
        <rest_sk2>0</rest_sk2>
        <rest_sk3>0</rest_sk3>
        <rest_sk4>0</rest_sk4>
        <rest_sk5>0</rest_sk5>
        <rest_sk6>более 40</rest_sk6>
        <rest_sk8>0</rest_sk8>
      </tires>
      <rims>
        <cae>001139</cae>
        <rest_sorm>0</rest_sorm>
        <rest_mkrs>0</rest_mkrs>
        <rest_sk2>0</rest_sk2>
        <rest_sk3>0</rest_sk3>
        <rest_sk4>0</rest_sk4>
        <rest_sk5>0</rest_sk5>
        <rest_sk6>более 40</rest_sk6>
        <rest_sk8>0</rest_sk8>
      </rims>
      <rims>
        <cae>001139</cae>
        <rest_sorm>0</rest_sorm>
        <rest_mkrs>0</rest_mkrs>
        <rest_sk2>0</rest_sk2>
        <rest_sk3>0</rest_sk3>
        <rest_sk4>0</rest_sk4>
        <rest_sk5>0</rest_sk5>
        <rest_sk6>более 40</rest_sk6>
        <rest_sk8>0</rest_sk8>
      </rims>
    </data>
    Если бы все "rims" и "tires" были бы сгруппированы в свои теги верхнего уровня, например, "all_rims", "all_tires" тогда было бы понятно какой структуры должен быть XDTO пакет.
    А тут что-то не соображу.
  2. Andris_1c-pro
    Offline

    Andris_1c-pro Новичок в 1С

    Регистрация:
    12 сен 2014
    Сообщения:
    45
    Симпатии:
    8
    Баллы:
    4
    Получается вот такая схема:

    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="data">
    <xs:complexType>
    <xs:sequence>
    <xs:element maxOccurs="unbounded" name="tires">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="cae" type="xs:unsignedShort" />
    <xs:element name="rest_sorm" type="xs:unsignedByte" />
    <xs:element name="rest_mkrs" type="xs:unsignedByte" />
    <xs:element name="rest_sk2" type="xs:unsignedByte" />
    <xs:element name="rest_sk3" type="xs:unsignedByte" />
    <xs:element name="rest_sk4" type="xs:unsignedByte" />
    <xs:element name="rest_sk5" type="xs:unsignedByte" />
    <xs:element name="rest_sk6" type="xs:string" />
    <xs:element name="rest_sk8" type="xs:unsignedByte" />
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    <xs:element maxOccurs="unbounded" name="rims">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="cae" type="xs:unsignedShort" />
    <xs:element name="rest_sorm" type="xs:unsignedByte" />
    <xs:element name="rest_mkrs" type="xs:unsignedByte" />
    <xs:element name="rest_sk2" type="xs:unsignedByte" />
    <xs:element name="rest_sk3" type="xs:unsignedByte" />
    <xs:element name="rest_sk4" type="xs:unsignedByte" />
    <xs:element name="rest_sk5" type="xs:unsignedByte" />
    <xs:element name="rest_sk6" type="xs:string" />
    <xs:element name="rest_sk8" type="xs:unsignedByte" />
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:schema>

    Вот, примерно так получается...:)

    P.S. *.xsd не прикрепляется

    Вложения:

    Svb нравится это.
  3. TopicStarter Overlay
    Svb
    Offline

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

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Спасибо. У меня тоже получилось, только я в конфигураторе описал XDTO, а не в виде внешней схемы.
    Но теперь проблема дальше, у меня времени на обработку файла максимум 5 минут. А у меня меньше 13 минут не получается )))
  4. Andris_1c-pro
    Offline

    Andris_1c-pro Новичок в 1С

    Регистрация:
    12 сен 2014
    Сообщения:
    45
    Симпатии:
    8
    Баллы:
    4
    ну так, в конфигураторе и надо, если схема не будет часто меняться :)

    а почему так долго, сколько там десятков тысяч строк?
  5. TopicStarter Overlay
    Svb
    Offline

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

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    384 тысячи строк.
    Плюс, по данным этих строк, надо обновлять записи двух РС. Причем обновлять построчно, т.к. нельзя блокировать эти регистры для пользователей (чтение+запись) на время работы обработки xml.
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    грузи транзакциями по 500-1000 элементов
    Svb нравится это.
  7. TopicStarter Overlay
    Svb
    Offline

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

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Думал об этом, сейчас проведу еще тесты. Буду записывать на листочек время. А после обеда переделаю на запись пачками через набор записей.
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    через наборы - не получится скорее всего :)
  9. TopicStarter Overlay
    Svb
    Offline

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

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    А как тогда? Просто запись 500 записей поместить в транзакцию? Почему это даст мне выигрыш?
  10. Andris_1c-pro
    Offline

    Andris_1c-pro Новичок в 1С

    Регистрация:
    12 сен 2014
    Сообщения:
    45
    Симпатии:
    8
    Баллы:
    4
    Разбить весь xml на несколько файлов и параллельно грузить, в этом случае может будет быстрее
  11. TopicStarter Overlay
    Svb
    Offline

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

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    О, тоже вариант. Но параллельно я ни разу не делал. Это через фоновые задания надо?
  12. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
  13. Andris_1c-pro
    Offline

    Andris_1c-pro Новичок в 1С

    Регистрация:
    12 сен 2014
    Сообщения:
    45
    Симпатии:
    8
    Баллы:
    4
    Да, смотри в сторону асинхронных вызовов
Похожие темы
  1. observer
    Ответов:
    6
    Просмотров:
    1.717
  2. Эмиль0690
    Ответов:
    12
    Просмотров:
    382
Загрузка...

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