Расширить сферу применения КД3 Вы можете используя эти публикации

Задача

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

Выполняемые действия

Этап 1. Подготовка к настройке правил.

Для настройки правил конвертации в конфигурации КД 3.0 должны содержаться сведения о структуре информационных баз, между которыми производится синхронизация данных, а также о структуре формата Enterprise Data .

Шаг 1. Выгрузка структуры информационных баз УП и БП.

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

Для каждой информационной базы (УП и БП ) необходимо выполнить следующие действия:

  1. Открыть информационную базу в режиме “Предприятие”.
  2. Открыть внешнюю обработку MD83Exp.epf (Меню Файл & Открыть).
  3. Указать имя файла, в который следует сохранить структуру информационной базы.
  4. Проверить настройки в форме обработки (все флаги должны быть сняты).
  5. Нажать кнопку Выгрузить.

Шаг 2. Экспорт xml-схемы формата обмена

Для выгрузки схемы формата обмена используются стандартные возможности платформы.

Необходимо выполнить следующие действия:

  1. Открыть одну из информационных баз (либо УП либо БП ) в режиме “Конфигуратор”.
  2. В дереве метаданных найти XDTO пакеты с именами ExchangeMessage иEnterpriseData_1_0_beta.
  3. Установить курсор на пакет XDTO, нажать правую кнопку мыши и в контекстном меню выбрать пункт Экспорт XML-схемы . Указать путь и имя файла для экспорта. Выполнить это действие для каждого из двух пакетов, сохранив XML-схемы в два разных файла.

Шаг 3. Загрузка структуры информационных баз в конфигурацию КД 3.0

Загрузка выполняется в конфигурацию КД 3.0 в режиме “Предприятие”. Перечисленные ниже действия следует выполнить для каждой из конфигураций, для которых настраиваются правила конвертации (УП и БП ).

  1. Перейти в раздел Конфигурации , и выбрать команду
  2. Указать путь к файлу со структурой информационной базы (см. Этап 1, Шаг 1 ).
  3. Указать способ загрузки & в новую версию конфигурации.
  4. Нажать кнопку Выполнить загрузку

Шаг 4. Загрузка структуры формата обмена в конфигурацию КД 3.0

  1. Перейти в раздел Формат данных , и выбрать команду .
  2. Указать файлы со структурой формата (см. Этап 1, Шаг 2 ). Необходимо указать сразу оба файла, используя множественный выбор.
  3. Проверить имя основного пакета XDTO – должен совпадать с пространством имен пакета XDTO EnterpriseData_1_0_beta (см. в конфигураторе УП или БП ).
  4. Указать способ загрузки & в новую версию формата .
  5. Нажать кнопку Выполнить загрузку , дождаться окончания загрузки.

Этап 2. Создание конвертаций

Для решения описанной задачи необходимо создать две конвертации:

  • УП (для выгрузки данных из УП в формат обмена)
  • БП (для загрузки данных из формата обмена в БП )

Создание конвертаций производится в разделе Конвертации , команда Конвертации . Для новой конвертации необходимо указать наименование, конфигурацию и формат обмена. Например, конвертация для конфигурации УП:

  • Наименование & “УП2.0.7”.
  • Конфигурация & “УправлениеПредприятием”.
  • Поддерживаемые версии формата & одна строка, в которой выбрана единственная позиция справочника Версии формата.
  • правила обработки данных,
  • правила конвертации объектов,
  • правила конвертации предопределенных данных.

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

Этап 3. Создание правил конвертации объектов

Шаг 1. Правило конвертации для выгрузки контрагентов из УП

  1. УП.
  2. Перейти на закладку
  3. Основные сведения:
    1. Идентификатор правила : “Справочник_Контрагенты_Отправка”,
    2. Объект конфигурации
    3. Объект формата : “Справочник.Контрагенты”,
    4. Область применения : Для отправки.
  4. Нажать кнопку Записать и перейти на закладку Правила конвертации свойств:
    1. Воспользоваться сервисом автоматического сопоставления свойств
      1. Нажать кнопку Настройка ПКС
      2. В открывшейся форме нажать Автосопоставление . Сопоставятся свойства “ИНН”, “КПП”, “Наименование”, “НаименованиеПолное”, “ДополнительнаяИнформация”, “ЮридическоеФизическоеЛицо”
      3. и закрыть форму настройки правил конвертации свойств
  5. Нажать кнопку Записать и закрыть .

