Переход или параллельная работа в конфигурациях «Бухгалтерия предприятия 2.0» (БП 2.0) и «Бухгалтерия предприятия 3.0» (БП 3.0) — классическая задача для технического специалиста 1С. Основная сложность заключается в том, что БП 2.0 базируется на обычных формах, а БП 3.0 — на управляемых, и механизмы синхронизации в них существенно различаются. Разберем подробно, как настроить надежный автоматический обмен с использованием «Конвертации данных 2.1» (КД 2.1).
Рассмотрим наиболее гибкий и стабильный способ, который не требует глубокого изменения типового кода конфигураций. Этот метод основан на использовании типовой обработки УниверсальныйОбменДаннымиXML и специально созданного Плана обмена.
Проанализируем общую логику процесса:
ПланОбмена, в состав которого включаются все необходимые объекты (документы, справочники).Для того чтобы система понимала, какие именно данные нужно выгружать, создадим в БП 2.0 новый ПланОбмена (например, с именем ОбменСБП30). Выясним основные настройки:
Авторегистрация.Вместо ручного запуска используем возможности командного интерфейса обработки V8Exchan82.epf (для БП 2.0 на платформе 8.2/8.3). Рассмотрим пример кода, который можно поместить в модуль новой внешней обработки, запускаемой по расписанию:
// Параметры для запуска выгрузки
ПутьКПравилам = "C:\Exchange\Rules.xml";
ПутьКФайлуДанных = "C:\Exchange\Data.xml";
УзелОбмена = ПланыОбмена.ОбменСБП30.НайтиПоКоду("001");
Обработка = Обработки.УниверсальныйОбменДаннымиXML.Создать();
Обработка.РежимОбмена = "Выгрузка";
Обработка.ИмяФайлаПравилОбмена = ПутьКПравилам;
Обработка.ИмяФайлаОбмена = ПутьКФайлуДанных;
Обработка.ИспользоватьПланыОбмена = Истина;
Обработка.УзелДляВыгрузкиИзменений = УзелОбмена;
Обработка.ВыполнитьВыгрузку();
Важно помнить: после успешной выгрузки в источнике нельзя сразу снимать регистрацию. Это нужно делать только после подтверждения того, что приемник успешно принял данные. Для упрощения часто используют "файл-флаг" (например, ready_to_load.txt), который создается после завершения выгрузки.
В БП 3.0 (приемнике) мы настраиваем регламентное задание, которое мониторит каталог обмена. Как только обработка видит файл данных и файл-флаг, она запускает загрузку. Посмотрим на алгоритм завершения обмена:
После успешной загрузки в БП 3.0 рекомендуется сформировать файл-подтверждение (квитанцию), содержащий номер сообщения. Источник, прочитав этот файл, очистит таблицу регистрации изменений для объектов, которые были успешно переданы. Это предотвратит бесконечную выгрузку одних и тех же данных.
// Пример снятия регистрации в источнике (БП 2.0)
ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, НомерОтправленногоСообщения);
Если базы находятся в одной локальной сети, мы можем обойтись без файлов. В этом случае БП 3.0 будет сама инициировать соединение с БП 2.0. Разберем преимущества этого способа:
Однако помните, что для работы COM-соединения на сервере должна быть установлена платформа 1С той же разрядности (32 или 64 бит), что и сама база, а также корректно зарегистрирована библиотека comcntr.dll.
При переносе данных в «Бухгалтерию 3.0» нужно учитывать специфику механизмов БСП (Библиотеки стандартных подсистем). Проанализируем критически важные обработчики событий в правилах конвертации объектов (ПКО):
1. Отключение лишних проверок. Чтобы при загрузке не срабатывали подписки на события, которые могут замедлить процесс или выдать ошибку, в обработчике ПередЗагрузкой или ПриЗагрузке установите флаг:
Объект.ОбменДанными.Загрузка = Истина;
2. Проведение документов. Если документы должны загружаться проведенными, в ПКО в обработчике ПослеЗагрузки пропишите логику:
Если Объект.Проведен Тогда
Объект.Записать(РежимЗаписиДокумента.Проведение, РежимОбменаДанными.Загрузка);
КонецЕсли;
3. Поиск объектов. Так как БП 3.0 часто является результатом обновления БП 2.0, уникальные идентификаторы (UUID) объектов могут совпадать. В настройках ПКО установите галочку «Продолжить поиск по полям поиска, если по идентификатору объект не найден». В качестве полей поиска для справочника «Контрагенты» используйте ИНН и КПП, для «Номенклатуры» — Артикул или Наименование.
Распространенная ошибка — отсутствие синхронизации удаленных объектов. Чтобы объект, удаленный в БП 2.0, удалился и в БП 3.0, необходимо:
Объект.Удалить() или помечать на удаление.Подведем итог: для создания надежного автоматического обмена между БП 2.0 и БП 3.0 оптимально использовать комбинацию планов обмена и регламентных заданий. Это обеспечивает гарантированную доставку данных и минимизирует нагрузку на систему, так как передаются только измененные объекты.
Рассмотрим финальный чек-лист: