После обновления конфигураций «1С:Зарплата и управление персоналом» (ЗУП) или «1С:Зарплата и кадры государственного учреждения» (ЗКГУ) на релиз 3.1.5 (и выше) пользователи могут столкнуться с критической ошибкой, которая возникает сразу при запуске программы или при попытке открыть справочник «Сотрудники». В этой статье мы подробно разберем, почему возникает эта проблема и как её быстро устранить.
Проанализируем техническую сторону проблемы. Текст ошибки выглядит следующим образом:
Ошибка при получении значения атрибута контекста (Параметры)... по причине: Поле не найдено "ДанныеДляПодбора.ВидЗанятости"
Дело в том, что начиная с версии 3.1.5, разработчики изменили структуру хранения метаданных в конфигурации. Ранее реквизит ВидЗанятости находился непосредственно в кадровых таблицах и некоторых связанных объектах подбора. В новых релизах этот реквизит был переименован в УдалитьВидЗанятости, а сами данные перенесены в новый периодический регистр сведений ВидыЗанятостиСотрудников.
Платформа 1С сохраняет персональные настройки динамических списков (видимость колонок, отборы, группировки) для каждого пользователя. Если до обновления у пользователя были настроены кастомные отборы или видимость колонок по полю ВидЗанятости в списке сотрудников, то после обновления система пытается применить старые настройки к новому динамическому списку. Так как старого поля в структуре больше нет, платформа выдает ошибку и блокирует открытие формы.
Рассмотрим самый простой способ решения проблемы, который не требует программирования и изменения конфигурации. Нам понадобится очистить сохраненные настройки формы списка для проблемных пользователей.
Разберем процесс по шагам:
Справочники — Сотрудники — Форма списка) для нужного пользователя и нажмите кнопку Очистить.После этого настройки формы будут сброшены до стандартных (заводских), и справочник «Сотрудники» откроется без ошибок.
Если в базе работает большое количество пользователей и ошибка массово повторяется, очищать настройки вручную для каждого сотрудника слишком долго. В этом случае мы можем применить программный метод очистки настроек для всей базы.
Для этого в консоли кода (или через внешнюю обработку) администратор может выполнить следующую команду:
ХранилищеСистемныхНастроек.Удалить("Справочник.Сотрудники.ФормаСписка/НастройкиКомпоновщикаНастроек", , );
Данный код полностью очистит сохраненные настройки компоновщика для формы списка справочника «Сотрудники» у всех пользователей базы данных, что мгновенно решит проблему со сбоем динамического списка.
Иногда настройки динамических списков зависают на уровне локального кэша конкретного рабочего компьютера. Если очистка настроек в режиме «1С:Предприятие» не дала результата, выполните следующие действия:
%userprofile%\AppData\Local\1C\1cv8%userprofile%\AppData\Roaming\1C\1cv8Если ошибка возникает не в типовой форме, а при работе сторонних отчетов, обработок или доработанных расширений, это означает, что в их запросах по-прежнему жестко прописано обращение к старому полю. В этом случае потребуется скорректировать код:
ВидЗанятости.ЛЕВОЕ СОЕДИНЕНИЕ) с новым периодическим регистром сведений:
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВидыЗанятостиСотрудников.СрезПоследних(&Период, ) КАК ВидыЗанятостиСотрудников
ПО ДанныеДляПодбора.Сотрудник = ВидыЗанятостиСотрудников.Сотрудник
КадровыйУчет.КадровыеДанныеСотрудников() автоматически определяет актуальные метаданные вашей версии конфигурации и корректно возвращает сведения о виде занятости без прямой привязки к изменившимся таблицам базы данных.