Универсальный OLE-перенос объектов между БД с идентичными конфигурациями


Обработка предназначена для периодического переноса объектов из одной копии БД в другую (например, из "черной" в "белую").
Структуры конфигураций должны быть идентичными.
Используется OLE-механизм связи (для БД "приемника" рекомендуется монопольный режим - добавлено в описание по просьбам "трудящихся").


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

При выгрузке объектов также выгружаются объекты, связанные по ссылкам с текущим выгружаемым объектом.

Выгружаемые документы проводятся в конце выгрузки, если установлен соответствующий флаг, в естественном временном порядке.

Поддерживается целостность выгрузки данных с учетом возможной сетевой структуры ссылок, т.е когда "ЭЛЕМЕНТ_1" через реквизиты ссылается на "ЭЛЕМЕНТ_2", а "ЭЛЕМЕНТ_2" - на "ЭЛЕМЕНТ_1".
В том числе, и более сложные и длинные сетевые структуры.

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

Также есть возможность выбора ключа синхронизации. Если у справочника нет атрибута "Код" (код нулевой длины), то, как вариант, можно для прозрачности переноса, добавить к структуре справочника реквизит "Уникальный код" и указать его в схеме переноса в качестве ключа синхронизации.

Вся схема переноса сводится к настройке основных параметров переноса и указанию ключей синхронизации у справочников. Схема может сохраняться в файле.

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

Это просто удобная заготовка для создания обработок переноса данных под конкретных клиентов.

Рекомендуемые доработки при доводке "под ключ":

  1. Можно, передавая в форму в качестве параметра схему переноса и другие настройки, скрыть от пользователя лишнюю информацию, автоматизировать процесс переноса данных под конкретного клиента.
  2. На отбор объектов можно "повесить" вызов некой обработки (отчета), позволяющей гибко производить отбор объектов по различным параметрам, в зависимости от пожеланий клиента. Выбранные объекты передавать в обработку переноса через параметры.

При разработке обработки акцент делался на простоту и удобство использования, экономию времени в будущем на реализации типовых задач: перенос "черное / белое", перенос справочников в новую чистую БД и т. д. и т. п..


ОСНОВНЫЕ НАСТРОЙКИ:

  • [ Трассировочные сообщения ] - выводить при переносе информацию о переносимых объектах
  • [ Проводить документы ] - проводить документы после переноса, проводятся в конце все сразу в естественной временной последовательности
  • [ Замещать при загрузке документы и справочники ] - производить обновление реквизитов уже существующих, найденных в БД-приемнике объектов

ДЕЙСТВИЯ:

  • [ Загрузить структуру ] - загрузить структуру БД (для формирования файла со схемой переноса)
  • [ Сохранить схему переноса ] - сохранить схему переноса в файл
  • [ Загрузить схему переноса ] - загрузить схему переноса из файла

РЕЛИЗ 1.25
Замечание от NDeclin:
"Пустые значения реквизитов типа "дата" переносятся как 30-12-1899."
Исправлено.

РЕЛИЗ 1.24
Замечание от Dmitry100:
"Если в приемнике уже есть документ и он помечен на удаление, а в источнике
этот документ проведен, то в приемнике он перезаполняется, но пометка
на удаление не снимается. А было бы логично."
Реализовано.

РЕЛИЗ 1.23
Исправлена ошибка при выгрузке реквизитов неопределенного типа со значением типа "перечисление".

РЕЛИЗ 1.22
Доработана выгрузка реквизитов неопределенного типа.

РЕЛИЗ 1.21
Исправлена ошибка при переносе операций.

РЕЛИЗ 1.20
Доработан интерфейс для "пользователя".

РЕЛИЗ 1.11
Исправлена ошибка, возникавшая при выгрузке документов, не имеющих табличной части.

РЕЛИЗ 1.10
Добавлена обработка передаваемых при открытии параметров.

СПИСОК ВОЗМОЖНЫХ ПАРАМЕТРОВ:

  • [ СхемаПереноса ] - файл со схемой переноса
  • [ ЗамещатьЭлементыСправочников ] - соответствующий флаг
  • [ ЗамещатьДокументы ] - соответствующий флаг
  • [ ТрассировочныеСообщения ] - соответствующий флаг
  • [ ПроводитьДокументы ] - соответствующий флаг
  • [ Путь ] - путь к БД-приемнику
  • [ ПользовательДиалог ] - параметр для подключения к БД-приемнику
  • [ Пароль ] - параметр для подключения к БД-приемнику
  • [ ВыгружаемыеОбъекты ] - список объектов (список значений), которые надо выгрузить в БД-приемник
  • [ Действие ] - действие, которое необходимо выполнить

ВОЗМОЖНЫЕ ЗНАЧЕНИЯ ПАРАМЕТРА "ДЕЙСТВИЕ":

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

"подключить_приемник" - происходит подключение БД-приемника, форма обработки открывается

"загрузить_структуру" - происходит подключение БД-приемника и загрузка структуры БД, форма обработки открывается

"загрузить_схему" - происходит загрузка схемы обмена, форма обработки открывается

"загрузить_схему_подключить_приемник" - происходит подключение БД-приемника, загрузка схемы обмена, форма обработки открывается

"выгрузить_объекты" - происходит подключение БД-приемника, загрузка схемы обмена, выгрузка переданных объектов, форма обработки не открывается


ПРИМЕР ИСПОЛЬЗОВАНИЯ ОБРАБОТКИ

  1. Открыть обработку в БД-источнике.
  2. Перейти на закладку "Настройка", загрузить структуру данных, отредактировать схему переноса
    (указать ключи синхронизации у справочников), сохранить схему в файл, чтобы в дальнейшем просто загружать ее из файла.
  3. Вернуться на основную закладку, указать: параметры конфигурации приемника (каталог, пользователь, пароль), подключить конфигурацию приемник.
  4. Отобрать объекты для выгрузки.
  5. Выгрузить данные.

Файлы обработки:

-