При активном внедрении и доработке типовых конфигураций 1С программисты часто используют механизм расширений. Это позволяет минимизировать изменения в основной конфигурации и упростить процесс последующих обновлений. Однако разработчики нередко сталкиваются со следующей проблемой: в расширение добавляется новый реквизит документа или справочника, он выносится на форму, но при запуске сеанса «1С:Предприятие» под обычным пользователем этот реквизит оказывается невидимым. Рассмотрим подробнее, почему так происходит, проанализируем причины этой проблемы и разберем по шагам несколько надежных способов ее решения.
Если добавленный реквизит отображается в конфигураторе на форме расширения, но отсутствует в режиме предприятия, причина практически всегда кроется в одной из двух плоскостей:
Объект) и связывать элемент интерфейса с реальным путем к данным расширенного объекта.Проанализируем детально каждый шаг, который необходимо выполнить для устранения этой проблемы.
Для того чтобы система разрешила пользователю видеть и редактировать новый реквизит, необходимо создать специальную роль в расширении и связать ее с пользователем. Разберем, как это сделать.
Способ А. Создание новой роли внутри расширения
Этот способ является классическим и наиболее точечным для управления правами:
Расш1_ОсновнаяРоль).РеализацияТоваровУслуг) и добавленный к нему реквизит (например, Отгружено).Способ Б. Программное назначение роли пользователю
После создания роли в расширении ее необходимо физически назначить пользователю информационной базы. Если вы работаете на платформе ниже 8.3.14 или не используете интеграцию с БСП, это можно сделать с помощью выполнения несложного программного кода под учетной записью администратора:
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени("Иванов");
ПользовательИБ.Роли.Добавить(Метаданные.Роли.Расш1_ОсновнаяРоль);
ПользовательИБ.Записать();
Способ В. Назначение роли через интерфейс БСП (современный подход)
Если вы работаете в современной конфигурации на базе Библиотеки стандартных подсистем (БСП), то создавать программные обработки для назначения ролей не требуется. Выполните следующие действия в режиме «1С:Предприятие»:
Способ Г. Использование свойства «Использовать основные роли для всех пользователей»
Начиная с версии платформы 8.3.14, у расширений появилось крайне полезное свойство. Выделите корневой элемент вашего расширения в дереве метаданных, откройте палитру свойств и найдите флажок Использовать основные роли для всех пользователей. Если этот флажок установлен, то все роли, отмеченные в расширении как основные, автоматически начнут действовать для каждого пользователя в базе, что избавляет от необходимости ручного назначения прав.
Даже при наличии всех необходимых прав реквизит не отобразится, если интерфейсный элемент формы не связан с данными расширенного объекта БД. Давайте проверим корректность проектирования формы в конфигураторе:
Объект) заимствован в расширение. Он должен быть выделен жирным шрифтом.Объект. Вы должны увидеть ваш новый реквизит Отгружено внутри этой структуры.Объект.Отгружено из дерева реквизитов в нужное место на форме (например, в группу основных реквизитов шапки документа).Объект.Отгружено.Хотя добавление реквизитов через расширения позиционируется как современный и удобный стандарт разработки, необходимо помнить о важных архитектурных особенностях платформы 1С:
Таким образом, всегда взвешивайте целесообразность добавления физических реквизитов в расширение. Для простых задач автоматизации часто бывает выгоднее и безопаснее использовать стандартный механизм БСП — Дополнительные реквизиты и сведения, данные которых хранятся в типовых регистрах сведений и не подвержены риску случайного удаления при манипуляциях с расширениями.