Как получить и модифицировать типовые правила регистрации объектов обмена в 1С:Управление торговлей 11?

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

При работе с типовыми конфигурациями 1С:Предприятие 8, особенно такими как Управление торговлей 11 (УТ11), мы часто сталкиваемся с необходимостью адаптировать механизмы обмена данными под специфические требования бизнеса. Одной из таких задач является получение и изменение типовых правил регистрации объектов обмена (в работе с которыми поможет доработанная Конвертация Данных). В прошлых версиях, использующих Конвертацию Данных 2.0 (КД 2.0) (используя типовые правила обмена УТ 11 — БП 3.0), этот процесс был относительно прост: мы могли выгрузить правила в XML-файл, отредактировать его и загрузить обратно, выполнив добавление объекта в состав плана обмена без обновления конфигурации — для автоматизации этого процесса подойдёт обработка автоматизации регистрации объектов на планах обмена. Однако, с развитием платформы и переходом на универсальный формат обмена EnterpriseData, а также внедрением новых подходов к хранению правил, привычные методы, актуальные для правил обмена КА 2 — WMS 5, перестали работать.

В этой статье мы подробно рассмотрим, почему старые способы получения типовых правил регистрации обмена в УТ11 больше не актуальны, а также предложим несколько действенных методов для их выгрузки и последующей модификации.

Проблема: Изменение механизма хранения типовых правил

Начнем с анализа причины, по которой старые методы получения правил регистрации не работают. Ранее, правила часто хранились в виде макетов, которые можно было легко сохранить в XML-файл. В современных типовых конфигурациях, таких как УТ11, правила регистрации объектов обмена тесно интегрированы в код общих модулей, в частности, в модуль МенеджерРегистрации. Это означает, что правил в виде отдельного, легкодоступного XML-макета, предназначенного для непосредственной выгрузки, больше нет.

Когда пользователи пытаются воспользоваться привычной опцией "Еще - Сохранить правила регистрации из макета (xml)", они сталкиваются с ошибкой: "Для плана обмена "СинхронизацияДанныхЧерезУниверсальныйФормат" не обнаружено ни одного макета правил регистрации". Эта ошибка является прямым следствием нового подхода к хранению правил: система не находит ожидаемого макета, потому что правила теперь формируются "на лету" из программного кода модуля.

Тем не менее, даже при таком подходе, типовые правила регистрации все еще можно получить в файл для дальнейшего анализа или модификации. Рассмотрим несколько способов.

Способ 1: Выгрузка типовых правил регистрации из пользовательского режима

Несмотря на то, что правила не хранятся в виде макетов в конфигураторе, система 1С:Предприятие 8 предоставляет возможность выгрузить их в XML-файл через пользовательский режим. Это наиболее прямой способ получить исходный XML-файл с правилами регистрации, который затем можно проанализировать или отредактировать с помощью внешних инструментов.

  1. Откройте настройки синхронизации данных: Мы начинаем с перехода в раздел "Администрирование" в пользовательском режиме 1С:Предприятия. Затем выбираем пункт "Синхронизация данных".
  2. Выберите нужную настройку синхронизации: В открывшемся окне "Настройки синхронизации данных" вы увидите список всех настроенных обменов. Выберите ту настройку, для которой вы хотите получить правила регистрации объектов.
  3. Перейдите к изменению настроек: После выбора настройки нажмите кнопку "Изменить настройки" (или аналогичную, ведущую к детальным параметрам обмена).
  4. Найдите опцию загрузки/выгрузки правил: В окне настройки обмена, которое откроется, внимательно изучите доступные команды. Здесь мы ищем кнопку или ссылку с текстом "Загрузить правила регистрации" (или схожую по смыслу). Нажатие на эту кнопку, как правило, открывает дополнительное диалоговое окно или меню.
  5. Сохраните правила регистрации в файл: В диалоговом окне "Загрузка правил регистрации объектов" будет представлена опция "Выгрузить правила регистрации в файл". Выберите эту опцию и укажите путь, по которому вы хотите сохранить XML-файл с типовыми правилами регистрации. Система сформирует файл, содержащий текущие типовые правила регистрации для выбранного обмена.

    Полученный XML-файл будет содержать структуру и логику регистрации объектов, которая используется в типовой конфигурации. Вы можете открыть его любым текстовым редактором или специализированным инструментом для работы с XML.

  6. Загрузка измененных правил обратно: Если вы внесли изменения в полученный XML-файл, вы можете загрузить его обратно в систему, используя ту же самую кнопку "Загрузить правила регистрации", но на этот раз выбрав опцию загрузки из файла.

