Почему не отображается реквизит, добавленный через расширение в 1С, и как это исправить?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей IT и автоматизация бизнеса
← На главную

При активном внедрении и доработке типовых конфигураций 1С программисты часто используют механизм расширений. Это позволяет минимизировать изменения в основной конфигурации и упростить процесс последующих обновлений. Однако разработчики нередко сталкиваются со следующей проблемой: в расширение добавляется новый реквизит документа или справочника, он выносится на форму, но при запуске сеанса «1С:Предприятие» под обычным пользователем этот реквизит оказывается невидимым. Рассмотрим подробнее, почему так происходит, проанализируем причины этой проблемы и разберем по шагам несколько надежных способов ее решения.

Выясняем причины: почему реквизит скрыт?

Если добавленный реквизит отображается в конфигураторе на форме расширения, но отсутствует в режиме предприятия, причина практически всегда кроется в одной из двух плоскостей:

  1. Отсутствие прав доступа (ролей). Любой новый объект или реквизит, добавленный через расширение, по умолчанию закрыт для пользователей информационной базы. Даже если у пользователя есть полные права в основной конфигурации, он не увидит новый реквизит расширения, пока ему не будет явно назначена соответствующая роль из этого расширения.
  2. Некорректное связывание реквизита на форме. При ручном добавлении реквизитов на заимствованные формы разработчики иногда забывают заимствовать основной реквизит формы (как правило, это Объект) и связывать элемент интерфейса с реальным путем к данным расширенного объекта.

Проанализируем детально каждый шаг, который необходимо выполнить для устранения этой проблемы.

Шаг 1. Настройка прав доступа и ролей в расширении

Для того чтобы система разрешила пользователю видеть и редактировать новый реквизит, необходимо создать специальную роль в расширении и связать ее с пользователем. Разберем, как это сделать.

Способ А. Создание новой роли внутри расширения

Этот способ является классическим и наиболее точечным для управления правами:

  1. В конфигураторе перейдите в окно метаданных вашего расширения.
  2. Найдите ветку Роли, нажмите «Добавить» и создайте новую роль (например, Расш1_ОсновнаяРоль).
  3. В открывшемся окне настройки прав найдите заимствованный документ (например, РеализацияТоваровУслуг) и добавленный к нему реквизит (например, Отгружено).
  4. Установите для этой роли права Чтение и Просмотр (для чтения), а также Изменение и Редактирование (для возможности изменения реквизита пользователем).
  5. Сохраните изменения в расширении.

Способ Б. Программное назначение роли пользователю

После создания роли в расширении ее необходимо физически назначить пользователю информационной базы. Если вы работаете на платформе ниже 8.3.14 или не используете интеграцию с БСП, это можно сделать с помощью выполнения несложного программного кода под учетной записью администратора:


ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени("Иванов");
ПользовательИБ.Роли.Добавить(Метаданные.Роли.Расш1_ОсновнаяРоль);
ПользовательИБ.Записать();

Способ В. Назначение роли через интерфейс БСП (современный подход)

Если вы работаете в современной конфигурации на базе Библиотеки стандартных подсистем (БСП), то создавать программные обработки для назначения ролей не требуется. Выполните следующие действия в режиме «1С:Предприятие»:

  1. Зайдите в систему под правами Администратора.
  2. Перейдите в раздел Администрирование — Настройки пользователей и прав — Профили групп доступа.
  3. Создайте новый профиль (или отредактируйте существующий) и найдите в списке разрешенных ролей вашу новую роль из расширения.
  4. Установите флажок напротив роли расширения и сохраните профиль.
  5. Включите целевых пользователей в группу доступа, созданную на основании этого профиля.

Способ Г. Использование свойства «Использовать основные роли для всех пользователей»

Начиная с версии платформы 8.3.14, у расширений появилось крайне полезное свойство. Выделите корневой элемент вашего расширения в дереве метаданных, откройте палитру свойств и найдите флажок Использовать основные роли для всех пользователей. Если этот флажок установлен, то все роли, отмеченные в расширении как основные, автоматически начнут действовать для каждого пользователя в базе, что избавляет от необходимости ручного назначения прав.

Шаг 2. Проверка размещения реквизита на форме

Даже при наличии всех необходимых прав реквизит не отобразится, если интерфейсный элемент формы не связан с данными расширенного объекта БД. Давайте проверим корректность проектирования формы в конфигураторе:

  1. Откройте заимствованную форму документа в конфигураторе расширения.
  2. Перейдите на вкладку Реквизиты (в правой части экрана конфигуратора формы).
  3. Убедитесь, что основной реквизит формы (обычно это Объект) заимствован в расширение. Он должен быть выделен жирным шрифтом.
  4. Разверните дерево реквизита Объект. Вы должны увидеть ваш новый реквизит Отгружено внутри этой структуры.
  5. Перейдите на вкладку Элементы (левая часть экрана).
  6. Перетащите реквизит Объект.Отгружено из дерева реквизитов в нужное место на форме (например, в группу основных реквизитов шапки документа).
  7. Выделите созданное поле формы и в палитре свойств проверьте свойство ПутьКДанным. Там должно быть строго прописано: Объект.Отгружено.

Важные предупреждения и риски при работе с реквизитами в расширениях

Хотя добавление реквизитов через расширения позиционируется как современный и удобный стандарт разработки, необходимо помнить о важных архитектурных особенностях платформы 1С:

Таким образом, всегда взвешивайте целесообразность добавления физических реквизитов в расширение. Для простых задач автоматизации часто бывает выгоднее и безопаснее использовать стандартный механизм БСП — Дополнительные реквизиты и сведения, данные которых хранятся в типовых регистрах сведений и не подвержены риску случайного удаления при манипуляциях с расширениями.

← На главную