Реализация обмена данными между разнородными конфигурациями 1С — это классическая задача, требующая понимания двух механизмов: планов обмена (для регистрации изменений) и правил конвертации данных (для сопоставления разных структур). В нашем случае мы рассматриваем ситуацию, когда из одной базы выгружаются документы Реализация цемента, Счет на оплату и Приходный кассовый ордер, а во вторую базу должен попасть один тип документа — Платежное поручение входящее.
Разберем этот процесс по шагам, от проектирования архитектуры до настройки автоматического обмена.
Для работы с разнородными базами чаще всего используется связка «План обмена + Конвертация данных 2.1». Проанализируем, почему это удобно. План обмена позволяет нам не выгружать всю базу целиком каждый раз, а отправлять только измененные объекты. Правила конвертации (XML) описывают, как превратить Реализация цемента из источника в нужный объект приемника.
Важный нюанс: поскольку базы разные, прямое копирование данных невозможно. Мы будем использовать обработку Универсальный обмен данными в формате XML, которая умеет работать в режиме обмена по плану обмена.
Для начала нам необходимо запустить конфигурацию «Конвертация данных 2.1». Это основной инструмент для настройки сопоставления объектов. Выполним следующие действия:
MD83Exp.epf выгрузим описание метаданных из обеих баз.Приходного кассового ордера (источник) назначаем приемником Платежное поручение входящее.Уникальному Идентификатору (GUID). Если же справочники (например, Номенклатура или Контрагенты) уже ведутся в обеих базах, настроим поиск по полям ИНН, Наименование или Артикул.Если нам нужно, чтобы при загрузке документ сразу проводился, в ПКО в обработчике ПослеЗагрузки пропишем код:
Объект.Записать(РежимЗаписиДокумента.Проведение);
Теперь перейдем в конфигуратор обеих баз. Нам нужно создать объект метаданных План обмена. Рассмотрим его свойства:
Состав плана обмена: В первой базе в состав включаем наши три документа (ставим галочку Авторегистрация). Во второй базе в состав включаем Платежное поручение входящее. Это позволит системе «записывать» в специальную таблицу изменения именно этих объектов.
Создание узлов: В режиме «1С:Предприятие» создадим два узла:
Важно, чтобы коды узлов в базах зеркально совпадали. В базе А узел-приемник должен иметь код «Б2», а в базе Б этот же узел будет помечен как «Этот узел».
Иногда авторегистрация слишком избыточна. Проанализируем ситуацию: нам могут быть не нужны черновики документов. Чтобы в обмен попадали только проведенные документы, в модуле плана обмена можно использовать обработчик ПриОтправкеДанныхПодчиненному или настроить подписку на событие ПередЗаписью.
Рассмотрим пример кода для подписки на событие, который регистрирует документ на узле обмена только при условии его проведения:
Процедура ПриЗаписиДокументаДляОбмена(Источник, Отказ) Экспорт
Если Источник.Проведен Тогда
ПланыОбмена.ЗарегистрироватьИзменения(УзелПриемник, Источник);
КонецЕсли;
КонецПроцедуры
Выясним, как данные будут перемещаться между базами. Существует несколько вариантов:
Чтобы обмен работал без участия человека, настроим регламентное задание. Оно будет вызывать процедуру выгрузки по расписанию (например, каждые 15 минут). Обработка Универсальный обмен данными в формате XML поддерживает запуск в автоматическом режиме при передаче определенных параметров.
Для чего нужно подтверждение получения? Чтобы очередь регистрации не росла бесконечно. Разберем механизм: когда база Б успешно загрузила файл от базы А, она должна отправить «ответ» (номер сообщения). При получении этого ответа база А очищает таблицу регистрации изменений для всех объектов, которые были успешно переданы.
Практический совет: Будьте готовы к тому, что в разнородных базах часто возникают конфликты аналитики. Например, если в Реализации цемента указана номенклатура, которой нет в базе-приемнике. Чтобы избежать ошибок, в правилах конвертации (ПКО номенклатуры) стоит установить флаг Создавать новый объект, если не найден.
Мы проанализировали процесс настройки обмена. Главное — это четкая последовательность действий: создание правил в КД 2.1 -> настройка состава плана обмена -> регистрация узлов -> автоматизация через регламентные задания. Помните, что в разнородных базах основная сложность кроется в сопоставлении справочников-владельцев и единиц измерения, поэтому правилам поиска в Конвертации Данных стоит уделить особое внимание.