Загрузка метаданных в КД через файл 1.02


Обработка загрузки структуры метаданных в конфигурацию "Конвертация данных" через файл. Работает с измененными КД. Более удобный процесс индикации хода загрузки.

Отличия от типовой обработки загрузки:

  1. Работает с измененными КД (конфигурациями «Конвертация данных», у которых изменен порядок или состав реквизитов справочников «Конфигурации», «Объекты», «Свойства», «Значения»), т.к. переделан  механизм загрузки (загрузка выполняется не через XML-сериализацию, а через разбор файла XML).
  2. Позволяет загружать из одного файла метаданных несколько новых конфигураций, а не одну (загрузка только в одну конфигурацию — особенность механизма XML-сериализации в типовой обработке загрузки).
  3. Переделана форма информации о ходе загрузке. Информация отображается в основной форме и, как мне кажется, теперь она более информативная в плане оставшегося времени ожидания.
  4. Может загружать метаданные из файла выгруженного обработками, предназначенными для другой версии КД (в разумных пределах, на совсем старых версиях не проверял). Этим режимом управляет флажок «Выполнить загрузку при обнаружении неизвестных метаданных«. Если он установлен, то такие метаданные будут пропущены, но поддерживаемые данные будут загружены. Если сброшен, то будет генерироваться ошибка.
  5. В файловом варианте КД работает быстрее типовой обработки. В клиент-серверном не проверял.

P.S. Вывод времени выполнения отключается в модуле обработки: мРежимОтладки = Ложь;

+ Бонус: Немного подправленная для ускорения загрузки (в двух местах) типовая обработка загрузки метаданных.

+ Бонус: Подправленная типовая обработка MD82Exp для обхода ошибки выгрузки битых ссылок в составе планов обмена.

10 Comments

  1. Totoro

    (1) Старался :). Теперь, когда утрясутся январские изменения законодательства, буду переделывать КД+ИР с учетом опыта последних двух обработок загрузки.

    Reply
  2. Черный Плащ

    Держи + за хорошее решение

    Reply
  3. Totoro

    Если у кого есть доступ к партнерке — кинте туда, плиз, мою бонусную обработку. Может в следующей КД типовую тогда исправят.

    Там исправления минимальные (в двух местах ускорена загрузка и добавлен обработчик закрытия формы прогресса при прерывании загрузки пользователем или ошибке). Суть ускорения загрузки в том, что обход файла XML выполняется два раза: первый раз читается конфигурация и объекты, а второй свойства. Так вот пропуск свойств при первом обходе (а свойств всегда много) происходит через XML-сериализацию (т.е. выполняется полное чтение значения с проверкой типов), хотя достаточно просто пропустить весь узел. Проверка значения свойств все равно при втором обходе будет. В результате выигрыш в несколько минут.

    Reply
  4. Totoro

    В версии 1С 8.2.15 обработка не работает, т.к. там был исправлен результат выполнения ЧтениеXML.Пропустить(). Прошу прощения, что прозевал. Вечером дотестирую и выложу исправленную обработку.

    Reply
  5. Totoro

    1.02

    — добавлена поддержка 8.2.15

    Reply
  6. AlexO

    (0) непонятно из описания:

    «1) Работает с измененными КД (у которых изменен порядок или состав реквизитов справочников «Конфигурации», «Объекты», «Свойства», «Значения»)»

    — что такое «измененные КД» — измененные конвертации данных??

    и разве КД не все равно, какие метаданные грузить?

    «2) Позволяет загружать из одного файла метаданных несколько новых конфигураций, а не одну»

    — из нескольких конф в одну? это как? и что получится в итоге?

    «4) Может загружать метаданные из файла выгруженного обработками, предназначенными для другой версии КД (в разумных пределах, на совсем старых версиях не проверял). Этим режимом управляет флажок «Выполнить загрузку при обнаружении неизвестных метаданных». Если он установлен, то такие метаданные будут пропущены. Если сброшен, то будет генерироваться ошибка.»

    — т.е. не «может загружать», а игнорирует непонятные метаданные?

    «5) В файловом варианте КД работает быстрее типовой обработки.»

    — это хорошо ))

    Reply
  7. Totoro

    (7)

    1) Да, КД — общепринятое (во всяком случае я с таким сокращением встречаюсь постоянно 🙂 ) сокращение конфигурации «Конвертация данных». Т.к. загрузка идет через XML-сериализацию, то состав реквизитов и даже их порядок должен соответствовать полность. В одной из версий КД был даже глюк, когда при обновлении менялся порядок и стандартная загрузка не работала.

    2) Попробуй загрузить дважды как новую конфигурацию один и тот же файл. В лучшем случае в КД будет одна конфигурация ) Это особенность XML-сериализации, т.к. объекты будут создаваться по УИД (уникальному идентификатору), а он дважды будет идентичный.

    4) Да, игнорирует. Загрузить того что в КД нет она естественно не сможет. Но, то что есть загрузится.

    Reply
  8. AlexO

    (8)

    «Попробуй загрузить дважды как новую конфигурацию один и тот же файл. »

    — а зачем такой финт нужен?

    Reply
  9. Totoro

    (9) Почему финт?! У меня метаданные не менялись у конфы, а в в КД мне нужно создать новую конвертацию (т.к. я не знаю буду ли я её обновлять для изменений конфигурации так же как имеющуюся). Мне приходится заново заходить в базу и выгружать метаданные. Раньше я через другую свою обработку через COM обновлял. Но сейчас скачки релизов и приходится через файл.

    Reply
  10. Totoro

    В результате использования своей обработки столкнулся с досадным недочетом типовой обработки выгрузки. На примере УПП: если при выгрузке установить галки «Не выгружать регистры …», то при загрузке типовой обработкой в КД в составе планов обмена (для примера УПП, в составе плана обмена «Полный») могут появится битые ссылки (см. рисунок). Поэтому я немного подправил обработку выгрузки для обхода этой ошибки, заодно и добавил пропуск последовательностей и перерасчетов в составе планов обмена, которые в КД не поддерживаются. Её и выкладываю, надеюсь в будущей КД типовую обработку 1С подправят и моя не понадобится.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *