При переходе на современные версии конфигураций «1С:Управление торговлей 11» (УТ 11) и «1С:Бухгалтерия предприятия 3.0» (БП 3) многие разработчики и администраторы сталкиваются с неожиданной проблемой: при попытке настроить или изменить правила обмена они не могут обнаружить привычные XML-файлы правил конвертации. В планах обмена видны только правила регистрации, а сами правила переноса данных будто бы бесследно исчезли.
В этой статье мы подробно разберем, как устроена современная синхронизация данных между УТ 11 и БП 3, выясним, куда разработчики 1С спрятали правила конвертации, и рассмотрим детальные сценарии их изменения.
В старых версиях конфигураций (например, в УТ 10.3 и БП 2.0) обмен строился на классической технологии «1С:Конвертация данных 2.1». Правила обмена представляли собой XML-файл, который загружался в макет плана обмена или в специальный регистр сведений.
В современных решениях на платформе «1С:Предприятие 8.3» используется принципиально другой подход — технология EnterpriseData (универсальный формат обмена). Её главное отличие заключается в том, что обмен происходит через стандартизированный формат данных (XDTO-пакеты), а все правила конвертации описаны непосредственно на встроенном языке 1С прямо внутри конфигурации.
Для того чтобы локализовать правила в конфигураторе, нам нужно разделить их на два типа:
ПравилаРегистрации либо описываются программно в модуле менеджера регистрации.МенеджерОбменаЧерезУниверсальныйФормат в конфигурации «Управление торговлей» (в БП 3 аналогичный модуль может называться так же или иметь суффикс версии, например, МенеджерОбменаЧерезУниверсальныйФормат13).Давайте проанализируем структуру этого модуля. Открыв общий модуль МенеджерОбменаЧерезУниверсальныйФормат, мы увидим огромное количество процедур, отвечающих за инициализацию правил конвертации свойств (ПКС) и правил конвертации объектов (ПКО). Например, за сопоставление полей документа реализации товаров отвечает отдельная процедура, название которой обычно выглядит как ДобавитьПКО_Документ_РеализацияТоваровУслуг_Отправка.
Поскольку правила теперь представлены в виде программного кода, у нас есть два пути внесения изменений. Рассмотрим их подробнее.
Этот способ является официальным и наиболее предпочтительным при масштабных доработках обмена. В отличие от версии 2.1, КД 3 генерирует на выходе не XML-файл правил, а готовый текст программного кода для общего модуля обмена.
Разберем процесс работы по шагам:
МенеджерОбменаЧерезУниверсальныйФормат, выбираем в меню Файл — Сохранить копию и сохраняем его как текстовый файл.МенеджерОбменаЧерезУниверсальныйФормат в конфигураторе новым сгенерированным кодом.Если вам нужно решить локальную задачу (например, заполнить одно дополнительное поле или установить простое условие на выгрузку реквизита), использовать КД 3 необязательно и даже избыточно. Гораздо быстрее и безопаснее внести изменения вручную, используя расширение конфигурации. Это позволит сохранить конфигурацию на поддержке и упростит дальнейшие обновления.
Выясним, как переопределить логику наполнения данных на примере документа «Реализация товаров и услуг». Нам необходимо перехватить процедуру заполнения правил для этого документа. Для этого выполним следующие действия:
1. Создадим новое расширение конфигурации и добавим в него общий модуль МенеджерОбменаЧерезУниверсальныйФормат.
2. Используя директиву &После или &Вместо, переопределим процедуру инициализации ПКО нужного объекта. Посмотрим на пример кода, который добавляет кастомную обработку при отправке документа:
&После("ДобавитьПКО_Документ_РеализацияТоваровУслуг_Отправка")
Процедура Расш_ДобавитьПКО_Документ_РеализацияТоваровУслуг_Отправка(ПравилаКонвертации)
// Получаем созданное системой правило конвертации
Правило = ПолучитьПравилоКонвертации(ПравилаКонвертации, "Документ_РеализацияТоваровУслуг_Отправка");
// Пример: Изменим алгоритм заполнения конкретного свойства или добавим новое ПКС
// Здесь мы можем прописать собственную логику обработки перед отправкой данных
КонецПроцедуры
3. Если нам требуется изменить сами данные в момент выгрузки (например, подменить значение реквизита), мы можем использовать обработчики событий, такие как ПередОбработкой, ПриОтправке или ПослеОбработки, переопределив их аналогичным образом в расширении.
При работе с программными правилами обмена обязательно учитывайте следующие особенности:
МенеджерОбменаЧерезУниверсальныйФормат содержит сотни тысяч строк кода. Работа с ним в конфигураторе или среде разработки 1С:Enterprise Development Tools (EDT) может сильно перегружать оперативную память компьютера и вызывать зависания. В современных версиях КД 3 предусмотрен механизм разделения этого гигантского модуля на несколько составных частей (базисный и пользовательские модули).Таким образом, современный механизм обмена данными в 1С стал более гибким и производительным, хотя и требует от разработчика понимания объектной модели формата EnterpriseData и умения работать с программным кодом правил конвертации вместо визуальных XML-схем.