Конвертация данных 3.0. Новый подход к обменам данными

О чем эта статья?

В данной статье разберем основы технологии обмена данными с помощью 1С:Конвертации данных 3.0 – как это работает, какие преимущества, актуальны ли старые технологии обмена.

Многие специалисты работали с обменами данных в КД 2.0/2.1. Конвертация 3.0 представляет совершенно новую технологию. Сейчас мы расскажем её суть.

В чем суть Конвертации данных 3.0

Конфигурация «Конвертация данных» впервые была выпущена фирмой 1С для платформы 7.7, и с тех пор механизмы обменов данными развивались в рамках одного подхода.

Все обмены между различными по структуре базами 1С требовали написания правил обмена.

При таком подходе в базе-Источнике каждый объект проходит ряд преобразований, которые описаны в правилах, созданных для этой пары баз.
Xml-узел, в который выгружается этот объект, по структуре аналогичен объекту в базе-Приемнике. При загрузке его остается только преобразовать в объект информационной базы.

Для того, чтобы создать правила, нужно знать структуру метаданных базы-Источника и базы-Приемника, и описать преобразование объектов всех нужных типов. Правила выгружаются во внешний xml-файл, который используется каждый раз при выгрузке.

Одна из проблем этого подхода заключается в том, что после каждого изменения конфигурации баз Источника или Приемника необходимо проверять правила на актуальность, что является долгим и не всегда простым процессом.

Тем более, что, если обмен выполняется в обе стороны, то таких правил двое.

В октябре 2014 года была выпущена первая версия «Конвертации данных», редакция 3.0, предназначенная для тестирования.

Новая технология, реализованная в «Конвертации данных 3.0», призвана обособить процессы выгрузки и загрузки, сделать их независимыми. Для этого создана совершенно другая концепция обмена.

Данные будут выгружаться в формат EnterpriseData, который не зависит напрямую от структуры баз Источника и Приемника.

Схема работы конфигурации “Конвертация данных” редакция 3.0. Универсальный формат выгрузки и загрузки данных EnterpriseData

Формат EnterpriseData – это xml-формат, который создан, чтобы стать универсальным для всех обменов как между базами 1С, так и со сторонними базами.

Он предоставляется в виде xsd схемы, на основании которой формируется механизм преобразования объектов между этим форматом и любыми объектами информационных баз. Для упрощения этих преобразований формат EnterpriseData содержит объекты, аналогичные объектам метаданных типовых конфигураций.

Xml-формат EnterpriseData универсален как для обмена между базами 1С, так и со сторонними базами

При обмене через универсальный формат в каждой из баз содержится только код для преобразования объектов из базы в универсальный формат EnterpriseData и обратно.

При выгрузке не используется информация о том, какую структуру имеют базы-получатели. Поэтому при изменении конфигурации каждой из баз, участвующих в обмене, нужно будет изменить этот код только в этой базе.

Этот код находится в общем модуле МенеджерОбменаЧерезУниверсальныйФормат. Там же находятся и все обработчики событий, и весь механизм преобразования объектов, благодаря чему значительно упрощается процесс отладки. Там же могут быть описаны параметры, с помощью которых можно использовать единожды описанную там логику преобразования объектов для обмена с разными базами.

При необходимости разработчик может изменить структуру формата EnterpriseData для решения более широкого круга задач.

В процессе настройки обмена сама конфигурация «Конвертация данных 3.0» выполняет на данный момент только одну функцию — на базе структуры метаданных баз, участвующих в обмене, и схемы универсального формата она формирует тексты общих модулей МенеджерОбменаЧерезУниверсальныйФормат для каждой из баз.

Удобным будет сформировать эти модули на начальных этапах настройки обмена, а дальнейшие доработки выполнять непосредственно в тексте модулей в конфигураторе.

Новый механизм обмена не исключает также использования правил регистрации. Их настройка в настоящий момент выполняется с помощью конфигурации «Конвертация данных 2.0».

Таким образом, новая технология имеет ряд преимуществ:

  1. Для обмена между тремя и более базами не нужно создавать отдельные правила для каждой пары баз
  2. Упрощается поддержка обменов данными в случае изменения конфигураций баз
  3. Создан новый универсальный формат, который может быть использован, в частности, для обмена со сторонними базами
  4. Упрощается отладка алгоритмов, используемых при выгрузке-загрузке объектов.

В ближайшей перспективе планируется постепенный перевод всех обменов между типовыми конфигурациями на новый стандарт.

