Разработка и внедрение нетиповых механизмов обмена данными в современных конфигурациях «1С», таких как 1С:ERP Управление предприятием или 1С:Бухгалтерия предприятия 3.0, построенных на базе Библиотеки стандартных подсистем (БСП), часто сопровождается трудностями. Одна из наиболее распространенных ошибок, с которой сталкиваются разработчики при интеграции нового плана обмена в общую систему синхронизации, — это критический сбой с текстом «Задано более одной команды с тем же именем». Попытки обойти эту проблему «вслепую» (например, комментированием кода регистрации) приводят к тому, что план обмена просто исчезает из интерфейса настройки синхронизации.
В этой статье мы подробно разберем, почему возникает эта ошибка, как правильно зарегистрировать новый план обмена в программном коде БСП, как настроить правила для одностороннего обмена и почему в современных реалиях стоит отказаться от Конвертации данных 2.1 в пользу Универсального формата (EnterpriseData).
Данная ошибка возникает из-за некорректной настройки общих команд БСП, отвечающих за синхронизацию данных. В составе Библиотеки стандартных подсистем уже предопределен набор общих команд, предназначенных для работы с планами обмена (например, запуск интерактивной синхронизации, просмотр состава отправляемых данных, загрузка правил регистрации объектов и т.д.).
Разработчики, пытаясь заставить свой новый план обмена работать аналогично типовым, совершают критическую ошибку: они создают новые аналогичные общие команды вручную или копируют существующие, что приводит к конфликту имен в пространстве метаданных.
Для исправления этой ситуации выполним следующие шаги:
Общие -> ОбщиеКоманды стандартные команды БСП, связанные с обменом данными. К ним относятся:
СинхронизироватьСинхронизироватьСДополнительнымиПараметрамиСоставОтправляемыхДанныхЗагрузитьПравилаРегистрацииОбъектовСценарииСинхронизацииБП_ERP). Тем самым мы расширяем действие типовой команды на наш новый объект метаданных, избегая дублирования самих команд.Попытка просто закомментировать строку добавления плана обмена в общем модуле для устранения ошибки — это путь в никуда. Да, ошибка исчезает, но система перестает видеть план обмена в списке доступных интеграций. Вернемся к правильному алгоритму программной регистрации.
Во-первых, восстановим регистрацию плана обмена в общем модуле ОбменДаннымиПереопределяемый. В процедуре ПолучитьПланыОбмена обязательно должен присутствовать следующий код:
Процедура ПолучитьПланыОбмена(ПланыОбменаПодсистемы) Экспорт
ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.БП_ERP);
КонецПроцедуры
Во-вторых, БСП при инициализации подсистемы обмена обращается к модулю менеджера регистрируемого плана обмена. Если в модуле менеджера вашего плана обмена БП_ERP отсутствует специальная экспортная процедура настройки, система выдаст ошибку во время выполнения. Откроем модуль менеджера плана обмена и добавим туда обязательный шаблон:
Процедура ПриПолученииНастроек(НастройкиПланаОбмена) Экспорт
// Задаем базовые настройки интеграции с БСП
НастройкиПланаОбмена.ОпределитьНастройкиОбщихКоманд = Истина;
НастройкиПланаОбмена.ИспользоватьОбменДаннымиВРежимеСервиса = Ложь;
КонецПроцедуры
В-третьих, обратим внимание на состав нашего плана обмена. Для корректной работы механизмов сопоставления объектов БСП требует соблюдения следующих правил:
СоответствияОбъектовИнформационныхБаз. Этот регистр отвечает за хранение уникальных идентификаторов (GUID) связанных объектов источника и приемника. Если его не включить, система не сможет сопоставить данные, что приведет к массовому появлению дублей справочников и документов при каждой синхронизации.ПередЗаписьюДокументаДляРегистрации...), которые обращаются к общим модулям подсистемы обмена данными.Рассмотрим ситуацию, когда перед нами стоит задача настроить односторонний обмен, при котором данные выгружаются только из источника (например, 1С:Бухгалтерия предприятия 3.0) в приемник (1С:ERP Управление предприятием). У разработчиков часто возникает вопрос: какие файлы и куда необходимо загружать в конфигураторе и в режиме предприятия?
Даже при полностью одностороннем обмене подсистема БСП в обеих базах требует наличия определенных правил конвертации и регистрации для корректной инициализации сессии обмена:
ExchangeRules.xml), настроенные в программе «Конвертация данных 2.1», а также правила регистрации изменений (файл RegistrationRules.xml), которые определяют условия, при которых документы и справочники должны регистрироваться на узле плана обмена для отправки.ПравилаОбмена — правила для самой ERP. Поскольку обмен односторонний и ERP ничего отправлять назад не будет, эти правила могут представлять собой «пустышку» (содержать только описание структуры метаданных ERP без реальных правил конвертации объектов PKO).ПравилаОбменаКорреспондента — загружаются те самые правила конвертации (ExchangeRules.xml), по которым выгружает данные БП 3.0. Это необходимо, чтобы ERP знала логику десериализации входящего файла.ПравилаРегистрации — можно оставить макет пустым или загрузить базовую структуру правил регистрации, так как регистрация объектов на узле ERP производиться не будет.Практический совет: Чтобы избежать постоянного изменения конфигурации и облегчить процесс последующих обновлений «1С», не зашивайте файлы правил XML непосредственно в макеты конфигуратора. Современная БСП позволяет загружать правила конвертации и регистрации динамически в режиме «1С:Предприятие» прямо через форму узла синхронизации данных (кнопка «Загрузить правила»).
Разработка собственного плана обмена на Конвертации данных 2.1 (КД 2.1) для обмена между типовыми конфигурациями (такими как ERP и БП) — это устаревший подход, несущий в себе серьезные долгосрочные риски для стабильности бизнес-процессов.
Проанализируем основные недостатки использования КД 2.1 в современных реалиях:
Для решения задачи переноса небольшого количества объектов (например, 5 видов документов и связанных справочников) гораздо эффективнее использовать встроенный Универсальный формат (EnterpriseData) и Конвертацию данных 3.0.
Выясним, в чем преимущества данного подхода и как его реализовать:
СинхронизацияДанныхЧерезУниверсальныйФормат. Он поддерживает обмен через файлы, FTP, электронную почту или веб-сервисы, не требуя COM-соединений.ПриОтправкеДанных, а прием — на стороне ERP через процедуру ПриПолученииДанных.Использование Универсального формата гарантирует, что ваши конфигурации останутся на полной поддержке поставщика, а плановые обновления конфигураций «1С» не приведут к остановке регулярного обмена данными между базами.