пятница, 6 августа 2010 г.

Конвертация данных. Описание

Введение

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


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

Таким образом, обмен данными  можно разделить на следующие стадии:
  1. Стадию подготовки правил обмена;
  2. Стадию обмена данными;
    1. Выгрузка;
    2. Преобразование(Конвертация);
    3. Запись в файл данных;
    4. Чтение данных из файла;
    5. Запись изменение объектов ИБ;

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

Самый сложным и ответственным этапа безусловно является подготовка правил обмена. Конфигурация Конвертация данных как раз и предназначена для разработки правил обмена данными.

Правила обмена представляют собой задание определенного соответствия или преобразования(конвертации) между объектами источника и объектами приемника.

ПКО

Например, мы можем задать, что справочнику Номенклатура информационной базы источника соответствует справочник Номенклатура (или какой - либо другой справочник) информационной базы приемника.
Такое соответствие между объектами источника и приемника будем называть "Правила конвертации объектов" или ПКО.


На приведенном примере видно, что для правил обмена (или Конвертации) "Два объекта в один" установлено соответствие объектов для справочников "Пользователи" и "ФизическиеЛица". То есть задано, что объекты справочника "Пользователи" из информационной базы источника нужно переносить в объекты справочника "Пользователи" информационной базы приемника.

В правиле задается объект источник данных (то есть откуда брать данные) и объект - приемник данных (то есть куда переносить или записывать данные).
Кроме них имеется еще ряд свойств смысл которых постараемся раскрыть.


  • Искать объект приемника по внутреннему идентификатору объекта источника - флаг определяющий поиск объектов в приемнике для версии платформы V8. Если этот флажок взведен, то поиск объекта для модификации в базе приемнике осуществляется по внутреннему (уникальному) идентификатору объекта. Этот идентификатор не виден пользователю а средствами программы поддерживается уникальность идентификаторов в информационной базе, так что никакие два объекта информационной базы не имеют одинаковых идентификаторов.
  • Продолжить поиск по полям поиска, если по идентификатору объект приемник не найден - флаг определяет продолжать поиск объекта в информационной базе приемнике, если поиск по уникальному идентификатору не привел к положительному результату.
  • Не замещать существующие объекты в приемнике при загрузке, а только создавать новые и заполнять их - флаг определяет нужно ли выполнять изменение реквизитов объекта в информационной базе приемнике, если объект был успешно найден по уникальному идентификатору или по полям поиска.
  • Не создавать новый объект в приемнике, если он НЕ найден - флаг определяет нужно ли создавать новый объект в информационной базе - приемнике, если он не был найден по уникальному идентификатору или по полям поиска.
  • При переносе объекта по ссылке НЕ создавать новый объект, а только переносить ссылку - флаг определяет нужно ли создавать новый объект в информационной базе - приемнике, если он не был найден по уникальному идентификатору или по полям поиска в том случае если объект переносится по ссылке. Если объект не находится и у него установлен поиск по уникальному идентификатору то будет перенесена только ссылка на объект (без полей поиска - одна ссылка). Если же объект выгружается непосредственно (то есть выгружается не только ссылка на объект, но и все его реквизиты), то флаг ни на что не влияет.
  • Не выгружать объекты свойств источника по ссылкам - флаг определяет нужно ли выгружать все объекты на которые есть ссылки у объекта источника или достаточно выгрузить только информацию о ссылках на эти объекты. Допустим вы выгружаете справочник номенклатура. Если у соответствующего ПКО не взведен этот флажок, то кроме номенклатуры будут выгружены все объекты на которые она ссылается. Если же флаг взведен, то объекты на которые ссылается номенклатура выгружены не будут. Попробуйте поставить этот флажок и посмотреть результирующий файл выгрузки данных, а затем убрать его и сравнить результаты. Вам быстро станет понятен его смысл.
  • Не запоминать выгруженные объекты - флаг определяет нужно ли системе при выгрузке КЭШировать последние выгруженные объекты. КЭШирование позволяет ускорить процесс выгрузки и загрузки данных.
  • Использовать быстрый поиск объекта при выгрузке и загрузке - флаг определяет использовать ли быстрый поиск объектов для выгрузки. Имеет смысл применять для небольших по количеству записей справочников (Количество записей не более 1000 элементов). Эффект достигается в том случае, если у многих объектов установлен флаг Не выгружать объекты свойств по ссылкам. При такой схеме выгрузки и загрузке данных скорость возрастает в несколько раз.
  • Автоматически генерировать номер или код, если он не задан - флаг определяет нужно ли системе автоматически генерировать новый код или номер объекта, если перед записью он не заполнен.

