При переходе на новые релизы 1С:Управление производственным предприятием (УПП), особенно в периоды серьезных изменений в налоговом законодательстве, администраторы и программисты часто сталкиваются с критическими ошибками при запуске системы в режиме «Предприятие». Одной из самых резонансных проблем при обновлении на релиз 1.3.156.1 стала ошибка выполнения обработчиков обновления, связанная с отсутствием метода ВосстановитьДвиженияСПревышенияПоРасчетыНалоговыхАгентовСБюджетомПоНДФЛ.
Рассмотрим подробно, почему возникает эта ситуация, как проанализировать состояние базы и какими способами можно завершить обновление успешно.
Проанализируем техническую подоплеку. Конфигурация УПП является комплексной и включает в себя подсистему, аналогичную Зарплата и Управление Персоналом (ЗУП) 2.5. В начале 2021 года в ЗУП были внесены изменения для поддержки прогрессивной ставки НДФЛ 15% (на доходы свыше 5 млн рублей). Для корректного пересчета прошлых периодов разработчики 1С создали специальные процедуры обновления.
Ошибка «Метод объекта не обнаружен» возникает в следующих случаях:
ВерсииПодсистем зафиксирована версия ЗУП, требующая запуска именно этого обработчика, в то время как общий модуль ПроцедурыОбновленияИнформационнойБазы уже соответствует более новой версии, где этот код отсутствует.Если вам необходимо срочно запустить базу и вы уверены, что учет НДФЛ по ставке 15% за предыдущие периоды вам не требуется (или будет проверен позже вручную), самым быстрым решением будет создание пустой процедуры. Выясним, как это сделать правильно.
Разберем шаги по внедрению «заглушки»:
ПроцедурыОбновленияИнформационнойБазы.
Процедура ВосстановитьДвиженияСПревышенияПоРасчетыНалоговыхАгентовСБюджетомПоНДФЛ() Экспорт
// Пустая процедура для обхода ошибки обновления в релизе 1.3.156.1
КонецПроцедуры
Важный момент: Обратите внимание на ключевое слово Экспорт. Без него система не увидит метод при вызове через Выполнить(), и ошибка повторится. После сохранения конфигурации и запуска «Предприятия» обновление успешно «проскочит» этот шаг.
Если вы не хотите вносить изменения в программный код, можно воздействовать на логику подсистемы обновления через данные. Система 1С понимает, какие обработчики запускать, ориентируясь на записи в регистре сведений ВерсииПодсистем.
Рассмотрим алгоритм действий:
ВерсииПодсистем строку, отвечающую за зарплатную часть (обычно это ЗарплатаИПерсонал).После этого система посчитает, что все промежуточные обновления уже выполнены, и не будет пытаться вызвать отсутствующий метод ВосстановитьДвиженияСПревышенияПоРасчетыНалоговыхАгентовСБюджетомПоНДФЛ.
Бывают ситуации, когда ошибка вызвана тем, что при обновлении «допиленной» конфигурации программист случайно удалил часть типового кода. Посмотрим на пример того, как это проверить.
Разберем процесс восстановления модуля:
ПроцедурыОбновленияИнформационнойБазы в обеих конфигурациях.ВосстановитьДвижения... или ВыделитьНалогСПревышения..., присутствуют в вашем модуле.В релизе 1.3.156.1 данный метод действительно мог быть исключен, так как его сменил более актуальный обработчик ВыделитьНалогСПревышенияВРасчетыНалоговыхАгентовСБюджетомПоНДФЛ(). Поэтому стратегически важно убедиться, что ваша база «считает» себя обновленной до нужной версии подсистемы.
Проанализируем технические требования к окружению. Начиная с версии 1.3.155, конфигурация УПП начала использовать методы, доступные только в платформе версии 8.3.14.1976 и выше. Например, в коде активно меняются типы УправляемаяФорма на ФормаКлиентскогоПриложения.
Если вы используете старую платформу (например, 8.3.12 или 8.3.10), механизмы фонового обновления могут отрабатывать некорректно. Рекомендуется:
После того как вы применили «заглушку» или поправили версию в регистре и успешно зашли в базу, обязательно выполните следующие действия:
Расчеты налоговых агентов с бюджетом по НДФЛ. Если данные выглядят некорректно, возможно, пропущенный метод все-таки нужно было выполнить, и в этом случае его стоит временно скопировать из кода релиза 1.3.155.1.Таким образом, мы выяснили, что ошибка носит организационно-технический характер и чаще всего лечится правильной установкой версии подсистемы в регистре или временным добавлением пустой процедуры в модуль. Помните, что каждое обновление УПП в текущих реалиях требует обязательного запуска в режиме «Предприятие» перед переходом к следующему релизу конфигуратора.