Шаг 2. Правило конвертации для загрузки контрагентов в БП

  1. Открыть настройку правил обмена для конвертации БП.
  2. Перейти на закладку Правила конвертации объектов.
  3. Создать новое правило конвертации и заполнить данные на закладке Основные сведения:
    1. Идентификатор правила : “Справочник_Контрагенты_Получение”,
    2. Объект конфигурации : “СправочникСсылка.Контрагенты”,
    3. Объект формата : “Справочник.Контрагенты”,
    4. Область применения : Для получения.
  4. Нажать кнопку Записать и перейти на закладку Идентификация . Указать способ идентификации «По уникальному идентификатору».
  5. Перейти на закладку Правила конвертации свойств
    1. Воспользоваться сервисом автоматического сопоставления свойств:
      1. Нажать кнопку Настройка ПКС
      2. В открывшейся форме нажать Автосопоставление . Сопоставятся свойства “ИНН”, “КПП”, “Наименование”, “НаименованиеПолное”, “ДополнительнаяИнформация”, “ЮридическоеФизическоеЛицо”.
      3. Сохранить результат автоматического сопоставления & нажать кнопкуСоздать правила конвертации свойств и закрыть форму настройки правил конвертации свойств.
    2. Вручную добавить правило конвертации свойства для ОКПО (свойство конфигурации & “КодПоОКПО”, свойство формата & “ОКПО”).
    3. Позже потребуется вернуться к правилам конвертации свойств, чтобы заполнить правило конвертации свойства для свойства “ЮридическоеФизическоеЛицо”, которое является перечислением.
  6. Перейти на закладку ПередЗаписьюПолученныхДанных и написать алгоритм для заполнения страны регистрации нового контрагента. Алгоритм содержит следующий текст: «ПолученныеДанные.СтранаРегистрации = Справочники.СтраныМира.Россия;».
  7. Нажать кнопку Записать и закрыть .

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

  1. УП или БП )
  2. Перейти на закладку Правила конвертации предопределенных данных
  3. Создать новое правило конвертации и заполнить его свойства:
    1. Идентификатор правила : “Перечисление_ЮридическоеФизическоеЛицо”
    2. Объект конфигурации : “ПеречислениеСсылка.ЮридическоеФизическоеЛицо”
    3. Объект формата : “ЮридическоеФизическоеЛицо”
    4. Область применения : для отправки и получения
    5. В табличном поле заполнить соответствия значений перечисления конфигурации и формата: “ФизическоеЛицо” & “ФизическоеЛицо” и “ЮридическоеЛицо” & “ЮридическоеЛицо”
    6. Нажать кнопку Записать и закрыть
  4. Указать новое правило в правиле конвертации свойства “ЮридическоеФизическоеЛицо” справочника Контрагенты
    1. Перейти на закладку Правила конвертации объектов
    2. Контрагенты , открыть форму правила
    3. Перейти на закладку Правила конвертации свойств и найти правило для свойства “ЮридическоеФизическоеЛицо”
    4. Открыть форму правила конвертации свойства и указать в нем правило конвертации объекта & “Перечисление_ЮридическоеФизическоеЛицо”.
    5. Сохранить внесенные изменения

Этап 5. Создание правил обработки данных

Порядок действий одинаков для обоих конвертаций.

  1. Открыть настройку правил обмена для конвертации (УП или БП )
  2. Перейти на закладку Правила конвертации объектов
  3. Найти правило конвертации справочника Контрагенты , открыть форму правила
  4. Нажать кнопку Создать на основании & Правило обработки данных
  5. В созданном правиле обработки данных проверить заполнившиеся автоматически свойства:
    1. Идентификатор правила & указать такой же как для правила обработки данных (“Справочник_Контрагенты_Отправка” либо “Справочник_Контрагенты_Получение”)
    2. Область применения & такая же как для правила обработки данных
    3. Объект выборки :
      1. для конвертации УП & “СправочникСсылка.Контрагенты”
      2. для конвертации БП & “Справочник.Контрагенты”
    4. Правило конвертации объекта & ссылка на правило конвертации объекта.
  6. Нажать кнопку Записать и закрыть.

Этап 6. Получение модулей менеджера обмена данными

Модуль менеджера обмена данными необходим для обмена данными между конфигурациями в соответствии с настроенными в КД 3.0 правилами.

