При настройке штатного расписания в 1С:ERP Управление предприятием разработчики и кадровые специалисты нередко сталкиваются с ситуацией, когда поле ОсобыеУсловияТруда (или ОсобыеУсловияТрудаПФР) отсутствует на форме позиции штатного расписания. При этом попытка проверить элемент в отладчике может поставить в тупик: свойство Элементы.ОсобыеУсловияТрудаПФР.Видимость возвращает значение Истина, однако самого поля на экране нет. Разберем по шагам, с какими настройками системы связано такое поведение и как устроен платформенный механизм управления видимостью.
Проанализируем прикладную причину скрытия реквизитов льготного пенсионного обеспечения. В типовых конфигурациях отображение параметров пенсионных льгот жестко привязано к учетной политике конкретной организации. Если на предприятии официально не ведутся вредные или тяжелые виды работ, интерфейс формы штатного расписания освобождается от лишних полей.
Чтобы реквизит появился на форме позиции штатного расписания, выполним следующие действия:
После включения данной опции для организации блок реквизитов для учета льготного стажа и условий труда ПФР станет доступен для редактирования.
Выясним причину, почему в отладчике свойство Элементы.ОсобыеУсловияТрудаПФР.Видимость равно Истина, а в составе функциональных опций ИспользуютсяРаботыСДосрочнойПенсией и ИспользуютсяРаботыСДосрочнойПенсиейРасширенная этот реквизит напрямую не указан.
Рассмотрим особенности управляемых форм платформы «1С:Предприятие 8.3»:
Видимость = Истина.Организация. Видимость рассчитывается динамически для той организации, которая выбрана в документе или элементе справочника. В типовом коде при смене организации вызывается метод УстановитьПараметрыФункциональныхОпцийФормы(), который актуализирует состав доступных групп.Если требуется программно определить, почему элемент не отображается на экране при значении Видимость = Истина, проанализируем цепочку вышестоящих родителей. Посмотрим на пример кода, позволяющего обойти дерево элементов формы до корня:
ТекущийРодитель = Элементы.ОсобыеУсловияТрудаПФР.Родитель;
Пока ТекущийРодитель <> Неопределено Цикл
Если НЕ ТекущийРодитель.Видимость Тогда
ВызватьИсключение "Элемент скрыт родительской группой: " + ТекущийРодитель.Имя;
КонецЕсли;
ТекущийРодитель = ТекущийРодитель.Родитель;
КонецЦикла;
Если все родители имеют флаг Видимость = Истина, проверим значение опции вручную в контексте выбранной организации:
ПараметрыОпции = Новый Структура("Организация", Объект.Организация);
ЗначениеОпции = ПолучитьФункциональнуюОпцию("ИспользуютсяРаботыСДосрочнойПенсией", ПараметрыОпции);
Если в настройках организации признак досрочной пенсии включен, но поле по-прежнему не появилось, разберем влияние персональных настроек интерфейса: