1С 8.x Управляемое приложение 1С 7.7. Бухучет Статьи Ссылки
1С 8.x arrow 1С 8.x arrow Изучение языка и типовых решений arrow Конвертация данных. Первоначальные сведения.
Конвертация данных. Первоначальные сведения. Печать

Конфигурация «Конвертация данных» предназначена для автоматизации процесса конвертации данных из одной информационной базы в другую. Причем, в качестве информационных баз в общем случае выступают базы, имеющие различные конфигурации (например, «Бухгалтерия» и «Управление торговлей»), кроме того, возможно, что конфигурации ИБ – источника и ИБ – приемника принадлежат к различным платформам (например, «Бухгалтерия» может принадлежать к платформе 7.7, а «Управление торговлей» - к 8.1). 

Общие сведения

Конфигурация «Конвертация данных» предназначена для автоматизации процесса конвертации данных из одной информационной базы в другую. Причем, в качестве информационных баз в общем случае выступают базы, имеющие различные конфигурации (например, «Бухгалтерия» и «Управление торговлей»), кроме того, возможно, что конфигурации ИБ – источника и ИБ – приемника принадлежат к различным платформам (например, «Бухгалтерия» может принадлежать к платформе 7.7, а «Управление торговлей» - к 8.1).

Основные понятия

Информационная база – источник (ИБ-источник) – база из которой происходит перенос данных.

Информационная база – приемник (ИБ-приемник) – база, в которуе предстоит перенисти данные из ИБ-источника.

Файл описания конфигурации – XML – файл, содержащий описание структуры конфигурации. С помощью xml-файлов должна быть описана, как конфигурация-источник, так и конфигурация-приемник (создается обработкой MD81Exp.epf для конфигураций под 8.1)

Правила обмена – XML-файл, содержащий правила обмена данными между ИБ-источником и ИБ-приемником. (Правила обмена формируются при помощи специальной общей формы «Правила обмена», встроенной в конфигурацию «Конвертация данных»)

 Укрупненная схема взаимосвязи объектов

 


 Укрупненный алгоритм конвертации

1. Создать описание конфигурации ИБ - источника и ИБ - приемника. Для этого: открыть ИБ источника и приемника и из под них запустить обработку MD81Exp.epf. В результате должны быть сформированы xml-файлы с описанием конфигурации.


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

Параметры.<ИмяПараметра>
Одним из типичных вариантов использования параметров является их инициализация в обработчиках конвертации "Перед выгрузкой данных" или "Перед загрузкой данных" для последующего анализа в событиях правил обмена. Например, определив перед выгрузкой данных параметр ОтборДокументовПоСкладу:

Параметры.ОтборДокументовПоСкладу = Константы.ОсновнойСклад.Получить();

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

На закладке "Подключаемые обработки" могут быть загружены произвольные внешние обработки, используемые в процессе обмена. Можно выделить два основных варианта использования подключаемых обработок.

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

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

Доступ к подключаемым обработкам в обработчиках событий обмена осуществляется так:
ДопОбработки.<ИмяОбработки>.<ИмяЭкспортируемойПроцедурыИлиФункции()>



4. Создать правила конвертации

Для этого необходимо открыть общую форму «Настройка правил обмена» либо через панель функций (пункт «Настройка правил обмена»), либо в списке справочника «Конвертации» нажать на кнопку «Перейти к правилам»)

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

Стоит обратить внимание на то, что даже, если формируется правило для какого-то конкретного объекта (например, документ «Авансовый отчет»), то правила (если сильно не позаботиться об обратном) будут сформированы рекурсивно – включая те объекты, на которые есть ссылки у того объекта, для которого формируются правила, объекты, на которые есть ссылки в ссылках и т.д. Таким образом, могут быть сформированы правила фактически для всей базы.

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

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

5. Сохранить правила обмена данными в xml-файл.

После того, как мы сохраним правила обмена в xml-файл, будет «подготовлена почва» для проведения фактического обмена.

6. Один из возможных путей обмена:
  • В ИБ-источнике запускается обработка: V8Exchan81.epf и с использованием ранее подготовленного файла правил формируем файл с данными. (используем закладку «выгрузка данных»)

  • В ИБ-приемнике запускается обработка: V8Exchan81.epf и, используя файл с подготовленными из ИБ-источника данные, выполняем загрузку (закладка «Загрузка»).

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

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

Эти достаточно просты оптимизации позволяют сократить время выгрузки данных на 30-40 (!!!) % и более!

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



8. Работа с параметрами

Допустим, офис принимает заказы исключительно на товары, поэтому желательно установить запретит на выгрузку услуг. Если для элемента справочника Номенклатура реквизит Услуга установлен Истина, то он гарантированно не должен выгружаться. Контроль выгрузки услуг лучше всего сразу сделать опциональным, чтобы не менять правила, в случае, если удаленный офис станет принимать заказы и на услуги.

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

Для редактирования параметров откроем форму элемента справочника Конвертации для редактируемых правил обмена и перейдем на закладку параметры. Создадим новый элемент справочника Параметры. Присвоим имя параметра – ВыгружатьУслуги. Имя параметра служит для обращения к нему в структуре Параметры при написании программного кода в обработчиках. Наименование будет отображаться в табличной части Параметров в форме обработки универсального обмена данными. Для того, чтобы параметр был виден в диалоге при настройке выгрузки нужно установить флажок "Устанавливать в диалоге" и выбрать тип значения параметра. Для работы с параметрами в диалоге необходимо также установить флажок "Выгружать параметры в формате версии 2.01" в форме элемента справочника Конвертации.

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



 Наша задача решена, осталось только сохраним правила обмена в файле. После этого откроем универсальную обработку выгрузки и загрузки данных и посмотрим как изменилась ее логика работы:
 
ТОЛЬКО ДЛЯ ОБМЕНА V8 - V8 И ОБРАБОТКИ ВЫГРУЗКИ И ЗАГРУЗКИ НЕ НИЖЕ 2.0.18.1

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

Процедура ПередатьОдинПараметрВПриемник(Имя, ИсходноеЗначениеПараметра, ПравилоКонвертации = "") Экспорт