Порядок действий одинаков для обеих конвертаций:

  1. Открыть информационную базу УП или БП в режиме “Конфигуратор”. Найти в дереве метаданных общий модуль МенеджерОбменаЧерезУниверсальныйФормат и открыть его для редактирования. Модуль должен быть пустым.
  2. Открыть информационную базу КД 3.0 в режиме “Предприятие”.
  3. Перейти в раздел Конвертации и выбрать команду Выгрузка модуля.
  4. В открывшейся форме указать соответствующую конвертацию и нажать кнопку Выгрузить . Модуль будет скопирован в буфер обмена.
  5. Перейти в конфигуратор информационной базы УП или БП и вставить содержимое буфера обмена в общий модуль МенеджерОбменаЧерезУниверсальныйФормат.
  6. Сохранить конфигурацию.

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

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

Эффективная работа программ 1С Предприятие 8.3 обусловлена правильностью настройки обмена данными между ними, то есть выгрузки и загрузки справочников, а также другой информации. В некоторых ситуациях достаточно воспользоваться обработкой «Универсальный обмен данными XML» или имеющимися типовыми правилами переноса, к примеру, при переходе с одной редакции программ на другую. Они могут быть встроены в программу с определенным списком правил обмена или находиться в папке установленного обновления. Например, AccountingBase («Бухгалтерия», базовая версия) и там находится папка «Обмен данными».

Рис.1

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

Для описания метаданных используется внешняя обработка MD83Exp.epf – для продуктов на платформе «1С:Предприятие 8.3» (управляемое приложение), MD82Exp.epf – для обычного приложения, в формате XML-файла. Обычно файл обработки располагаются в каталоге шаблонов, куда установлена конфигурация. К примеру, C:\Program Files\1cv8\tmplts\1c\Conversion\3_0_5_3\. В нашем примере используется «1С:Конвертация данных, ред. 3.0» (релиз 3.0.5.3).



Рис.2

Подготовка файла конвертации заключается в формировании XML-файла правил обмена. Рассмотрим на небольшом примере ход его создания.

Шаг 1. Программу можно скачать с сайта ИТС или установить с диска ИТС. Предположим, нам необходимо выгрузить справочник «Контрагенты» из «Бухгалтерии» в «УТ 8.3». Первая программа у нас – «База-источник», а вторая – «База приемник». Отметим, что обмен настраивается не только между базами 8.3, но и между 7.7 и 8.3 и другими.

Шаг 2. Выгружаем в файл XML структуру метаданных баз, задействованных в обмене, с помощью обработки MD83Exp.epf. Для этого в «Базе-источнике» и «Базе-приемнике» в режиме «1С Предприятие» открываем указанную обработку и выгружаем с ее помощью структуру конфигураций, указав имя формируемого файла. Для примера, так и назовем файлы – «База источник» и «База приемник».



Рис.3



Рис.4


Рис.5

Шаг 3. Выполняем экспорт xml-схемы формата обмена. Это файл с расширением «xsd». Получить его можно и из «Источника», и из «Приемника». Для этого откроем информационную базу в режиме «Конфигуратор» («Открыть конфигурацию»), в дереве метаданных раздел «Общие» и подраздел XDTO-пакеты.


Рис.6

Найдем строки с именем «EnterpriseData» (разные цифры – это разные версии формата) и, нажав правой кнопкой мышки, выберем команду «Экспорт XML-схемы».


Рис.7



Рис.8


Рис.9

Шаг 4. Добавляем структуру базы выгруженных конфигураций (источника и приемника) в базу «1С:Конвертация данных». Для этого в пункте меню «Конфигурация» для каждого сформированного файла (источник и приемник) выполняем «Загрузку структуры конфигурации».



Рис.10

Указываем путь к нашему файлу, способ загрузки выбираем – «В новую версию конфигурации», и нажимаем кнопку «Выполнить загрузку».



Рис.11



Рис.12

После загрузки файлов, если мы зайдем в раздел меню «Конфигурации», мы увидим две наших загруженных конфигурации.



Рис.13



Рис.14

Шаг 5. Загружаем структуры формата обмена. В пункте меню «Формат данных» выбираем команду «Загрузка структуры формата».



Рис.15

Указываем ранее выгруженный файл и нажимаем кнопку «Выполнить загрузку».



Рис.16

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



Рис.17

