новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

Синхронизация баз.

  • Добавить свою публикацию
  • для этого требуется регистрация

Синхронизация баз.
Имеются база источник и база приемник. Рассмотрим задачу перенос справочников и документов из базы источник в базу приемник.
1. Нумерация кодов справочников.
Рассмотрим случай автонумерация, контроль уникальности кодов во всем справочнике. В базе источник пользователи создают элементы справочника. Уникальность кодов обеспечена. Пользователи могут также создавать элементы справочника в базе приемнике. И там тоже уникальность кодов обеспечена. В начале кода может быть префикс, а может и не быть. Это зависит от конфигурации. В типовых конфигурациях на управляемых формах префикс предположительно равен номеру узла РИБ, для простого случая это будет два ноля в базе источник и базе приемник. То есть фактически префикс одинаковый в базе источник и базе приемник. Пользователи могут создать разные элементы справочника с одинаковым кодом в базах источник и приемник. Тут нужно или договариваться, что в базе приемник пользователи вводить справочники не будут или нужно сделать так, чтобы префикс в базе приемник был другой.
2. Идентификация справочников.
Идентификация используется при синхронизации. Берем элемент справочника из базы источник, идентифицируем его с базой приемник. Если в приемнике элемент не найден - добавляем, если найден то или ничего не делаем или корректируем.
2.1 Идентификация справочников по коду.
Берем код элемента справочника из базы источник, в базе приемник используем метод справочника НайтиПоКоду().
2.2 Идентификация справочников по наименованию.
Берем наименование элемента справочника из базы источник, в базе приемник используем метод справочника НайтиПоНаименованию(,Истина). Установка второго параметра обеспечивает точное соответствие.
Уникальность наименований не обеспечена, поэтому могут быть ошибки, связанне с повторением наименования у разных элементов. Если в приемнике элемент не найден - добавляем, если найден то или ничего не делаем или корректируем.
2.3 Идентификация справочников по ГУИД.
ГУИД - это глобальный уникальный идентификатор. В строковом представлении выглядит так: 9fb58eea-17f2-4200-b105-b288d62f4303
ГУИД создается для каждого элемента справочника. Получить его можно так: СсылкаНаОбъект.УникальныйИдентификатор().
В базе приемник создаем таблицу соответствия ГУИДисточник - ГУИДприемник. Таблицу можно разместить в регистре сведений.
Берем ГУИД элемента справочника из базы источник, в базе приемник ищем соответствующий ГУИДприемник. Если ГУИДприемник не найден добавляем элемент справочника, добавляем запись ГУИДисточник - ГУИДприемник, если найден то или ничего не делаем или корректируем. Используем метод ПолучитьСсылку().
3. Нумерация документов.
В номере документа сначала идет префикс, потом номер.
Префикс устанавливается в справочнике организации. Если префиксы в базах источник и приемник разные, можно вводить документы в базах источник и приемник.
3.1 Идентификация документов по номеру и дате.
Идентификация производится методом НайтиПоНомеру() с использованием номера и даты.
Берем номер и дату документа из базы источник, в базе приемник используем метод документа НайтиПоНомеру().
3.2 Идентификация документов по ГУИД.
ГУИД создается для каждого документа. Получить его можно так: СсылкаНаОбъект.УникальныйИдентификатор().
В базе приемник создаем таблицу соответствия ГУИДисточник - ГУИДприемник. Таблицу можно разместить в регистре сведений. Ее можно сделать отдельно от таблицы соответствия по справочникам.
Берем ГУИД документа из базы источник, в базе приемник ищем соответствующий ГУИДприемник. Если ГУИДприемник не найден добавляем документ, добавляем запись ГУИДисточник - ГУИДприемник, если найден то или ничего не делаем или корректируем. Используем метод ПолучитьСсылку().
4. Версия данных.
Свойство ВерсияДанных документа или справочника позволяет узнать изменялся документ или справочник или нет. В базе источник создаем таблицу (можно в регистре сведений). Перед выгрузкой записываем версию каждого элемента справочника и документа.
Перед следующей выгрузкой сравниваем версии. Если версия изменилась - документ или справочник перегружаем в базу приемник.

 
0
≡ к списку статей