Как настроить обмен справочниками (Физические лица, Должности, Структура предприятия) между 1С:ЗУП 3.1 и 1С:Документооборот 2.1

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом Управленческий учет IT и автоматизация бизнеса
← На главную

При автоматизации совместной работы конфигураций «1С:Зарплата и управление персоналом 3.1» (ЗУП) и «1С:Документооборот 2.1» (ДО) часто возникает необходимость синхронизации основных кадровых справочников. Это три ключевых справочника: ФизическиеЛица, Должности и СтруктураПредприятия.

Многие начинающие специалисты сталкиваются с дилеммой: написать собственную обработку выгрузки/загрузки, использовать COM-соединение, настроить правила через «1С:Конвертация данных» или попытаться задействовать механизмы бесшовной интеграции. Проанализируем ситуацию, разберем архитектурные особенности систем и выберем наиболее стабильное техническое решение.

Анализ архитектурных различий справочников в ЗУП и ДО

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

Сравнение технологий интеграции

Рассмотрим подробнее три основных подхода к реализации этой задачи, выделив их преимущества и недостатки.

1. Ручной ввод данных

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

2. COM-соединение (прямое подключение к базе)

Этот способ привлекает разработчиков высокой скоростью реализации «в моменте». Написание обработки, которая напрямую подключается из ЗУП к ДО через COM и перезаписывает элементы, занимает минимум времени.

Пример кода инициализации COM-соединения:


ПараметрыПодключения = "Srvr=""Server1C"";Ref=""DO_Base"";Usr=""Администратор"";Pwd=""Пароль"";";
Connector = Новый COMОбъект("V83.COMConnector");
Попытка
    СоединениеДО = Connector.Connect(ПараметрыПодключения);
Исключение
    ЗаписьЖурналаРегистрации("Обмен_ЗУП_ДО", УровеньЖурналаРегистрации.Ошибка, , , 
        "Ошибка подключения: " + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
    Возврат;
КонецПопытки;

Почему COM-соединение использовать не рекомендуется: Оно крайне нестабильно при работе в клиент-серверном варианте на 64-битных операционных системах. Постоянно возникают проблемы с регистрацией библиотеки comcntr.dll, разрядностью процессов сервера приложений 1С, а также падением сессий при сетевых микросбоях. Кроме того, COM-соединение жестко привязывает вас к версии платформы 1С на обоих серверах.

3. Бесшовная интеграция (Веб-сервисы)

Штатный механизм бесшовной интеграции ЗУП и ДО работает через публикацию веб-сервиса DMService на веб-сервере (IIS или Apache). Этот механизм великолепен для работы с документами прямо из интерфейса ЗУП, но он не предназначен для фонового автоматического наполнения справочников структуры и должностей в автоматическом режиме «из коробки» без серьезного переписывания веб-сервиса.

4. Обмен XML/XDTO через Конвертацию данных (КД 2.1) — Рекомендуемый выбор

Использование технологии создания правил обмена в «1С:Конвертация данных 2.1» совместно с регистрацией изменений на узлах планов обмена — это наиболее надежный, промышленный стандарт интеграции.

Реализация обмена с помощью Конвертации данных 2.1 по шагам

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

Шаг 1: Подготовка метаданных

Для начала нам необходимо выгрузить структуры метаданных обеих конфигураций (ЗУП и ДО) с помощью обработки MD83Exp.epf, которая идет в комплекте с шаблоном конфигурации «Конвертация данных 2.1».

Шаг 2: Создание правил обмена (ПКО)

Запустим базу «Конвертация данных 2.1» и создадим новую настройку правил обмена, указав конфигурацию-источник (ЗУП) и конфигурацию-приемник (ДО).

Создадим три правила конвертации объектов (ПКО):

  1. ПКО ФизическиеЛица: Настроим сопоставление реквизитов (ФИО, ДатаРождения, ИНН, СНИЛС). В качестве полей поиска (синхронизации) обязательно укажем ИНН или СНИЛС, так как поиск только по наименованию может привести к дублированию однофамильцев.
  2. ПКО Должности: Настроим перенос наименования должности. Поиск установим по наименованию.
  3. ПКО СтруктураПредприятия: Поскольку в ЗУП используется справочник Подразделения (или ПодразделенияОрганизаций), а в ДО — СтруктураПредприятия, настроим ПКО с источником СправочникСсылка.ПодразделенияОрганизаций и приемником СправочникСсылка.СтруктураПредприятия. Позаботимся о сохранении иерархии подразделений, сопоставив реквизит Родитель.

Шаг 3: Настройка плана обмена в ЗУП

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

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

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


Процедура ПриЗаписи(Отказ)
    Если Не ОбменДанными.Загрузка Тогда
        УзелОбмена = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоКоду("ДО");
        Если ЗначениеЗаполнено(УзелОбмена) Тогда
            ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, ЭтотОбъект.Ссылка);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Шаг 4: Настройка регламентного задания для автоматического обмена

Разберем, как автоматизировать этот процесс, чтобы он выполнялся незаметно для пользователей один раз в сутки (например, ночью):

  1. В ЗУП настроим регламентное задание, которое будет использовать стандартную обработку выгрузки данных по правилам обмена. Оно будет выгружать файлы изменений во временную сетевую папку или на защищенный FTP-ресурс.
  2. В ДО настроим аналогичное регламентное задание, которое будет проверять наличие нового файла обмена в папке/FTP по расписанию и загружать его.

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

Важные организационные и технические нюансы

← На главную