Шаг 6. Создание конвертации. Для выполнения поставленной нами задачи, создаем две конвертации. Первая – для выгрузки справочников «Сотрудники» и «Контрагенты» из «Бухгалтерии», а вторая – для загрузки в «УТ». Перейдем в меню «Конвертации».



Рис.18

Для каждой операции указываем наименование, например – «Выгрузка из БП», «Загрузка в УТ», название – БухгалтерияПредприятия, УправлениеТорговлей и версию формата (который мы загрузили, в нашем примере 1.6).



Рис.19



Рис.20

Шаг 7.



Рис.21

Открыв отдельно каждую операцию, настроим ее. На закладке «Правила конвертации объектов» нажимаем кнопку «Создать».

Рис.22

На закладке «Основные сведения» указываем идентификатор нашего правила (например, Справочник_Контрагенты_Выгрузка), объект конфигурации и объект формата. Область применения – «Для отправки».



Рис.23



Рис.24

Жмем «Автосопоставление», а нажатием кнопки «Создать правила конвертации свойств» сохраняем результат.



Рис.25



Рис.26



Рис.27

При необходимости другие поля настраиваются для конвертации вручную.

Шаг 8. Аналогично настраивается правило конвертации для загрузки, в нашем примере в «Управление торговлей». Обращаем внимание, что область применения – «Для получения».



Рис.28

На закладке «Правила конвертации свойств» выполняем автосопоставление и, нажав кнопку «Создать правила конвертации свойств», сохраняем результат.



Рис.29

Шаг 9. В обоих созданных правилах конвертации создаем правило конвертации предопределенных данных, перейдя на одноименную закладку, нажав кнопку «Создать», при этом сопоставив значения в таблице из конфигурации и формата. Область применения – «Для получения и отправки».



Рис.30



Рис.31



Рис.32

Указываем новое правило конвертации свойства «ЮридическоеФизиескоеЛицо» для нашего справочника. Откроем правило конвертации объекта «Справочник_Контрагенты_Выгрузка».



Рис.33

На закладке «Правила конвертации свойств» добавим правило конвертации свойства, указав в нем «Перечисление_ЮридическоеФизическоеЛицо».



Рис.34



Рис.35

Действие аналогично и для второго правила «Справочник_Контрагнеты_Загрузка».



Рис.36

Шаг 10. Создаем правило обработки данных. Действия одинаковы для обоих созданных нами правил. Перейдя в правило конвертации, нажимаем кнопку «Создать на основании» - «Правило обработки данных».



Рис.37

Данные в него попадают автоматически.



Рис.38



Рис.39



Рис.40

Шаг 11. Выгрузить модуль менеджера обмена, или в правиле конвертации, нажав «Сохранить модуль менеджера обмена», или через пункт «Конвертация» - «Выгрузка модуля».

Рис.41



Рис.42



Рис.43

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



Рис.44

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

Редакция конфигурации «Конвертация данных 3.0» – новая, но прогрессивная технология упрощения обмена между конфигурациями, используя универсальный формат обмена EnterpriseData.

Есть дописанная БД 1С Управление Торговлей (далее УТ) редакции 10.2 на платформе 8.1.
И есть стандартная БД 1С Бухгалтерия на платформе 8.3.

Задача:

Наладить обмен данными между базами.

Решение:

Установил 1С Конвертация данных, редакция 2.1.
Загрузил.
Запускаю "Стартовый помощник" (рис.1).

1. Далее.
2. Выбираю "Создать новые правила обмена данными (с нуля)". Далее.
3. На третьем шаге программа просит указать конфигурации источника и приемника.
Создаю конфигурацию источника (1С УТ):
- так как у меня 1С УТ на платформе 8.1, то с диска ИТС беру внешнюю обработку MD81Exp.epf (ее можно скачать) .
- открываю 1С УТ. Файл --> Открыть --> MD81Exp.epf .

Указываю файл, в который будет выгружаться информация о структуре метаданных. Он должен быть в формате XML.

Нажимаю кнопку "Выгрузить".

Аналогично проделываю все тоже самое с базой приемником. С 1С Бухгалтерией 8.3. Только для нее беру внешнюю обработку MD83Exp.epf (ее можно скачать) .

Перехожу обратно в 1С Конвертация данных.

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

4. На четвертом шаге выбираю пункт "Автоматически создать все возможные правила обмена данными".

