Как настроить надежный автоматический обмен данными между идентичными базами 1С:ЗУП 3.1

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

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

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

Почему синхронизация через универсальный формат (EnterpriseData) НЕ подходит для ЗУП-ЗУП

Прежде чем перейти к рабочим сценариям, выясним причину, по которой стандартная синхронизация через EnterpriseData (ED) категорически не подходит для связи двух баз ЗУП 3.1:

Для обмена между идентичными базами ЗУП 3.1 необходимо использовать инструменты, которые сохраняют полную структуру метаданных и переносят объекты "один в один" вместе со всеми движениями регистров и GUID.

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

Способ 1. Распределенная информационная база (РИБ)

РИБ — это классический и наиболее монументальный механизм платформы «1С:Предприятие 8». Он создает строгую иерархию баз (главная и подчиненные) и гарантирует абсолютную идентичность конфигураций и данных в рамках заданных правил миграции.

Преимущества РИБ:

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

Подводные камни и специфика ЗУП 3.1:

Специфика ЗУП заключается в очень частом обновлении релизов из-за постоянных изменений в налоговом и трудовом законодательстве РФ. В РИБ процесс обновления строго иерархичен: сначала обновляется главная база, затем файл новой конфигурации передается в подчиненный узел. До тех пор, пока подчиненный узел не применит обновление конфигурации, обмен данными между узлами полностью блокируется платформой. Это требует жесткой организационной дисциплины от администраторов систем.

Также при использовании РИБ с фильтрацией по организациям часто возникает проблема дублирования карточек сотрудников и физических лиц. Если один и тот же человек работает в разных филиалах (разных базах РИБ), то при слиянии данных в главной базе могут появиться "двойники". Эту проблему приходится решать организационными мерами (запрет на создание физлиц в подчиненных узлах) или написанием дополнительных подписок на события для поиска по СНИЛС и ИНН.

Способ 2. Механизм БСП «Обмен без использования правил конвертации»

В составе Библиотеки стандартных подсистем (БСП), на которой построена ЗУП 3.1, существует специальный встроенный механизм для обмена между идентичными конфигурациями. Он работает на базе технологии XDTO-сериализации.

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

Как задействовать этот механизм в ЗУП 3.1:

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

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

Пример кода для программной регистрации изменений конкретного объекта на узле обмена:


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

Этот способ работает быстрее, чем РИБ, и не блокирует работу пользователей при несовпадении релизов конфигураций в базах (хотя сильные различия в структурах реквизитов все же могут вызвать ошибки чтения XML).

Способ 3. Конвертация данных 2.1 (КД 2.1) и автоматизация XML

Если вам не хочется вмешиваться в конфигурацию ЗУП 3.1 даже с помощью расширений, а РИБ кажется слишком тяжеловесным решением из-за частых обновлений, идеальным выбором станет использование классического инструмента «1С:Конвертация данных 2.1».

Поскольку базы абсолютно идентичны, создание правил обмена в КД 2.1 происходит в автоматическом режиме за несколько кликов:

  1. Выгружаем структуру метаданных из ЗУП 3.1 с помощью обработки MD83Exp.epf.
  2. Загружаем структуру в базу «Конвертация данных 2.1».
  3. Создаем новую конвертацию, указав одну и ту же структуру в качестве источника и приемника.
  4. Запускаем автоматический поиск и сопоставление объектов. Платформа сама сопоставит все справочники, документы, реквизиты и табличные части, так как их имена полностью совпадают.
  5. В настройках правил поиска для всех объектов обязательно отмечаем флаг «Находить по уникальному идентификатору (GUID)». Это гарантирует отсутствие дублирования данных.
  6. Сохраняем полученные правила обмена в XML-файл.

Для автоматизации обмена мы можем использовать стандартную обработку ВыгрузкаЗагрузкаДанныхXML83.epf. Процесс обмена можно полностью автоматизировать, настроив запуск 1С в пакетном режиме через планировщик задач операционной системы.

Пример командного файла (bat-скрипта) для автоматической выгрузки данных из базы-источника:


"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" ENTERPRISE /F"D:\1C_Bases\ZUP_Source" /N"Администратор" /P"Пароль" /Execute"D:\Services\ВыгрузкаЗагрузкаДанныхXML83.epf" /C"РежимРаботы;Выгрузка;ФайлВыгрузки;D:\Exchange\data.xml"

Аналогичный скрипт настраивается и для базы-приемника, но с параметром загрузки XML-файла. Такой подход обеспечивает максимальную стабильность: базы полностью независимы, не требуют синхронного обновления релизов, а сам обмен проходит в фоновом режиме в ночное время.

Резюме и сравнительная таблица решений

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

Критерий сравнения РИБ (Способ 1) БСП без правил (Способ 2) КД 2.1 + XML (Способ 3)
Сложность настройки Низкая (встроено в типовую ЗУП) Средняя (требуется создание расширения) Средняя (требуется генерация правил в КД 2.1)
Зависимость от релизов Критическая (полная блокировка при несовпадении) Низкая (возможны ошибки при изменении реквизитов) Минимальная (легко адаптируется обновлением правил)
Контроль уникальности (GUID) Автоматический на уровне платформы Автоматический (прямая сериализация) Настраиваемый (через правила поиска КД 2.1)
Автоматизация по расписанию Встроенная (через регламентные задания) Встроенная (через регламентные задания) Внешняя (через bat-файлы и планировщик ОС)

Выбор конкретного метода зависит от ваших организационных условий. Если вы можете обеспечить одновременное обновление всех баз — используйте проверенный временем РИБ. Если базы администрируются разными людьми и обновляются вразнобой — лучшим выбором станет связка КД 2.1 и автоматической выгрузки XML по расписанию.

← На главную