Почему поля формы нового справочника недоступны для редактирования в 1С:ERP?

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

При разработке нового функционала в конфигурациях на базе 1С:Предприятие (в частности, в 1С:ERP, КА или УТ) разработчики нередко сталкиваются с ситуацией: создан новый справочник, создана и назначена роль с правами на чтение, добавление и изменение, однако при открытии формы элемента или создании нового объекта все поля ввода заблокированы (доступны только для чтения), хотя командная панель и кнопка записи остаются активными. При этом под полными правами форма работает корректно.

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

В чем разница между правами «Изменение» и «Редактирование»

В платформе 1С:Предприятие существует четкое разделение прав на уровне объекта и на уровне интерфейсных элементов:

  1. Изменение — базовое право доступа к данным, которое разрешает программную модификацию и запись существующего объекта в базу данных.
  2. Редактирование — интерактивное право, определяющее возможность пользователя изменять значения реквизитов через элементы управления на форме.

Если у пользователя есть право Изменение, но отсутствует право Редактирование на конкретный реквизит или стандартный реквизит, платформа отобразит связанное поле ввода в режиме «только просмотр». Объект при этом можно перезаписать или даже скопировать, но ввести новые данные в заблокированные реквизиты интерактивно не удастся.

Основная причина блокировки: права на реквизиты и стандартные реквизиты

Чаще всего корень проблемы кроется в настройках роли в Конфигураторе. Когда роль создается путем копирования другой роли (например, роли с правами только на просмотр) или настраивается вручную без флага распространения прав, право Редактирование выставляется на корень объекта метаданных (справочник), но не применяется к подчиненным реквизитам.

Проанализируем структуру объекта метаданных. Права назначаются отдельно на:

  1. Сам объект справочника (Чтение, Добавление, Изменение, Удаление, Просмотр, Интерактивное добавление, Редактирование и др.).
  2. Стандартные реквизиты (Наименование, Код, Родитель, Владелец и т.д.).
  3. Пользовательские реквизиты и табличные части объекта.

Если для стандартных реквизитов (например, Наименование или Код) снята галка Редактирование, соответствующие поля на форме будут закрыты для ввода, даже если у самого справочника редактирование разрешено.

Пошаговое решение проблемы в Конфигураторе

Разберем по шагам, как правильно настроить права роли на новый объект метаданных:

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

Особенности работы подсистемы управления доступом БСП в 1С:ERP

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

  1. Обновление прав ролей и вспомогательных данных: БСП кэширует права в служебном регистре сведений Права ролей. После изменения состава ролей или создания новых объектов конфигурации необходимо выполнить обновление служебных данных (например, запуском информационной базы с ключом ЗапуститьОбновлениеИнформационнойБазы) либо обновить кэш программно:
    
    // Выполняется в привилегированном режиме или из внешней обработки
    УправлениеДоступом.ОбновитьПраваРолей();
    
  2. Регистрация метаданных: Новый справочник должен быть зарегистрирован в справочнике Идентификаторы объектов метаданных. Если этого не произошло, алгоритмы БСП могут ограничивать доступ к формам.
  3. Назначение ролей через профили: В 1С:ERP не рекомендуется назначать роли пользователю напрямую в Конфигураторе. Корректный путь — создать или скорректировать Профиль групп доступа в режиме 1С:Предприятие, включить в него созданную роль и назначить профиль пользователю через соответствующую Группу доступа.

Программная диагностика прав

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


// Проверка прав на уровне объекта
ЕстьПравоОбъект = ПравоДоступа("Редактирование", Метаданные.Справочники.НовыйСправочник);

// Проверка прав на стандартный реквизит "Наименование"
ЕстьПравоНаименование = ПравоДоступа("Редактирование", Метаданные.Справочники.НовыйСправочник.СтандартныеРеквизиты.Наименование);

// Проверка прав на пользовательский реквизит
ЕстьПравоРеквизит = ПравоДоступа("Редактирование", Метаданные.Справочники.НовыйСправочник.Реквизиты.Организация);

Сообщить("Право на объект: " + ЕстьПравоОбъект);
Сообщить("Право на Наименование: " + ЕстьПравоНаименование);
Сообщить("Право на Организацию: " + ЕстьПравоРеквизит);

Этот код наглядно покажет, на каком именно уровне (объекта, стандартного реквизита или дополнительного реквизита) отсутствует флаг редактирования, и позволит устранить блокировку полей формы.

← На главную