Теперь перед нами открылось новое окно. Созданы правила конвертации объектов. Нужно создать правила выгрузки данных. Для этого перехожу на вторую вкладку "Правила выгрузки данных" и нажимаю кнопку "Создать правила выгрузки".

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

Проблема миграции данных (речь сугубо о продуктах компании 1С) из одного решение в другое возникла не вчера. Компания «1С» прекрасно понимает, с какими трудностями сталкиваются разработчики во время создания миграций, поэтому всячески старается помогать инструментами.

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

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

Рассмотрим некоторые из них:

  • обмен через текстовые файлы;
  • использование планов обмена;
  • и т.д.

У каждого из них свои плюсы и минусы. Если резюмировать, то главным минусом будет – многословность. Самостоятельная реализация алгоритмов миграции чревата существенными временными затратами, а также долгим процессом отладки. Про дальнейшее сопровождение подобных решений даже говорить не хочется.

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

Конвертация данных - типовое решение, самостоятельная конфигурация. Любой пользователь, обладающий подпиской “ИТС:Проф” может совершенно бесплатно загрузить этот пакет с сайта поддержки пользователей или диска ИТС. Установка выполняется стандартным способом - как и все остальные типовые решения от 1С.

Теперь немного о плюсах решения. Начнем с самого главного - универсальность. Решение не заточено на определенные конфигурации/версии платформы. Одинаково хорошо работает как с типовыми конфигурациями, так и самописными. Разработчики получают в распоряжение универсальную технологию и стандартизированный подход к созданию новых миграций. Универсальность решения позволяет подготавливать миграции даже для отличных от «1С:Предприятие» платформ.

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

Третьим плюсов я бы отметил отсутствие ограничений на дистрибуцию данных. Разработчик сам выбирает способ доставки данных в конфигурацию приемник. Из коробки доступно два варианта: выгрузка в xml файл и прямое соединение с информационной базой (COM/OLE).

Изучаем архитектуру

Мы уже знаем, конвертация данных способна творить чудеса, но пока не совсем понятно, в чем же выражаются технические плюсы. Первое, что необходимо усвоить - в основе любой миграции данных (конвертации) лежат правила обмена. Правила обмена - обычный xml файл с описанием структуры, в которую будут выгружаться данные из ИБ. Сервисная обработка, осуществляющая выгрузку/загрузку данных, анализирует правила обмена и на их основании выполняет выгрузку. Во время загрузки происходит обратный процесс.

Конфигурация “КД” – своего рода визуальный конструктор, с помощью которого разработчик создает правила обмена. Выполнять выгрузку данных она не умеет. За это отвечают дополнительные внешние сервисные обработки, входящие в дистрибутив КД. Их несколько (XX в имени файла - номер версии платформы):

  • MDXXExp.epf - обработка позволяет выгружать описание структуры информационной базы в xml файл. Описание структуры загружается в КД для дальнейшего анализа и создания правил обмена.
  • V8ExchanXX.epf - осуществляет выгрузку/загрузку данных из информационной базы в соответствии с правилами обмена. В большинстве типовых конфигураций обработка присутствует из коробки (см. пункт меню “Сервис”). Обработка универсальна и не привязывается к каким-то определенным конфигурациям/правилам.

Хорошо, теперь на основании всего вышесказанного, определим этапы разработки новой конвертации:

  1. Определение задачи. Необходимо четко понимать какие данные требуется переносить (из каких объектов конфигурации) и самое главное куда переносить.
  2. Подготовка описания структур конфигураций (Источника/Приемника) для последующей загрузки в КД. Задача решается сервисной обработкой MDXXExp.epf.
  3. Загрузка подготовленных описаний структур в ИБ.
  4. Создание правил обмена при помощи визуальных средства КД.
  5. Выполнение выгрузки/загрузки по созданным правилам конвертации данных путем использования обработки V8ExchanXX.epf.
  6. Отладка правил обмена (при необходимости).

Простейшая конвертация

Для демонстрации нам потребуется две развернутые конфигурации. Я решил остановиться на варианте: “Управление торговлей” 10-й редакции и небольшим самописным решением. Задача будет заключаться в переносе данных из типовой конфигурации «УТ». Для краткости назовем самописное решение “Приемник”, а управление торговлей “Источником”. Решать задачу начнем с переноса элементов справочника «Номенклатура».

Первым делом взглянем на схему конвертации данных и перечитаем список действий, которые необходимо проделать. Затем запускаем конфигурацию “Источник” и открываем в ней сервисную обработку MD82Exp.epf.

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

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

