Где находятся правила обмена УТ — БП в УТ 11 и как их изменить?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей IT и автоматизация бизнеса
← На главную

При переходе на современные версии конфигураций «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С прямо внутри конфигурации.

Где искать правила обмена и регистрации?

Для того чтобы локализовать правила в конфигураторе, нам нужно разделить их на два типа:

  1. Правила регистрации документов и справочников (определяют, какие именно объекты должны быть зарегистрированы к отправке при их изменении). Они по-прежнему находятся в макете соответствующего плана обмена под именем ПравилаРегистрации либо описываются программно в модуле менеджера регистрации.
  2. Правила конвертации (обмена) объектов (определяют, как поля объекта УТ 11 сопоставляются с полями формата EnterpriseData, а затем с полями БП 3). Эти правила зашиты в общем модуле МенеджерОбменаЧерезУниверсальныйФормат в конфигурации «Управление торговлей» (в БП 3 аналогичный модуль может называться так же или иметь суффикс версии, например, МенеджерОбменаЧерезУниверсальныйФормат13).

Давайте проанализируем структуру этого модуля. Открыв общий модуль МенеджерОбменаЧерезУниверсальныйФормат, мы увидим огромное количество процедур, отвечающих за инициализацию правил конвертации свойств (ПКС) и правил конвертации объектов (ПКО). Например, за сопоставление полей документа реализации товаров отвечает отдельная процедура, название которой обычно выглядит как ДобавитьПКО_Документ_РеализацияТоваровУслуг_Отправка.

Как редактировать правила обмена: два практических подхода

Поскольку правила теперь представлены в виде программного кода, у нас есть два пути внесения изменений. Рассмотрим их подробнее.

Вариант 1. Использование конфигурации «1С:Конвертация данных 3.0» (КД 3)

Этот способ является официальным и наиболее предпочтительным при масштабных доработках обмена. В отличие от версии 2.1, КД 3 генерирует на выходе не XML-файл правил, а готовый текст программного кода для общего модуля обмена.

Разберем процесс работы по шагам:

  1. Выгрузка метаданных: С помощью специальной обработки (идет в комплекте поставки КД 3) выгружаем структуру метаданных УТ 11 и БП 3.
  2. Сохранение кода модуля: Открываем конфигуратор УТ 11, находим общий модуль МенеджерОбменаЧерезУниверсальныйФормат, выбираем в меню Файл — Сохранить копию и сохраняем его как текстовый файл.
  3. Загрузка в КД 3: В базу «Конвертации данных 3» загружаем структуры конфигураций, XDTO-пакет универсального формата (EnterpriseData) и сохраненный текстовый файл с кодом модуля. КД 3 автоматически распарсит этот код и воссоздаст правила в визуальном интерфейсе.
  4. Редактирование: Настраиваем правила конвертации свойств (ПКС) и объектов (ПКО), добавляем новые реквизиты или описываем условия выгрузки.
  5. Генерация кода: После настройки выполняем выгрузку правил. КД 3 сформирует новый текст программного кода.
  6. Внедрение: Заменяем текст модуля МенеджерОбменаЧерезУниверсальныйФормат в конфигураторе новым сгенерированным кодом.

Вариант 2. Ручная доработка кода через Расширение конфигурации

Если вам нужно решить локальную задачу (например, заполнить одно дополнительное поле или установить простое условие на выгрузку реквизита), использовать КД 3 необязательно и даже избыточно. Гораздо быстрее и безопаснее внести изменения вручную, используя расширение конфигурации. Это позволит сохранить конфигурацию на поддержке и упростит дальнейшие обновления.

Выясним, как переопределить логику наполнения данных на примере документа «Реализация товаров и услуг». Нам необходимо перехватить процедуру заполнения правил для этого документа. Для этого выполним следующие действия:

1. Создадим новое расширение конфигурации и добавим в него общий модуль МенеджерОбменаЧерезУниверсальныйФормат.

2. Используя директиву &После или &Вместо, переопределим процедуру инициализации ПКО нужного объекта. Посмотрим на пример кода, который добавляет кастомную обработку при отправке документа:


&После("ДобавитьПКО_Документ_РеализацияТоваровУслуг_Отправка")
Процедура Расш_ДобавитьПКО_Документ_РеализацияТоваровУслуг_Отправка(ПравилаКонвертации)
    
    // Получаем созданное системой правило конвертации
    Правило = ПолучитьПравилоКонвертации(ПравилаКонвертации, "Документ_РеализацияТоваровУслуг_Отправка");
    
    // Пример: Изменим алгоритм заполнения конкретного свойства или добавим новое ПКС
    // Здесь мы можем прописать собственную логику обработки перед отправкой данных
    
КонецПроцедуры

3. Если нам требуется изменить сами данные в момент выгрузки (например, подменить значение реквизита), мы можем использовать обработчики событий, такие как ПередОбработкой, ПриОтправке или ПослеОбработки, переопределив их аналогичным образом в расширении.

Важные нюансы и подводные камни

При работе с программными правилами обмена обязательно учитывайте следующие особенности:

Таким образом, современный механизм обмена данными в 1С стал более гибким и производительным, хотя и требует от разработчика понимания объектной модели формата EnterpriseData и умения работать с программным кодом правил конвертации вместо визуальных XML-схем.

← На главную