Важное предупреждение: Использование внешнего файла правил регистрации, отличающегося от встроенных в конфигурацию, может создавать сложности при обновлении программы. При каждом обновлении типовой конфигурации, встроенные правила могут измениться, и ваши модификации во внешнем файле могут либо устареть, либо вступить в конфликт с новыми типовыми правилами, что потребует дополнительного анализа и адаптации.

Способ 2: Модификация правил регистрации через общий модуль МенеджерРегистрации

Для точечных и небольших изменений в логике регистрации объектов, например, если вам нужно немного доработать обработчики или изменить условия регистрации для отдельных объектов, более предпочтительным может быть прямой метод — модификация общего модуля МенеджерРегистрации. Этот подход позволяет интегрировать изменения непосредственно в конфигурацию или через механизм расширений, что делает их более управляемыми.

  1. Прямое изменение в конфигурации: Мы можем открыть конфигурацию в режиме Конфигуратор, найти общий модуль МенеджерРегистрации и внести необходимые изменения непосредственно в его текст. Этот метод прост для небольших правок, но имеет существенный недостаток: при обновлении конфигурации эти изменения могут быть стерты или потребуют ручного переноса. Поэтому данный подход обычно не рекомендуется для поддерживаемых конфигураций.
  2. Использование расширений конфигурации: Более безопасным и рекомендуемым способом является внесение изменений в модуль МенеджерРегистрации через механизм расширений конфигурации. Расширения позволяют переопределять процедуры и функции существующих модулей, не затрагивая при этом саму базовую конфигурацию. Это значительно упрощает процесс обновления:

    1. Создайте новое расширение: В конфигураторе создайте новое расширение.
    2. Добавьте общий модуль: Добавьте в расширение общий модуль с тем же именем, что и исходный модуль, или создайте новый, в котором будут переопределяться нужные процедуры.
    3. Переопределите процедуры: Мы можем переопределить необходимые процедуры из модуля МенеджерРегистрации, используя директивы &Перед, &После или &Вместо. Это позволит нам изменить поведение типовых процедур регистрации, добавив свою логику до, после или полностью вместо типовой.

      
      // Пример переопределения процедуры в расширении
      // Допустим, в типовом модуле МенеджерРегистрации есть процедура ЗарегистрироватьИзмененияДокумента
      // и мы хотим добавить свою логику после её выполнения.
      
      &После("ЗарегистрироватьИзмененияДокумента", "МенеджерРегистрации")
      Процедура ЗарегистрироватьИзмененияДокумента_После(ОбъектДанных, СвойстваОбъекта, Отправитель)
          // Ваша дополнительная логика после типовой регистрации
          Сообщить("Документ " + ОбъектДанных.Метаданные().Имя + " зарегистрирован. Добавляем свою проверку.");
          // Например, можно вызвать другую процедуру расширения или выполнить запрос
      КонецПроцедуры
      

    Такой подход обеспечивает гибкость и минимизирует риски при обновлении, так как расширение применяется поверх типовой конфигурации.

Способ 3: Работа с типовыми правилами через 1С:Конвертация данных 3.0 (КД3)