Некоторые документы (особенно в типовых конфигурациях) формируют движения по множеству регистров. Выгрузка всего этого хозяйства сделает результирующий XML файл чересчур большим. Это может затруднить последующую транспортировку и загрузку в базу приемник. Чем больше файл с данными, тем больше потребуется оперативной памяти для его обработки. За свое практику мне довелось столкнуться с неприлично большими файлами выгрузки. Такие файлы напрочь отказывались разбираться стандартными средствами.

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

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

В окне справочника нажмем кнопку “Добавить ” и в появившемся окне выберем файл с описанием конфигурации. Отмечаем флажок “Загрузить в новую конфигурацию” и кликаем по кнопке “Выполнить загрузку”. Аналогичные действия проделываем с описанием структуры второй конфигурации.

Теперь все готово для создания правил обмена. В главном меню КД выбираем “Справочники” -> “Конвертации”. Добавляем новый элемент. В окне создания новой конвертации требуется указать: конфигурацию источник (выбираем УТ) и конфигурацию приемник (выбираем «Приемник»). Далее открываем вкладку “Дополнительно” и заполняем следующие поля:

  • имя файла правил обмена - под таким именем будут сохраняться созданные правила обмена. Имя файла можно менять в любое время, но выгодней задать его сейчас. В будущем это сэкономит время. Правила для демонстрационного примера я назвал: «rules-ut-to-priemnik.xml».
  • наименование - название конвертации. Название может быть абсолютно любым, я ограничился “Демо. УТ в Приемник”.

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

Сразу расставим точки над “и”. Ничего серьезного мастер сгенерировать не сможет. Однако, со счетов эту возможность сбрасывать не стоит. Если необходимо наладить обмен между идентичными конфигурациями, то услуги мастера будут весьма кстати. Для нашего примере предпочтительней ручной режим.

Рассмотрим подробней окно “Настройки правил обмена”. Интерфейс может показаться слегка запутанным - большое количество вкладок, напичканных элементами управления. На самом деле все не так сложно, к этому безумству начинаешь привыкать через несколько часов работы с приложением.

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

Во второй половине вкладки “Правила конвертации объектов” расположена дополнительная панель с двумя вкладками: “Конвертация свойств” и “Конвертация значений ”. Первая будет отбирать свойства (реквизиты) выбранного объекта, а вторая необходима для работы с предопределенными значениями (например, предопределенные элементы справочников или элементы перечисления).

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

Для экономии места воспользуемся первым вариантом. В окне мастера снимаем флажки с группы “Документы ” (нас интересуют только справочники) и раскрываем группу “Справочники ”. Внимательно пролистываем список и смотрим названия справочников, которые можно сопоставить.

В моем случае таких справочников три: Номенклатура, Организации и Склады. Есть еще справочник Клиенты, выполняющий ту же самую смысловую нагрузку, что и “Контрагенты ” из конфигурации “УТ ”. Правда, мастер не смог их сопоставить в силу отличных имен.

Исправить эту недоработку мы можем самостоятельно. Находим в окне «Соответствия объектов » справочник «Клиенты », а в колонке «Источник» выбираем справочник «Контрагенты». Затем устанавливаем флажок в колонке «Тип» и нажимаем кнопку “Ok”.

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

Основа для правил обмена готова. Объекты для синхронизации выбрали мы, а правила для конвертации свойств и правила выгрузки были созданы автоматом. Сохраним правила обмена в файл, затем откроем ИБ “Источник” (в моем случае это УТ) и в ней запустим сервисную обработку V8Exchan82.epf .

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

После завершения процесса выгрузки данных в файл переходим в ИБ “Приемник ”. В ней также открываем обработку V8Exchan82.epf , только на этот раз переходим на закладку “Загрузка данных”. Выбираем файл с данными и нажимаем кнопку “Загрузить”. Все, данные успешно перенесены.

Задачи из реального мира

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

Чтобы не разочароваться в технологии, я приготовил несколько реальных задач. С ними обязательно сталкиваешься при работе. Они не выглядят столь тривиальными и заставляют посмотреть на конвертацию данных под новым углом. Внимательно рассмотрите представленные примеры, и смело используйте как сниппеты при решении реальных задач.

Задача №1. Заполняем отсутствующие реквизиты