ПКС

Когда соответствие между объектами установлено, можно определить каким образом необходимо переносить реквизиты этих объектов. То есть, нам нужно задать, что реквизиту "Наименование" одного справочника соответствует реквизит "Наименование" другого.

Такое соответствие между свойствами (или реквизитами) объектов источника и приемника будем называть "Правила конвертации свойств" или ПКС.

Примечание:
ПКС используются только в ИБ источника, после того как структура объекта будет записана в файл обратится к свойству(реквизиту) можно будет только через объект.


На приведенном примере видно, что для ПКО "Пользователи" установлено 3 соответствия между свойствами (или реквизитами) объектов. Указано, что реквизит "Наименование" справочника "Пользователи" информационной базы источника должен преобразовываться в реквизит "Наименование" справочника "Пользователи" информационной базы приемника.
Когда соответствие между свойствами объектов задано, программе нужно указать критерии сопоставления объектов (то есть нужно указать, как по объекту источнику искать объект в приемнике) в двух информационных базах. Для такого сопоставления используется флажок "Поиск" у соответствующего ПКС. Если флажок взведен, то поиск соответствующего объекта будет выполняться по этому свойству. В приведенном примере, видно, что поиск объекта в информационной базе приемнике будет выполняться по реквизиту "Наименование". Если поиск установлен по нескольким реквизитам, то поиск будет осуществляться по ним всем одновременно (то есть условия накладываются по "И". В этом случае, правило сопоставления звучит следующим образом: Искать в информационной базе - приемнике объект у которого все реквизиты поиска совпадают с реквизитами поиска объекта источника).

В правиле конвертации задаются реквизит из объекта источника и объекта приемника.

Кроме того, для ссылочных реквизитов можно указать ПКО, которое необходимо применить для переноса значения данного реквизита.
Примечание:
Указывать ПКО имеет смысл только когда в правиле создано несколько ПКО с одинаковыми типами источника и приемника. В противном случае при выгрузке свойств произойдет побор  нужного ПКО
  • Поиск объекта при загрузке по данному свойству - флаг определяющий нужно ли по данному свойству производить поиск объектов в информационной базе приемнике. Если сразу у нескольких реквизитов установлено свойство поиска данных, то условия поиска объединяются по "И". В этом случае правило поиска звучит следующим образом: Найти объект у которых все реквизиты поиска совпадают с источником. (ВНИМАНИЕ!!!! Поиск по уникальному идентификатору, который может быть установлен у правила конвертации объектов более приоритетный, то есть если он установлен то поиск будет выполнен по этому идентификатору).
  • Отключить обработку данного правила - флаг, позволяет отключить обработку данного свойства, не удаляя его из правил конвертации объектов.
  • Не замещать значение данного свойства у существующих объектов ИБ - флаг, позволяет отключить обработку данного для объектов информационной базы приемника, которые были найдены по уникальному идентификатору или по полям поиска.
  • Автоматически приводить значение к длине приемника - флаг, позволяет включить автоматическое приведение Номера или Кода справочника соответствующему значению в приемнике по длине. При этом префиксы сохраняются, а числовые части преобразуются под длину поля в приемнике.

ПКЗ

Кроме того, имеется возможность задать соответствие между предопределенными элементами справочников, планов видов характеристик и значений перечислений. Такое сопоставление будем называть "Правила конвертации значений" ПКЗ.


На приведенном примере видно, что для ПКО "ВидыАгентскихДоговоров" установлено соответствие между значениями перечисления. То есть значение перечисления "Аренда" в информационной базе источнике должна преобразовываться в значение перечисления "Аренда" в информационной базе приемнике.

2 комментария:

  1. Начало есть, а где продолжение?
    Неожиданно пришлось вспоминать что такое КД, оказывается много воды утекло за 7 лет...

    ОтветитьУдалить
  2. Привет сегодня обнаружил косяк в обработке Обмен данными XML и самой конвертации данных. Для наглядности: две бухгалтерии. В документ требование накладная добавлен реквизит "блокировка". Из базы "а"в базу "б"приходит документ. Его проверяют и проводят. после проведения в базу "а" передается только реквизит блокировка. Выяснил, что при передачи из одной базы в другую всегда происходит распроведение документов. Несмотря на прямое указание режимзаписи="Записать". Пришлось лезть в код обработки обменданными и править кусок кода.

    ОтветитьУдалить