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