Предположим, нам требуется перенести из УТ справочник “Контрагенты ”. В приемнике для этого есть похожий справочник “Клиенты”. Он полностью подходит для хранения данных, но в нем есть реквизит “Организация ”, позволяющий разделять контрагентов по принадлежности к организации. По умолчанию все контрагенты должны относиться к текущей организации (ее можно получить из одноименной константы).

Решений у задачи несколько. Мы рассмотрим вариант заполнения реквизита “Организация ” прямо в базе “Приемник ”, т.е. в момент загрузки данных. Текущая организация хранится в константе, следовательно, нет никаких преград в получении этого значения. Откроем правило конвертации объекта (далее ПКО) “Клиенты ” (двойной клик по объекту) и в мастере настройки правил перейдем до раздела “Обработчики событий”. В списке обработчиков найдем “После загрузки ”.

Опишем код получения текущей организации с последующим присвоением реквизиту. На момент срабатывания обработчика “После загрузки”, объект будет полностью сформирован, но еще не записан в БД. Никто не запрещает нам его изменять по своему усмотрению:

Если НЕ Объект.ЭтоГруппа Тогда Объект.Организация = Константы.ТекущаяОрганизация.Получить(); КонецЕсли;

Перед заполнением реквизита «Организация » обязательно необходимо проверить значение реквизита «ЭтоГруппа ». Для справочника «Клиенты » установлен признак иерархичности, поэтому проверка на группу необходима. Подобным образом выполняется заполнение любых реквизитов. Обязательно прочтите справку по другим параметрам обработчика «ПослеЗагрузки ». Например, среди них есть параметр «Отказ ». Если ему присвоить значение «Истина», то объект в базу записан не будет. Таким образом, появляется возможность ограничивать объекты для записи в момент загрузки.

Задача №2. Реквизиты в регистр сведений

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

Одними визуальными средствами здесь, к сожалению, тоже не справиться. Начнем с малого, создадим новое ПКО для регистра сведений “ВидыКлиентов ”. В качестве источника ничего не указывайте. От автоматического создания правил выгрузки откажитесь.

Следующим шагом сформируем правила выгрузки. Переходим на соответствующую вкладку и нажимаем кнопку “Добавить ”. В окне добавления правил выгрузки заполняем:

  • Способ выборки. Меняем на “Произвольный алгоритм”;
  • Правило конвертации. Выбираем регистр сведений “ВидыКлиентов”;
  • Код (имя) правила. Записываем как “ВыгрузкаВидовКлиентов”;

Теперь необходимо написать код для отбора данных для выгрузки. Здесь нам поможет параметр “ВыборкаДанных ”. В него мы можем поместить коллекцию с подготовленным набором данных. Параметр “ВыборкаДанных ” может принимать различные значения - результат запроса, выборка, коллекции значений и т.д. Мы его инициализируем в виде таблицы значений с двумя колонками: клиент и тип клиента.

Ниже приведен код обработчика событий “Перед обработкой ”. В нем выполняется инициализация параметра “ВыборкаДанных ” с последующим заполнением данными из справочника “Контрагенты ”. Здесь стоит обратить внимание на заполнение колонки “ТипКлиента ”. В “УТ” у нас признаки имеют тип “Булево”, а в получателе перечисление.

На данном этапе мы их не можем привести к нужному типу (его же нет в УТ), поэтому пока оставим в виде строк. Этого можно и не делать, но мне сразу хочется показать, как приводить к отсутствующему типу в источнике.

ВыборкаДанных = Новый ТаблицаЗначений(); ВыборкаДанных.Колонки.Добавить("Клиент"); ВыборкаДанных.Колонки.Добавить("ТипКлиента"); ВыборкаДанныхИзСправочника = Справочники.Контрагенты.Выбрать(); Пока ВыборкаДанныхИзСправочника.Следующий() Цикл Если ВыборкаДанныхИзСправочника.ЭтоГруппа Тогда Продолжить; КонецЕсли; Если ВыборкаДанныхИзСправочника.Покупатель Тогда НоваяСтрока = ВыборкаДанных.Добавить(); НоваяСтрока.Клиент = ВыборкаДанныхИзСправочника.Ссылка; НоваяСтрока.ТипКлиента = "Покупатель"; КонецЕсли; Если ВыборкаДанныхИзСправочника.Поставщик Тогда НоваяСтрока = ВыборкаДанных.Добавить(); НоваяСтрока.Клиент = ВыборкаДанныхИзСправочника.Ссылка; НоваяСтрока.ТипКлиента = "Поставщик"; КонецЕсли; КонецЦикла;

