При обновлении конфигурации «1С:Управление производственным предприятием» (УПП) ред. 1.3 до актуальных релизов (начиная с 1.3.123.2 и заканчивая 1.3.124.1) многие технические специалисты столкнулись с неприятной ситуацией. При попытке создать или просто открыть документ Поступление товаров и услуг система выдает критическую ошибку: «Метод обработчика события ЕГАИСПередЗаписьюДокументаИБПередЗаписью не найден». В этой статье мы подробно разберем, почему возникает эта проблема, как она связана с архитектурными изменениями в подсистеме ЕГАИС и как устранить её вручную, если стандартное обновление не помогло.
Давайте проанализируем ситуацию. Начиная с релиза 1.3.123, разработчики компании 1С начали масштабный рефакторинг подсистемы интеграции с ЕГАИС. Основная цель этих изменений — унификация кода и перенос логики в новые общие модули. В процессе этой работы старые обработчики событий, которые раньше находились в специфических модулях, были удалены или перенесены в модуль ИнтеграцияЕГАИС.
Проблема заключается в механизме обновления. Если ваша конфигурация находится на поддержке с возможностью изменения (доработанная база) или если процесс обновления через «Сравнение и объединение» прошел с сохранением старых ссылок, объект метаданных Подписка на событие может «зависнуть». Он продолжает ссылаться на старое имя метода в общем модуле, которого физически больше не существует в коде программы. В итоге, когда пользователь пытается записать документ (например, ПоступлениеТоваровУслуг), платформа обращается к этой подписке, не находит нужный код и блокирует работу документа.
Ошибка чаще всего локализуется в объекте метаданных под названием ЕГАИСПередЗаписьюДокументаИБ. Рассмотрим, как это выглядит изнутри. В дереве конфигурации существует раздел «Общие», где хранятся Подписки на события. Каждая подписка связывает событие объекта (например, «ПередЗаписью») с процедурой в общем модуле.
В новых релизах УПП 1.3 логика была перераспределена. Вместо множества разрозненных подписок внедряется более централизованная структура. Однако старая подписка ЕГАИСПередЗаписьюДокументаИБ может остаться в дереве метаданных, ссылаясь на несуществующий метод ЕГАИСПередЗаписьюДокументаИБПередЗаписью. Поскольку платформа 1С строго проверяет наличие процедур, указанных в обработчиках, программа выдает исключение и прерывает выполнение операции.
Для исправления ситуации нам потребуется зайти в Конфигуратор. Перед любыми манипуляциями обязательно создадим резервную копию информационной базы (выгрузку .dt). Теперь выполним следующие действия:
Общие -> Подписки на события.ЕГАИСПередЗаписьюДокументаИБ. Нажмем на ней правой кнопкой мыши и выберем пункт «Свойства».В зависимости от того, используется ли на предприятии обмен с ЕГАИС, у нас есть два пути решения.
Если ваша организация не занимается оборотом алкогольной продукции и подсистема ЕГАИС вам не нужна, самый простой и безопасный способ — отключить влияние этой подписки на документы.
В свойствах подписки ЕГАИСПередЗаписьюДокументаИБ найдем поле «Источник». Нажмем на кнопку выбора (три точки) и в открывшемся списке типов снимем галочку с документа ПоступлениеТоваровУслуг (и любых других документов, вызывающих ошибку). После этого нажмем «ОК» и обновим конфигурацию базы данных (F7). Ошибка исчезнет, так как подписка перестанет реагировать на действия с документами.
Если функционал ЕГАИС необходим, нам нужно восстановить правильную связь подписки с новым программным кодом. Разберем по шагам, как переназначить обработчик:
ЕГАИСПередЗаписьюДокументаИБ найдем поле «Обработчик».ИнтеграцияЕГАИС.ПередЗаписьюДокументаИБ.Важно отметить, что в новых релизах УПП может появиться новая, корректная подписка с похожим именем (например, ИнтеграцияЕГАИСПередЗаписьюДокументаИБ). В этом случае старую подписку ЕГАИСПередЗаписьюДокументаИБ можно просто удалить, так как она является «дублем-рудиментом», оставшимся от старой версии конфигурации.
Иногда ошибка может возникать не только в подписке «ПередЗаписью», но и в подписке «ПриЗаписи». Если после исправления первой ошибки возникла аналогичная, проанализируем подписку ЕГАИСПриЗаписиДокументаИБ. Принцип исправления тот же: либо удаляем её (если есть новая замена), либо переназначаем обработчик на актуальный метод в модуле ИнтеграцияЕГАИС.
Для контроля целостности конфигурации после внесения правок рекомендуется выполнить синтаксическую проверку. Рассмотрим, как это сделать:
Если проверка выдаст сообщения о других отсутствующих методах, это будет сигналом о том, что обновление конфигурации поставщика прошло не полностью. В таком случае стоит рассмотреть возможность повторного наката обновления через «Конфигурация - Поддержка - Обновить конфигурацию», внимательно следя за тем, чтобы объекты подписок обновлялись из файла поставщика, а не игнорировались.
Выясним, почему релиз 124.1 не всегда исправляет ситуацию автоматически. Пользователи часто совершают ошибку, обновляя конфигурацию через «Сравнение/Объединение» с файлом .cf, при этом снимая галочки с «непонятных» объектов. При работе с УПП 1.3 крайне важно следовать правилам обновления через поддержку. Если вы видите, что 1С предлагает удалить какой-то объект (например, старую подписку), соглашайтесь, если уверены, что это не ваш личный доработанный функционал.
Также обратим внимание на версию платформы. Несмотря на то что УПП 1.3 — это решение на обычных формах, для корректной работы последних релизов и механизмов метаданных рекомендуется использовать платформу не ниже 8.3.14.1642 (или актуальные версии веток 8.3.15/8.3.16). Это минимизирует риск возникновения ошибок при реструктуризации базы данных.
Подведем итог. Ошибка ЕГАИСПередЗаписьюДокументаИБПередЗаписью — это типичное следствие «хвостов» в метаданных после рефакторинга конфигурации поставщиком. Своевременное удаление неактуальных подписок или их переназначение на методы модуля ИнтеграцияЕГАИС позволяет полностью восстановить работоспособность документов в УПП 1.3.