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