При работе со старыми, но все еще активно поддерживаемыми конфигурациями «1С:Предприятие» пользователи и администраторы иногда сталкиваются с неожиданными критическими ошибками при выполнении базовых операций. Одной из таких проблем стала ошибка «Поле объекта не обнаружено (УчетнаяПолитикаПоНДФЛ)», которая полностью блокирует проведение расходных кассовых ордеров (РКО) и других платежных документов, связанных с выплатой заработной платы.
В этой статье мы подробно проанализируем ситуацию, выясним причину возникновения данной ошибки, разберем по шагам механизмы платформы, которые приводят к сбою, и рассмотрим два практических способа решения проблемы.
Для начала проанализируем контекст возникновения проблемы. Ошибка проявляется в конфигурации «Бухгалтерия предприятия» редакции 2.0 (начиная с релиза 2.0.66.111). Пользователи сталкиваются с ней при попытке провести или перепровести документы выплаты зарплаты (например, Расходный кассовый ордер или Списание с расчетного счета) за периоды, начиная с апреля 2020 года.
Давайте заглянем «под капот» конфигурации и разберем технические детали. Ошибка возникает в общем модуле менеджера регистра накопления НДФЛРасчетыСБюджетом. Платформа спотыкается на следующей строке кода:
ЗаполнитьЗначенияСвойств(СчитатьНерабочиеДниКарантинаРабочими,
РегистрыСведений.УчетнаяПолитикаПоНДФЛ.Получить('20200101', Новый Структура("Организация", Организация)));
В чем же здесь кроется подвох? Дело в том, что весной 2020 года в связи с пандемией COVID-19 и указами Президента РФ о введении нерабочих дней возникла необходимость особого учета этих периодов для расчета НДФЛ и заполнения регламентированной отчетности (в частности, формы 6-НДФЛ). Для реализации этого функционала в современной редакции «Бухгалтерия предприятия» 3.0 был добавлен новый регистр сведений УчетнаяПолитикаПоНДФЛ.
При переносе (так называемом бэкпортировании) антикризисного функционала в устаревающую ветку «Бухгалтерия предприятия» 2.0 разработчики допустили программную ошибку (опечатку). Они скопировали фрагмент кода из тройки, ссылающийся на регистр УчетнаяПолитикаПоНДФЛ, однако сам этот регистр в метаданные конфигурации БП 2.0 добавлен не был. В результате при проведении любого документа, задействующего расчет расчетов с бюджетом по НДФЛ, система пытается обратиться к несуществующему объекту метаданных, что и вызывает фатальный сбой транзакции.
Поскольку данная ошибка носит массовый характер и была официально зарегистрирована в реестре ошибок фирмы «1С» под номером 30173565, разработчики оперативно выпустили исправление. Ошибка присутствует только в релизе 2.0.66.111.
Если на вашем предприятии установлена эта проблемная версия, самым простым, надежным и правильным решением будет обновление конфигурации. Разберем этот процесс по шагам:
.dt или скопируйте файл 1Cv8.1CD). Это обязательное правило перед любым обновлением.1cv8.upd в каталоге шаблонов) и завершите процесс обновления конфигурации.После обновления до версии 2.0.66.112 обращение к несуществующему регистру в модуле менеджера регистра накопления НДФЛРасчетыСБюджетом будет устранено, и документы начнут проводиться в штатном режиме.
Бывают ситуации, когда оперативно обновить конфигурацию невозможно — например, если база сильно доработана, находится на замке, а программиста, сопровождающего нетиповую конфигурацию, нет на месте. Или если проведение документов нужно восстановить прямо сейчас, а окно для технических работ запланировано только на выходные.
В таких случаях мы можем внести точечное изменение в код конфигурации. Рассмотрим подробнее, как это сделать:
НДФЛРасчетыСБюджетом, нажмите на него правой кнопкой мыши и выберите пункт Открыть модуль менеджера.УчетнаяПолитикаПоНДФЛ.//.
// Закомментировано из-за отсутствия регистра в БП 2.0
// ЗаполнитьЗначенияСвойств(СчитатьНерабочиеДниКарантинаРабочими, РегистрыСведений.УчетнаяПолитикаПоНДФЛ.Получить('20200101', Новый Структура("Организация", Организация)));
// Вставляем заглушку структуры, определяющую рабочие/нерабочие дни
СчитатьНерабочиеДниКарантинаРабочими = Новый Структура("СчитатьНерабочиеДниКарантинаРабочими", Ложь);
Проанализируем этот код. Назначая свойству значение Ложь, мы сообщаем системе, что организация не работала в период карантина (это стандартное поведение для большинства предприятий, если не было отдельных распоряжений). Если же ваша организация продолжала работать в обычном режиме по указам президента, вы можете установить значение Истина.
После изменения кода сохраните конфигурацию базы данных (клавиша F7) и запустите сеанс в режиме предприятия. Проблема с проведением кассовых и банковских документов будет успешно решена.