Как настроить автоматический периодический обмен данными между Бухгалтерией 2.0 и Бухгалтерией 3.0?

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

Переход или параллельная работа в конфигурациях «Бухгалтерия предприятия 2.0» (БП 2.0) и «Бухгалтерия предприятия 3.0» (БП 3.0) — классическая задача для технического специалиста 1С. Основная сложность заключается в том, что БП 2.0 базируется на обычных формах, а БП 3.0 — на управляемых, и механизмы синхронизации в них существенно различаются. Разберем подробно, как настроить надежный автоматический обмен с использованием «Конвертации данных 2.1» (КД 2.1).

Механизм обмена через планы обмена и внешнюю обработку

Рассмотрим наиболее гибкий и стабильный способ, который не требует глубокого изменения типового кода конфигураций. Этот метод основан на использовании типовой обработки УниверсальныйОбменДаннымиXML и специально созданного Плана обмена.

Проанализируем общую логику процесса:

  1. В базе-источнике (БП 2.0) создается ПланОбмена, в состав которого включаются все необходимые объекты (документы, справочники).
  2. При изменении объектов в источнике система автоматически регистрирует изменения на узле этого плана обмена.
  3. Регламентное задание в источнике запускает внешнюю обработку, которая выгружает только измененные данные по правилам КД 2.1.
  4. В базе-приемнике (БП 3.0) другое регламентное задание отслеживает появление файла выгрузки и загружает его.

Шаг 1. Настройка Плана обмена в БП 2.0

Для того чтобы система понимала, какие именно данные нужно выгружать, создадим в БП 2.0 новый ПланОбмена (например, с именем ОбменСБП30). Выясним основные настройки:

Шаг 2. Автоматизация выгрузки из источника

Вместо ручного запуска используем возможности командного интерфейса обработки V8Exchan82.epf (для БП 2.0 на платформе 8.2/8.3). Рассмотрим пример кода, который можно поместить в модуль новой внешней обработки, запускаемой по расписанию:


// Параметры для запуска выгрузки
ПутьКПравилам = "C:\Exchange\Rules.xml";
ПутьКФайлуДанных = "C:\Exchange\Data.xml";
УзелОбмена = ПланыОбмена.ОбменСБП30.НайтиПоКоду("001");

Обработка = Обработки.УниверсальныйОбменДаннымиXML.Создать();
Обработка.РежимОбмена = "Выгрузка";
Обработка.ИмяФайлаПравилОбмена = ПутьКПравилам;
Обработка.ИмяФайлаОбмена = ПутьКФайлуДанных;
Обработка.ИспользоватьПланыОбмена = Истина;
Обработка.УзелДляВыгрузкиИзменений = УзелОбмена;
Обработка.ВыполнитьВыгрузку();

Важно помнить: после успешной выгрузки в источнике нельзя сразу снимать регистрацию. Это нужно делать только после подтверждения того, что приемник успешно принял данные. Для упрощения часто используют "файл-флаг" (например, ready_to_load.txt), который создается после завершения выгрузки.

Шаг 3. Загрузка в БП 3.0 и подтверждение

В БП 3.0 (приемнике) мы настраиваем регламентное задание, которое мониторит каталог обмена. Как только обработка видит файл данных и файл-флаг, она запускает загрузку. Посмотрим на алгоритм завершения обмена:

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


// Пример снятия регистрации в источнике (БП 2.0)
ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, НомерОтправленногоСообщения);

Метод прямого COM-соединения

Если базы находятся в одной локальной сети, мы можем обойтись без файлов. В этом случае БП 3.0 будет сама инициировать соединение с БП 2.0. Разберем преимущества этого способа:

Однако помните, что для работы COM-соединения на сервере должна быть установлена платформа 1С той же разрядности (32 или 64 бит), что и сама база, а также корректно зарегистрирована библиотека comcntr.dll.

Особенности настройки правил в КД 2.1 для БП 3.0

При переносе данных в «Бухгалтерию 3.0» нужно учитывать специфику механизмов БСП (Библиотеки стандартных подсистем). Проанализируем критически важные обработчики событий в правилах конвертации объектов (ПКО):

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

Объект.ОбменДанными.Загрузка = Истина;

2. Проведение документов. Если документы должны загружаться проведенными, в ПКО в обработчике ПослеЗагрузки пропишите логику:


Если Объект.Проведен Тогда
    Объект.Записать(РежимЗаписиДокумента.Проведение, РежимОбменаДанными.Загрузка);
КонецЕсли;

3. Поиск объектов. Так как БП 3.0 часто является результатом обновления БП 2.0, уникальные идентификаторы (UUID) объектов могут совпадать. В настройках ПКО установите галочку «Продолжить поиск по полям поиска, если по идентификатору объект не найден». В качестве полей поиска для справочника «Контрагенты» используйте ИНН и КПП, для «Номенклатуры» — Артикул или Наименование.

Обработка удалений

Распространенная ошибка — отсутствие синхронизации удаленных объектов. Чтобы объект, удаленный в БП 2.0, удалился и в БП 3.0, необходимо:

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

Итоги и рекомендации

Подведем итог: для создания надежного автоматического обмена между БП 2.0 и БП 3.0 оптимально использовать комбинацию планов обмена и регламентных заданий. Это обеспечивает гарантированную доставку данных и минимизирует нагрузку на систему, так как передаются только измененные объекты.

Рассмотрим финальный чек-лист:

← На главную