После установки обновлений в конфигурациях на обычных формах (таких как «1С:Зарплата и управление персоналом 2.5», «1С:Комплексная автоматизация 1.1» или «1С:Управление производственным предприятием 1.3») пользователи могут столкнуться с аварийным завершением работы при создании или открытии расчетных документов. Ошибка возникает в таких документах, как Начисление отпуска работникам организаций, Начисление по больничному листу, Расчет при увольнении сотрудника организаций и других.
В окне сообщения об ошибке выводится следующий текст:
{ОбщийМодуль.РаботаСДиалогамиЗК.Модуль(926)}: Поле объекта не обнаружено (ПримененныйВычетНаДетейИнвалидовОпекунов)КолонкиНДФЛ.ПримененныйВычетНаДетейИнвалидовОпекунов.ТекстШапки = Представления[Справочники.ВычетыНДФЛ.Код117о];
Разберем причины возникновения данной ошибки и рассмотрим подробные варианты ее устранения.
Проанализируем механизм работы платформы и подсистемы расчета зарплаты. Ошибка связана с законодательными изменениями по учету стандартных налоговых вычетов по НДФЛ, в результате которых произошло разделение кодов вычетов на детей для родителей и опекунов/попечителей.
В связи с этим разработчики добавили новые реквизиты в табличные части документов и обратились к ним в общем модуле РаботаСДиалогамиЗК в процедуре ОформитьКолонкиНДФЛ:
КолонкиНДФЛ.ПримененныйВычетНаДетейИнвалидовОпекунов.ТекстШапки = Представления[Справочники.ВычетыНДФЛ.Код117о];
КолонкиНДФЛ.ПримененныйВычетНаДетейОпекунов.ТекстШапки = Представления[Справочники.ВычетыНДФЛ.Код130];
Однако в коллекцию КолонкиНДФЛ передаются колонки табличного поля формы (ЭлементыФормы.НДФЛ.Колонки). Если конфигурация была снята с поддержки или формы документов были изменены, при обновлении новые элементы управления автоматически на визуальную форму не добавляются. При прямом обращении через точку к свойству коллекции, колонка с именем ПримененныйВычетНаДетейИнвалидовОпекунов на форме отсутствует, что и приводит к падению с исключением «Поле объекта не обнаружено».
Рассмотрим по шагам, как добавить недостающие реквизиты на форму документа вручную:
Начисление по больничному листу или Начисление отпуска работникам организаций).Панель данных -> ОборотБольничного -> ПанельОборотБольничного -> НДФЛ).НДФЛ и выберем пункт меню «Размещение данных».ПримененныйВычетНаДетейИнвалидовОпекунов, ПримененныйВычетНаДетейОпекунов и другие новые поля вычетов).Если колонка уже отображается в списке размещения данных, но ошибка сохраняется, снимем флажок, сохраним изменения формы, затем снова установим флажок и повторно сохраним форму.
Если в вашей информационной базе изменено много документов расчета заработной платы, ручная правка каждой формы может занять значительное время. Разберем программный способ решения, который устраняет ошибку сразу для всей конфигурации.
Для этого внесем изменения в процедуру ОформитьКолонкиНДФЛ общего модуля РаботаСДиалогамиЗК. Рассмотрим два варианта кода:
Вариант А: Использование метода Найти() перед установкой заголовка
Вместо прямого обращения заменим вызовы на безопасный поиск колонки в коллекции:
Колонка = КолонкиНДФЛ.Найти("ПримененныйВычетНаДетейИнвалидовОпекунов");
Если Колонка <> Неопределено Тогда
Колонка.ТекстШапки = Представления[Справочники.ВычетыНДФЛ.Код117о];
КонецЕсли;
Колонка = КолонкиНДФЛ.Найти("ПримененныйВычетНаДетейОпекунов");
Если Колонка <> Неопределено Тогда
Колонка.ТекстШапки = Представления[Справочники.ВычетыНДФЛ.Код130];
КонецЕсли;
Вариант Б: Использование конструкции Попытка ... Исключение
Обернем блок установки заголовков в обработку исключительных ситуаций:
Попытка
КолонкиНДФЛ.ПримененныйВычетНаДетейИнвалидовОпекунов.ТекстШапки = Представления[Справочники.ВычетыНДФЛ.Код117о];
КолонкиНДФЛ.ПримененныйВычетНаДетейОпекунов.ТекстШапки = Представления[Справочники.ВычетыНДФЛ.Код130];
Исключение
// Игнорируем ошибку, если колонка не выведена на форму документа
КонецПопытки;
Фирма «1С» выпустила официальные релизы с исправлением данной ошибки:
Если используется типовая конфигурация на поддержке без доработок, рекомендуется выполнить обновление конфигурации на актуальный релиз, в котором ошибка полностью устранена разработчиками платформы.