При интеграции систем на платформе «1С:Предприятие 8.3» разработчики часто сталкиваются с необходимостью настройки обмена данными по старой, но крайне популярной технологии «Конвертация данных 2.1» (КД 2.1). В современных конфигурациях, использующих Библиотеку стандартных подсистем (БСП) (например, «Бухгалтерия предприятия 3.0», «ERP Управление предприятием», «Управление торговлей 11»), механизмы обмена стандартизированы. Простой конфигурационной настройки плана обмена часто недостаточно для того, чтобы обмен заработал корректно. Выясним причину, почему БСП может «не видеть» правила обмена, и разберем по шагам весь процесс подключения правил конвертации и регистрации.
Для того чтобы БСП распознала ваш новый план обмена как полноценного участника синхронизации данных, необходимо выполнить ряд обязательных шагов в среде разработки. Рассмотрим подробнее, какие именно объекты метаданных и общие модули нам потребуется изменить.
Во-первых, создаем новый план обмена в Конфигураторе (например, с именем БП_ERP). В свойствах плана обмена перейдем на вкладку «Состав». Здесь кроется критически важный нюанс: в состав плана обмена в обязательном порядке должен быть включен регистр сведений СоответствияОбъектовИнформационныхБаз. Для этого регистра свойство «Авторегистрация» обязательно переводим в значение «Запретить». Этот регистр необходим БСП для сопоставления ссылок между базами-корреспондентами.
Во-вторых, для всех остальных объектов (справочников, документов), данные которых мы планируем переносить, авторегистрацию также рекомендуется установить в положение «Запретить». В БСП регистрацией изменений управляют правила регистрации (через подписки на события), поэтому авторегистрация платформы здесь будет только мешать.
В-третьих, необходимо связать наш план обмена с общими командами управления правилами. Находим в конфигурации следующие общие команды:
ЗагрузитьПравилоКонвертацииОбъектовЗагрузитьПравилоРегистрацииОбъектовВ свойстве «Тип параметра команды» этих команд добавляем ссылку на наш новый план обмена ПланОбменаСсылка.БП_ERP.
Затем переходим в общий модуль ОбменДаннымиПредопределяемый и находим процедуру ПолучитьПланыОбменаПодсистемы (или аналогичную в вашей версии БСП). Нам нужно программно зарегистрировать наш план обмена в подсистеме. Добавим следующую строку кода:
Процедура ЗаполнитьПланыОбмена(ПланыОбменаПодсистемы) Экспорт
ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.БП_ERP);
КонецПроцедуры
Проанализируем ситуацию: почему даже после выполнения указанных выше шагов БСП может выдавать ошибки при попытке настроить синхронизацию? Ответ кроется в модуле менеджера нашего плана обмена. БСП требует, чтобы каждый план обмена возвращал свои базовые настройки через экспортный метод. Без этого подсистема обмена данными просто не поймет, по какому сценарию работать с этим планом.
Откроем Модуль менеджера созданного плана обмена и добавим в него экспортную процедуру ПриПолученииНастроек:
Процедура ПриПолученииНастроек(Настройки) Экспорт
Настройки.ОпределитьНастройкиОбщихДанных = Ложь;
Настройки.ИспользоватьПравилаКонвертации = Истина;
Настройки.ВыгрузкаДанныхОбъектами = Истина;
Настройки.РежимВыгрузкиДанныхПоУмолчанию = "ВыгружатьПоПринятымПравилам";
КонецПроцедуры
Этот код сообщает подсистеме БСП, что данный план обмена использует классические правила конвертации объектов КД 2.1 и поддерживает выгрузку объектов по правилам.
Существует два основных способа хранения правил обмена КД 2.1: непосредственно в конфигурации (в макетах плана обмена) или во внешней базе данных (загрузка файлов XML через режим «1С:Предприятие»). Рассмотрим первый вариант, который наиболее удобен при регулярной поставке готового решения пользователям.
В свойствах нашего плана обмена переходим на вкладку «Макеты» и создаем новые макеты. Имена макетов должны строго соответствовать внутренним стандартам БСП:
Важный момент: БСП кэширует правила обмена в специальном регистре сведений ПравилаДляОбменаДанными. Чтобы конфигурация применила измененные или вновь созданные макеты, нам необходимо заставить систему обновить кэш правил. Выполнить это можно двумя способами:
Способ А. Через интерактивную обработку разработчика
Запустите в режиме «1С:Предприятие» внешнюю обработку «Обновление вспомогательных данных» (она поставляется в составе дистрибутива БСП). В ней выберите пункт обновления правил обмена данными и запустите процесс.
Способ Б. Программный вызов (в консоли кода)
Вы можете выполнить в любой консоли кода простую команду, которая мгновенно обновит правила обмена для всех планов конфигурации:
ОбменДаннымиСервер.ВыполнитьОбновлениеПравилДляОбменаДанными();
Если вам требуется оперативно обновить правила обмена без изменения метаданных конфигурации и снятия с поддержки, воспользуемся пользовательским интерфейсом управляемых форм.
Разберем этот процесс по шагам:
После этого правила запишутся непосредственно в информационную базу и приоритет их использования станет выше, чем у встроенных в макеты правил.
Часто при тестировании файлового обмена в режиме клиент-сервера разработчики сталкиваются с ошибкой: при указании пути к каталогу обмена система выдает сообщение о том, что каталог не существует. Выясним причину этого поведения.
Поскольку процесс обмена данными (включая чтение правил и выгрузку пакетов данных) выполняется в фоновом задании на стороне сервера 1С:Предприятия, проверка пути также происходит в контексте сервера. Если вы указываете локальный путь вида C:\Exchange\, сервер пытается найти эту папку на своем локальном жестком диске, а не на вашем рабочем компьютере.
Для исправления этой ситуации выполним следующие настройки:
\\ИмяКомпьютера\ИмяПапки\.USR1CV8 или 1CEnterprise). Если у серверного процесса не будет прав доступа к сетевому ресурсу, платформа продолжит сообщать о неверном каталоге.Выполнив эти шаги, вы успешно интегрируете правила обмена КД 2.1 в современный механизм синхронизации данных БСП и обеспечите стабильную работу фонового обмена по расписанию.