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