При работе с конфигурацией УТ 10.3 разработчики часто сталкиваются с необходимостью временного отключения ПодпискиНаСобытия. Например, при создании копии базы для тестирования или при выполнении массовых операций загрузки данных, когда срабатывание подписки может привести к нежелательным последствиям — таким как запись данных в сторонние базы или избыточная нагрузка. Рассмотрим, как эффективно реализовать управление этим механизмом.
Важно понимать: штатными средствами 1С, не внося изменений в конфигурацию, отключить объект метаданных ПодпискаНаСобытие невозможно. Это статический объект, определяемый на этапе разработки. Однако мы можем подготовить конфигурацию так, чтобы управлять этим процессом из режима 1С:Предприятие.
Самый надежный способ — внедрить в процедуру-обработчик подписки проверку на наличие настройки, которую можно изменить в пользовательском режиме. Разберем шаги по реализации этого метода:
Константу (например, ИспользоватьПодпискуНаСобытия) или РегистрСведений, который будет хранить статус включения.Роли), чтобы администратор имел доступ к изменению этой константы.ПодпискеНаСобытие.Пример программного кода, который необходимо добавить в процедуру-обработчик:
Процедура ПриЗаписиДокумента(Источник, Отказ)
Если Не Константы.ИспользоватьПодпискуНаСобытия.Получить() Тогда
Возврат;
КонецЕсли;
// Далее идет основной код подписки
// ...
КонецПроцедуры
Таким образом, когда вам потребуется временно отключить логику, вы просто измените значение константы в режиме 1С:Предприятие, и код подписки будет прекращать работу на первом же этапе.
В современных версиях платформы для внесения изменений, не затрагивающих основной код конфигурации, используются Расширения. Несмотря на то, что УТ 10.3 работает на обычных формах, если ваша платформа 8.3 позволяет использовать расширения, это может быть отличным выходом.
Вы можете переопределить процедуру, вызванную ПодпискойНаСобытие, в расширении. В таком случае, активируя или дезактивируя расширение в списке расширений конфигурации, вы фактически управляете исполнением кода подписки.
Порядок действий:
Расширение конфигурации.&Вместо) целевую процедуру.При использовании любого из предложенных методов помните о рисках:
ПараметровСеанса вместо прямого чтения констант — более производительный подход, так как значения параметров кэшируются в оперативной памяти сеанса.Мы проанализировали основные подходы к решению задачи. Выбор между внедрением проверки в код через константу или использованием расширения зависит от режима совместимости вашей конфигурации и требований к чистоте кода. В любом случае, первичная доработка требует участия разработчика в Конфигураторе, чтобы создать «рычаг управления», которым вы сможете пользоваться в дальнейшем без стороннего вмешательства.