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