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