Как исправить ошибку «Поле объекта не обнаружено (УдержатьНДФЛАванса)» в 1С:УПП 1.3.194.2?

Программист 1С v8.3 (Обычные формы) Налоговый учет Промышленность, строительство и АПК
← На главную

Рассмотрим достаточно распространенную ситуацию, с которой столкнулись многие специалисты при обновлении типовых баз конфигурации 1С:Управление производственным предприятием (УПП) до релиза 1.3.194.2. При попытке открыть документ «Начисление ЗП работникам организации» система выдает критическую ошибку:


Поле объекта не обнаружено (УдержатьНДФЛАванса)
{Документ.НачислениеЗарплатыРаботникамОрганизаций.Форма.ФормаДокумента.Форма(2855)}: ЭлементыФормы.УдержатьНДФЛАванса.Видимость = НачалоМесяца(ПериодРегистрации) = ДобавитьМесяц(ПроведениеРасчетов.ДатаЗакона263ФЗ, -1) И ПериодНачисления = Перечисления.ПериодНачисленияЗарплаты.ПерваяПоловинаТекущегоМесяца;
{Документ.НачислениеЗарплатыРаботникамОрганизаций.Форма.ФормаДокумента.Форма(1500)}: ПоказатьФлажокУдержатьНДФЛАванса;

Проанализируем данную проблему подробнее, выясним причину ее возникновения и разберем по шагам доступные способы восстановления работоспособности системы.

Выясним причину возникновения ошибки

Появление реквизита УдержатьНДФЛАванса напрямую связано с масштабными изменениями в законодательстве, а именно в учете НДФЛ с 1 января 2023 года согласно Федеральному закону № 263-ФЗ. По новым правилам работодатели обязаны исчислять и удерживать НДФЛ при каждой выплате дохода, включая аванс (зарплату за первую половину месяца). Для реализации этого механизма разработчики добавили новый флаг на форму документа начисления зарплаты.

Техническая причина ошибки кроется в рассинхронизации программного кода и визуальных элементов формы при обновлении через файл обновления (формат .cfu). В модуле формы разработчики прописали логику управления видимостью чекбокса, обращаясь к ЭлементыФормы.УдержатьНДФЛАванса.Видимость. Однако сам элемент управления на форму либо забыли поместить при сборке файла обновления, либо платформа некорректно объединила форму при накатывании релиза. В результате при открытии документа код пытается найти элемент, которого физически нет в интерфейсе, что и вызывает исключение.

Способ 1. Загрузка конфигурации из полного дистрибутива (файла .cf)

Посмотрим на самое надежное и быстрое решение, если у вас нет возможности или желания переписывать код. Проблема проявляется только при последовательном обновлении файлом .cfu. Полный дистрибутив конфигурации (файл .cf) содержит целостные метаданные, в которых реквизит на форме присутствует изначально.

  1. Сделайте резервную копию вашей информационной базы.
  2. Откройте базу в режиме Конфигуратор.
  3. В меню выберите пункт Конфигурация -> Загрузить конфигурацию из файла... (либо используйте метод Сравнить и объединить с конфигурацией из файла, если у вас нетиповая база с доработками).
  4. Выберите полный файл конфигурации 1Cv8.cf релиза 1.3.194.2.
  5. Дождитесь окончания процесса загрузки или объединения. При объединении убедитесь, что форма документа «Начисление зарплаты работникам организаций» замещается версией из файла.
  6. Примите изменения и обновите конфигурацию базы данных (клавиша F7).

После этого элемент корректно появится на форме, и ошибка при открытии документа исчезнет.

Способ 2. Обновление на исправленный релиз

Разберем ситуацию, когда вы можете немного подождать или имеете под рукой свежие обновления. Разработчики 1С признали наличие проблемы в релизе 1.3.194.2. Для исправления этой ошибки был оперативно выпущен следующий релиз — 1.3.195.1.

Если вы столкнулись с этой проблемой, самым логичным шагом будет просто продолжить обновление и накатить следующий патч 1.3.195.1 (или более новый), в котором этот баг метаданных уже устранен официально. Обновление производится стандартным способом через поддержку пользователя.

Способ 3. Ручное исправление в Конфигураторе (для программистов)

Если у вас нет полного файла .cf, нет доступа к новым релизам, а зарплату считать нужно прямо сейчас, проанализируем, как можно решить проблему вручную.

Вариант А: Добавление реквизита на форму

  1. Откройте конфигурацию, найдите документ НачислениеЗарплатыРаботникамОрганизаций.
  2. Откройте форму документа ФормаДокумента.
  3. Добавьте на форму новый элемент управления — флажок (чекбокс).
  4. В свойствах элемента установите Имя — УдержатьНДФЛАванса.
  5. Сохраните изменения и обновите конфигурацию базы данных.

Это позволит коду находить нужный элемент и отрабатывать без ошибок. Однако помните, что нужно правильно настроить привязки данных реквизита, чтобы значение сохранялось в документе.

Вариант Б: Комментирование проблемного кода

В качестве быстрого «костыля», чтобы документ хотя бы открывался, можно закомментировать строки, вызывающие ошибку:


// ЭлементыФормы.УдержатьНДФЛАванса.Видимость = НачалоМесяца(ПериодРегистрации) = ДобавитьМесяц(ПроведениеРасчетов.ДатаЗакона263ФЗ, -1) И ПериодНачисления = Перечисления.ПериодНачисленияЗарплаты.ПерваяПоловинаТекущегоМесяца;
// ПоказатьФлажокУдержатьНДФЛАванса;

Внимание: при использовании этого метода функционал удержания НДФЛ с аванса может работать некорректно или его визуальный контроль будет недоступен. Данный метод стоит использовать только как крайнюю временную меру до установки нормального обновления конфигурации.

← На главную