Как правильно создать новую роль в расширении 1С без снятия конфигурации с поддержки

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

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

Разбираем ошибку: «Назначение прав доступа основными ролями недопустимо»

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

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

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

Решаем проблему запуска: «Нет прав на запуск требуемого вида клиента»

Выясним, почему после успешного создания роли пользователь не может войти в систему. Ошибка «Нет прав на запуск требуемого вида клиента» означает, что у пользователя в совокупности всех назначенных ему ролей отсутствует право на технический старт приложения. Одной лишь роли «Менеджер по номенклатуре» недостаточно для работы программы.

Проанализируем минимально необходимый набор прав для запуска:

  1. Права на запуск клиента: в роли должны быть отмечены права ТонкийКлиент, ТолстыйКлиент или WebКлиент в зависимости от способа подключения.
  2. Интерфейсные права: право на Вывод данных.
  3. Системные права: в современных конфигурациях на базе БСП (Бизнес-стандартные подсистемы, такие как УТ 11, ERP, БП 3.0) пользователю обязательно требуется роль «Стандартные права» или «Базовые права».

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

Почему не появляется кнопка «Создать»: интерактивные права и зависимости

Допустим, база запустилась, роль назначена, пользователь видит список номенклатуры, но не может добавить новый элемент — кнопка «Создать» отсутствует. Рассмотрим причины такого поведения интерфейса.

Во-первых, проанализируем разницу между правом Добавление и Интерактивное добавление. В настройках роли 1С разделяет эти действия. Право Добавление позволяет создавать объекты программно (через код), а право Интерактивное добавление отвечает за наличие визуальных элементов управления (кнопок) в формах. Убедитесь, что для справочника Номенклатура в вашей роли расширения установлены обе галочки. Если же вам нужно более гибко управлять визуализацией, можно использовать сторонние решения на настройку доступности элементов формы у пользователей.

Во-вторых, посмотрим на зависимости объектов. В 1С объекты редко существуют изолированно. Например, для создания Номенклатуры пользователю почти всегда нужно выбрать Вид номенклатуры или Единицу измерения. Если у созданной вами роли нет прав на «Чтение» и «Просмотр» этих связанных справочников, система может блокировать создание основного объекта, так как его заполнение станет невозможным.

Влияние функциональных опций и RLS

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

Также стоит учитывать работу RLS (Record Level Security). Важно понимать принцип «суммирования» прав в 1С:

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

Алгоритм правильного внедрения роли через расширение

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

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

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

Пример программной проверки прав

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


Если ПравоДоступа("ВводНового", Метаданные.Справочники.Номенклатура) Тогда
    Сообщить("Пользователь может интерактивно создавать номенклатуру");
Иначе
    Сообщить("Право на интерактивное добавление отсутствует!");
КонецЕсли;

Если РольДоступна("УправлениеНоменклатуройРасш") Тогда
    Сообщить("Роль из расширения успешно подключена сеансу");
КонецЕсли;

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

← На главную