Однако обмен через Универсальный формат не рассматривается как полная замена технологии обменов по правилам. «Конвертация данных» редакции 2.0/2.1 будет поддерживаться и дальше, так как для решения определенного круга задач она остается более удобным и гибким механизмом.

Чтобы узнать, как КД 3.0 выполняет обмен данными, переходите к следующей статье – Конвертация данных 3.0. Новая технология.

Ольга Кузнецова

PDF-версия статьи для участников группы ВКонтакте

Мы ведем группу ВКонтакте – http://vk.com/kursypo1c.

Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.

Статья по программированию - в PDF-форматеСтатья в PDF-формате
Вы можете скачать эту статью в формате PDF по следующей ссылке: Ссылка доступна для зарегистрированных пользователей)

Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)

Если Вы уже участник группы – нужно просто повторно авторизоваться в ВКонтакте, чтобы скрипт Вас узнал. В случае проблем решение стандартное: очистить кеш браузера или подписаться через другой браузер.

47 комментариев к “Конвертация данных 3.0. Новый подход к обменам данными

  1. Ольга Кузнецова сказал:

    Добрый день

    К сожалению, да, проблема еще не решена.

    На партнерском форуме разработчики периодически выкладывают измененную обработку для выгрузки правил, которая подходит для новых версий конфигураций.

    https://partners.v8.1c.ru/forum/topic/1661760

  2. Алексей сказал:

    Добрый день!
    Как выгрузить один объект в два (три и т.п.)? Например,выгрузить документ на перечисление налогов “ЗаявкаНаПереводДСВБюджет” разбив документ, где в табличной части разные получатели налогов, на соответствующее кол-во документов разбитых по получателям налогов.

    • Ольга Кузнецова сказал:

      Добрый день

      Скорее всего, нужно будет воспользоваться функцией ВыгрузкаОбъектаВыборки(). Она позволяет выгрузить любой объект, даже если он не был зарегистрирован к выгрузке.

      Здесь самая большая проблема будет с идентификацией. Если Вы выгружаете один объект в несколько объектов одного типа, то уникальный идентификатор не получится для этого использовать. Придется настроить поиск по полям, но нужно следить, чтобы значения этих полей не менялись ни в источнике, ни в приемнике.

  3. IpotekaLand сказал:

    Ольга, добрый день.
    Пытаюсь загрузить правила обмена в конвертацию 3.0 на текущих конфигурациях
    Источник БП 3.0.53.39
    Приемник ЕРП 2.4.1.227
    Вопросы
    1) Будут ли работать правила из актуальных конфигураций (октябрь 2017) в конвертации 3.0.4.3 или сразу работать 3.0.5.3
    2) На сайте 1С написано что одно из отличий между версиями Конвертации 3.0 – работа с табличными частями, можно более подробно об этом, (например когда – как сейчас работает выгрузка/загрузка Табличной части). Пробывал пример с сайта 1С – не вышло.
    3) В конфигурации БП 3.0 сейчас два общих модуля – МенеджерОбменаЧерезУниверсальныйФормат и МенеджерОбменаЧерезУниверсальныйФормат13, как система определяет какие правила надо использовать? Как мне определить какой модуль следует использовать для загрузки правил? Как конвертация определяет из какого модуля прочитать правила обмена?
    4) Для чего нужно указывать несколько поддерживаемых версий форматов для одной конвертации, мы же ведем разработку только в одном формате, например 1.0 (как в лекциях)
    5) Для конфигурации ЕРП пытаюсь загрузить правила синхронизации из файлов (причем для БП 3.0 все получилось), выбрал каталог обмена, выбрал модуль менеджера, выбрал ранее созданную конвертацию ЕРП (указал только одну версию формата – 1.4) и при загрузке ошибка – “Поле объекта не обнаружено”, как победить?

    • IpotekaLand сказал:

      По пункту 5 разобрался… Почему то “ВариантыИдентификации” для некоторых правил конвертации не указаны в общем модулеМенеджерОбменаЧерезУниверсальныйФормат, поправил вручную уже в самой конвертации.

      • Ольга Кузнецова сказал:

        Да, к сожалению, в последних версиях типовых возникает эта ошибка

        • IpotekaLand сказал:

          Ольга, есть необходимость перенести остатки из БП3_0 в ЕРП (те же самые конфигурации), но в качестве приемника у меня будет документ Операция регл. (в БП 3_0 выборку сделаю произвольным алгоритмом)
          В курсе не было примера по созданию Бухгалтерских проводок да и правилах ЕРП ничего подобного не увидел…
          Может быть что -то пропустил? Может быть в пакете XDTO есть подходящий тип объекта?

          В курсе по конвертации 2_0 есть подобные пример и я его успешно применял ранее. Может быть для решения такой задачи проще использовать КД2_0?

          • Ольга Кузнецова сказал:

            Добрый день

            В формате EnterpriseData нет объекта для переноса бухгалтерских проводок. Поэтому нужно посмотреть те объекты, которые подходят для переноса начальных остатков. Если ни один из них не подходит по структуре, возможно, действительно имеет смысл настроить правила переноса с помощью КД 2 и использовать обработку V8Exchan83.

    • Ольга Кузнецова сказал:

      Добрый день.
      1.Правила работать на 3.0.4 будут. Но можно и на КД 3.0.5 сразу работать.
      2. Разница в работе с табличными частями небольшая. Раньше нужно было создать таблицу значений, которая выгрузится, как табличная часть, в которой для каждого реквизита табличной части должна была быть колонка. Теперь можно не создавать такую таблицу, а просто сопоставить реквизиты табличной части, и она выгрузится. Но это возможно только для свежих версий подсистем БСП
      3. В модуле менеджера плана обмена указано, какой общий модуль используется для какой версии формата.
      При выгрузке правил указывается версия формата. И при загрузке правил тоже нужно использовать тот общий модуль, который подойдёт для нужной версии.
      4. Конфигурация может поддерживать несколько версий формата. В основном это нужно для обмена с более старыми конфигурациями, где свежей версии может не быть.

  4. tol сказал:

    Добрый день!
    в КД 3.0.5.3 пропала возможность множественного выбора при загрузке файлов формата! Как теперь загружать структуры формата?

    • Ольга Кузнецова сказал:

      Добрый день!
      Пакет ExchangeMessage уже не нужно загружать, только EnterpriseData

          • argos_uchet сказал:

            Загрузил в КД 3.0.5.3 пакет EnterpriseData(1.3.7) из УТ 11.3.4.21. Делаю конвертацию свойств, и ни у одного объекта формата нет свойства AdditionalInfo. Что это означает ?

            • Ольга Кузнецова сказал:

              Добрый день!
              Да, в КД версии 3.0.5.3 теперь свойство формата AdditionalInfo не загружается при загрузке структуры формата и не отображается при настройке ПКС.
              Лучше всего использовать КД версии 3.0.4.3 или выгружать свойство AdditionalInfo вручную, используя обработчики. Оно по-прежнему может использоваться, просто теперь его нет в интерфейсе.

              • argos_uchet сказал:

                Спасибо, Ольга.
                Во встроенной в КД обработке “Загрузка правил синхронизации из файлов” во всех релизах допущена ошибка, из-за которой типовые правила синхронизации не загружаются в КД.
                При создании любого нового ПКО обработка пытается присвоить ему вариант идентификации, прочитанный из ПКО конфигурации.
                ТекПКО.ВариантИдентификации = Перечисления.ВариантыИдентификацииОбъектов[СтруктураАтрибутов.ВариантИдентификации];
                Однако не учитывается тот факт, что у ПКО “Для отправки” реквизит “ВариантИдентификацииОбъектов” пустой, и попытка поиска пустого значения в Перечислении возвращает ошибку.
                Я исправил ее, правила загрузились в КД, но как-то странно такое поведение обработчика в типовой конфигурации.

                • Ольга Кузнецова сказал:

                  А Вы, видимо, пользовались старой версией обработки для выгрузки правил синхронизации.

                  Обработка из поставки КД 3.0.5.3 для всех правил выгружает атрибут “ВариантИдентификации”, включая правила для отправки.

                    • Ольга Кузнецова сказал:

                      Та же самая ошибка возникает?

                      А для выгрузки правил из ERP Вы обработку из поставки этой же версии использовали? Из Бухгалтерии правила загружаются в КД нормально

                    • Anton сказал:

                      У меня та же самая ошибка с УТ 11.4, использую КД 3.0.5.3 и обработку из ее каталога поставки.

                      Пример строки из файла PKO.xml:

                    • Ольга Кузнецова сказал:

                      Да, на новых версиях типовых решений эта ошибка возникает. Это связано с тем, что разработчики изменили многие методы из общих модулей БСП и способы их вызова. А новая поставка КД пока не выходила

                  • Александр сказал:

                    Не выгружается атрибут “ВариантИдентификации” в этой поставке. Причем ещё обработка “Выгрузка правил синхронизации” открывается в последнем релизе БП3.0 с ошибкой

                    • Ольга Кузнецова сказал:

                      Вариант идентификации не выгружается, потому что он не указан в правилах (в общем модуле МенеджерОбменаЧерезУниверсалныйФормат). В прошлых релизах типовых этот вариант указан в каждом правиле, и для отправки, и для получения.

                      А в последних релизах разработчики довольно сильно изменили все технологии обменов. Некоторые экспортные процедуры и функции общих модулей теперь должны вызываться из других модулей. Поэтому да, возникает ошибка при открытии обработки.

                      Ждем следующую версию КД, возможно, все будет исправлено

              • YuraZ сказал:

                Ольга, подскажите пожалуйста,
                механизм выгрузки загрузки через AdditionalInfo
                начиная с КД 3.0.5.3 чем заменить ?

                • Ольга Кузнецова сказал:

                  Вы можете его использовать, просто это свойство не отображается в интерфейсе КД. Теперь только вручную можно выгрузить через него.

                  Или можно использовать коллекцию ДополнительныеРеквизиты

                  • YuraZ сказал:

                    Не только в ручную, можно и автоматически.

                    Если в КД 3.0.5.3
                    выбрать – Формат данных->Свойство формата нажать создать – и заполнить поля
                    Объект формата: Справочник.Контрагенты
                    Наименование: AdditionalInfo
                    Тип: Прочие
                    Порядок: 1

                    записать

                    А если немножко хакерить, проникнуть в базу напрямую – можно еще прописать поле: тип свойства формата anyType ,
                    значение которого, невозможно загнать через интерфейс.

                    Затем зайти в Настройки правил , выбрать конфигурацию, затем выбрать правила конвертации , провалится на записи СправочникКонтрАгенты , стать на закладке Правил конвератции свойств , нажать добавить то в свойствах формата AdditionalInfo чудесным образом появляется.

                    НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
                    НоваяСтрока.СвойствоКонфигурации = “СамРемонтируетСвоеОборудование”;
                    НоваяСтрока.СвойствоФормата = “AdditionalInfo”;
                    НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;

                    В версию 3.0.5.3 AdditionalInfo загоняется с помощью не больших усилий, результат кода на выходе – такой же как и в версии 3.0.4.3

                    О коллекции
                    ДополнительныеРеквизи
                    пока не ясно, очень мало информации по работе с КД3. Нет толкового описания.

                    • Ольга Кузнецова сказал:

                      Можно, конечно, и добавить его в КД. Но проще использовать обработчики событий

            • YuraZ сказал:

              argos_uchet , Вы можете поставить 3.0.4 загрузить в этом релизе AdditionalInfo как это описано в документации,затем штатным методом произвести переход на релиз 3.0.5

  5. tdobranova сказал:

    Добрый день! Делаем обмен между ERP и Бухгалтерия. Выгрузка данных происходит, а загрузка с ошибками в обоих случаях.
    Подскажите пожалуйста, в чем может быть дело?

    Ошибка чтения xml файла ERP:{ОбщийМодуль.ОбменДаннымиСервер.Модуль(5760)}: Ошибка при вызове метода контекста (НачатьЧтение)
    ЧтениеСообщения.НачатьЧтение(ЧтениеXML, ДопустимыйНомерСообщения.Больший);
    по причине:
    Номер сообщения меньше или равен номеру ранее принятого сообщения

    Ошибка чтения xml файла Бухгалтерия:
    {ОбщийМодуль.ОбменДаннымиСервер.Модуль(5615)}: Ошибка при вызове метода контекста (ПрочитатьXML)
    Данные = ПрочитатьXML(ЧтениеXML);
    по причине:
    Ошибка преобразования данных XML

    • Ольга Кузнецова сказал:

      Здравствуйте!

      “Номер сообщения меньше или равен номеру ранее принятого сообщения” – это значит, что в узле плана обмена указан номер принятого сообщения больше или равный текущему загружаемому. Нужно открыть обработку “Регистрация изменений для обмена” (ее можно открыть из формы обменов по команде “Состав отправляемых данных”). В этой обработке если указать узел, то кроме зарегистрированных объектов на этом узле, будет виден также номер принятого и номер отправленного сообщения. И там же можно изменить эти числа, если это нужно.

      “Ошибка преобразования данных XML” – это, скорее всего, значит, что файл xml поврежден

  6. Евгений сказал:

    Здравствуйте.
    Настроил обмен между конфигурациями УТ 11.3 и БП 3.0 через универсальный формат обмена данными. Теперь возникла следующая проблема: хотелось бы немного изменить общий модуль Менеджер обмена через универсальный формат, для этого мне нужно попасть отладчиком в этот модуль, но я не могу этого сделать. Установленные точки останова ничего не дают. Как мне отладчиком попасть в этот модуль?

    • Ольга Кузнецова сказал:

      Добрый день!
      Процесс обмена запускается как фоновое задание. Поэтому чтобы его отлаживать, можно включить отладку фоновых заданий.
      Или есть другой вариант – установить параметр запуска базы РежимОтладки.

      • Amur_MVS@mail.ru сказал:

        Добрый день!
        Подскажите, включил отладку фоновых заданий, установил параметр РежимОтладки, но точна останова все равно не останавливается. Что можно еще сделать для отладки?

        • Ольга Кузнецова сказал:

          Добрый день.

          Если запустили базу с параметром РежимОтладки, то отладку фоновых заданий можно не включать. Обмен будет идти без использования фоновых заданий.

          Больше ничего делать не нужно, отладка должна работать.

          Если у Вас клиент-серверная база, проверьте, что на сервере разрешена отладка. Если точка остановки в общем модуле со включенным повторным использованием возвращаемых значений, то возможно, причина в этом.

          Попробуйте в другом месте точку останова поставить. Например, в клиентской части.

  7. winset сказал:

    Здравствуйте.
    Настроил обмен между двумя БП через универсальный формат (“с другой программой”). За основу ПКО взял менеджер конвертации из типовой БП версии 3.0.43.239. Настроил правила конвертации. Но при синхронизации программа почему-то упорно меняет формат обмена с текущей версии (неважно какой) на версию 1.2, к которой правил конвертации нет. Подстановка на вкладке “служебная информация” своего менеджера обмена вопрос не решает. В чем может быть проблема? И как ее решить?

    • Ольга Кузнецова сказал:

      Здравствуйте!
      Там же на закладке Служебная информация указана и версия формата – та, в которую будет производиться выгрузка. А при загрузке версия формата читается из файла данных.

        • Ольга Кузнецова сказал:

          Если в настроенном обмене нажать кнопку “Настроить”, откроется форма узла плана обмена. Там в меню Еще выбрать команду Изменить форму. В открывшемся окне слева будет дерево Элементы формы. Там в группе Настройки есть закладка Служебная информация. Нужно около нее поставить флажок и нажать ОК, тогда эта закладка появится на форме.

  8. Дмитрий Кучеров сказал:

    Как же быть если в конфигурации присутствуют свои добавленные объекты?

    • Ольга Кузнецова сказал:

      Здравствуйте!
      На этот вопрос разработчики отвечают, что если Вы считаете, что эти объекты должны быть добавлены в формат, можно им об этом написать. Возможно, они что-то доработают в формате так, чтобы можно было переносить произвольные объекты, но пока этого нет.

      • Антон сказал:

        Добрый день. Получается название “универсальный обмен” теряет свою смысловую нагрузку?

        • Ольга Кузнецова сказал:

          Здравствуйте!
          “Универсальный обмен” – так обычно называют обработку, которая выполняет обмен по правилам, то есть по технологии КД 2. Обмен по технологии КД3 называют “Обмен через универсальный формат”.
          “Универсальный формат” – универсальный не в том смысле, что через него можно перенести любые объекты, а в том, что это единый формат для всех обменов между типовыми решениями

  9. sinjevla сказал:

    Здравствуйте.
    Очень бы хотелось детально разобраться с обмен: 1С УТ с сайтом.
    Тема очень актуальная, каждый раз приходится что-то изобретать и придумывать и далеко не факт что это правильно.
    В ваших курсах такой темы нет, в курсе про конвертацию упоминается вскользь, а хотелось бы детально рассмотреть тему с примерами и заданиями. Можно чтоб это был и новый курс.
    Данная тема у программистов пользуется спросом да и заказов по связке интернет магазина с 1С очень много.
    Было бы здорова протии такой курс у вас.

    Спасибо за поддержку и творческих успехов Вам.

    • Евгений Гилев (Мастер-тренер) сказал:

      Добрый день!

      Темы обмена и интеграции с сайтами будут детально рассмотрены в отдельном курсе.
      С помощью КД можно обмениваться данными с любыми источниками через .xml файлы.
      Но есть и другие способы обмена и интеграции.

      Сейчас этот курс в разработке, как только он будет готов, сообщим Вам.

Добавить комментарий

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

Мы используем файлы cookies, чтобы сделать сайт удобнее.
Продолжая просмотр сайта, Вы соглашаетесь с их использованием.
Подробнее