Для более глубокой и системной доработки типовых правил обмена, включая правила регистрации, особенно если требуется изменение структуры или логики взаимодействия нескольких объектов, рекомендуется использовать специализированную конфигурацию "1С:Конвертация данных 3.0" (КД3). КД3 представляет собой новую технологию обмена данными, которая значительно отличается от КД 2.0 и ориентирована на работу с универсальным форматом EnterpriseData — для доработки и автоматизации такого обмена существуют готовые правила обмена EnterpriseData для УТ 11 через расширение.

В КД3 правила обмена, включая логику регистрации, чаще всего извлекаются из общих модулей типовых конфигураций (например, МенеджерОбменаЧерезУниверсальныйФормат, который, в свою очередь, может использовать МенеджерРегистрации). Процесс работы в КД3 включает несколько ключевых шагов:

  1. Установка и запуск КД3: Прежде всего, нам потребуется отдельная база с конфигурацией "1С:Конвертация данных 3".
  2. Загрузка структур метаданных:
    1. Загрузка структуры формата EnterpriseData: Мы начинаем с загрузки в КД3 самой структуры универсального формата EnterpriseData. Это основа для всех обменов в КД3.
    2. Загрузка структур конфигураций: Далее нам необходимо загрузить структуры метаданных конфигураций-источника и конфигурации-приемника (например, УТ11). КД3 использует эти структуры для сопоставления объектов.
  3. Загрузка типовых правил обмена из модуля: КД3 позволяет загружать правила обмена не только из XML-файлов, но и непосредственно из программных модулей типовых конфигураций. Мы можем извлечь правила из модуля МенеджерОбменаЧерезУниверсальныйФормат или других связанных модулей, отвечающих за обмен. КД3 интерпретирует код этих модулей и преобразует его в свой внутренний формат, доступный для редактирования через удобный графический интерфейс.

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

  4. Модификация правил в КД3: После загрузки правил мы получаем доступ к ним через интерфейс КД3. Здесь мы можем:
    1. Настраивать правила конвертации объектов: Изменять сопоставления полей, добавлять обработчики "Перед выгрузкой", "После выгрузки", "Перед загрузкой", "После загрузки".
    2. Редактировать правила регистрации: КД3 также предоставляет инструменты для работы с правилами регистрации. Мы можем определять условия регистрации, исключения, настраивать поведение при изменении различных реквизитов объектов.
    3. Добавлять собственную логику: В КД3 есть возможность писать собственный код на языке 1С для реализации сложной логики конвертации или регистрации.
  5. Выгрузка и внедрение измененных правил: После завершения всех модификаций, мы выгружаем измененные правила из КД3. Эти правила могут быть затем внедрены в конфигурацию (например, в качестве нового модуля или макета) или использованы как внешний файл для настройки обмена. При работе с универсальным форматом EnterpriseData, часто требуется, чтобы измененные правила были "встроены" обратно в соответствующие модули конфигурации (например, путем замены типового модуля или внедрения своей логики через расширения), так как система ожидает их там.

Почему КД3 усложняет? Мы часто слышим вопрос, почему разработчики 1С пошли на такое усложнение, отказавшись от единого XML-файла. Основные причины заключаются в стремлении к большей надежности, масштабируемости и унификации обменов. Встроенные правила в модулях:

Заключение

Мы выяснили, что получение и модификация типовых правил регистрации объектов обмена в 1С:Управление торговлей 11 требует новых подходов, отличающихся от привычной работы с КД 2.0. Если нам нужен просто XML-файл для анализа или небольшой корректировки, выгрузка через пользовательский режим будет самым быстрым решением. Для точечных изменений, затрагивающих конкретные обработчики, мы можем использовать расширения конфигурации. А для глубокой переработки или создания новых правил обмена, особенно с использованием универсального формата EnterpriseData, наиболее мощным инструментом является "1С:Конвертация данных 3.0". Выбор метода зависит от сложности задачи и требуемой гибкости поддержки.

← На главную