Сохраним правило выгрузки данных и вернемся на вкладку “Правила конвертации объектов ”. Добавим для регистра сведений “ВидыКлиентов ” правила конвертации свойств: клиент и тип клиента. Источник оставим пустым, а в обработчике событий “Перед выгрузкой” пишем:

//Для свойства “Клиент” Значение = Источник.Клиент; //Для свойства “ТипКлиента” Если Источник.Клиент = "Покупатель" Тогда Выражение = "Перечисления.ТипыКлиентов.Покупатель" ИначеЕсли Источник.Клиент = "Поставщик" Тогда Выражение = "Перечисления.ТипыКлиентов.Поставщик"; КонецЕсли;

В листинге выполняется заполнение реквизитов на основе произведенной выборки данных. Клиента мы передаем просто в виде ссылки, а тип клиента записываем в параметр «Выражение ». Данные этого параметра будут интерпретированы в приемнике, и при выполнении реквизит будет заполненным корректным значением из перечисления.

Все, правила обмена готовы Рассмотренный пример получился достаточно универсальным. Подобный подход частенько применяется при переносе данных из конфигураций, созданных на платформе 7.7. Яркий тому пример – перенос периодических реквизитов.

Задача №3. Трюки с табличными частями

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

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

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

ВыборкаДанных = Новый ТаблицаЗначений(); //Здесь будет еще одна табличная часть ВыборкаДанных.Колонки.Добавить(“Товары”); //Здесь тоже будет табличная часть ВыборкаДанных.Колонки.Добавить(“Услуги”); ВыборкаДанныз.Колонки.Добавить(“Ссылка”);

Задача №4. Перенос данных в операцию

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

В конфигурации “БП ” есть универсальный документ “Операция ” и он идеально подходит для формирования большего количества проводок. Вот только одна не задача - документ сделан хитро, и так просто данные в него не перенести.

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

Задача №5. Синхронизация данных по нескольким реквизитам

Мы уже рассмотрели несколько примеров, но до сих пор не поговорили о синхронизации объектов во время переноса. Вот представим, что нам требуется перенести контрагентов и часть из них наверняка имеется в базе приемнике. Как перенести данные и не допустить появления дублей? На этот счет КД предлагает несколько способов синхронизации переносимых объектов.

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

Синхронизировать по уникальному идентификатору - способ надежный, но уместен он далеко не всегда. При объединении справочников “Контрагенты ” (из нескольких разных систем) он мало, чем поможет.

В таких случаях правильней синхронизировать объекты по нескольким критериям. Контрагентов правильней искать по ИНН, КПП, Наименованию или разбивать поиск на несколько этапов.

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

Поля мы вправе выбирать сами. Отметив ИНН, КПП, Наименование мы сразу укажем несколько критериев поиска. Удобно? Вполне, но опять же этого бывает мало. А что ели мы захотим изменять критерии поиска? Например, сначала ищем по связке ИНН+КПП, а если ничего не находим, то начинаем пытать счастье с наименованием.

Подобный алгоритм реализовать вполне по силам. В обработчике события “Поля поиска ” мы можем указать до 10 критериев поиска и для каждого из них определить свой состав полей поиска:

Если НомерВариантаПоиска = 1 тогда СтрокаИменСвойствПоиска = “ИНН, КПП”; ИначеЕсли НомерВариантаПоиска = 2 Тогда СтрокаИменСвойствПоиска = “Наименование”; КонецЕсли;

Решений всегда несколько

Любая задача имеет несколько решений и перенос данных между различными конфигурациями не исключение. Каждый разработчик вправе выбирать свой путь решения, но если вам постоянно приходится разрабатывать сложные миграции данных, то настоятельно рекомендую обратить внимание на конфигурацию “”. Пусть вначале придется инвестировать ресурсы (время) в обучение, но они с лихвой окупятся на первом более-менее серьезном проекте.

На мой взгляд, компания 1С незаслуженно обходит тему применения конвертации данных. За все время существования технологии, по ней вышла всего одна книга: “1С:Предприятие 8. Конвертация данных: обмен между прикладными решениями ”. Книга достаточно старая (2008 г.), но ознакомиться с ней все же желательно.

Знание платформ все же необходимо

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