Как правильно настроить права доступа в 1С:Бухгалтерия 3.0: решаем проблему скрытых кнопок и слетающих ролей

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

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

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

Проблема №1: Ловушка роли «Только просмотр» и программные ограничения форм

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

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

Проанализируем программный код, на который часто натыкаются разработчики при совмещении ролей:


// Условный пример логики в модуле формы документа
Если РольДоступна("ТолькоПросмотр") Тогда
    ЭтаФорма.ТолькоПросмотр = Истина;
    // Или принудительное отключение доступности элементов управления:
    Элементы.ФормаСоздать.Доступность = Ложь;
КонецЕсли;

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

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

Проблема №2: Почему роли «слетают» в Конфигураторе и как работает синхронизация БСП

Многие разработчики по привычке назначают роли пользователям напрямую в Конфигураторе. Однако в БСП управление доступом полностью перенесено в режим «1С:Предприятие».

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

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

Шаг 1. Создание роли в Конфигураторе

Создаем роль в Конфигураторе (или в расширении конфигурации). Настраиваем требуемые права доступа на объекты метаданных (например, на чтение, просмотр, ввод новых и редактирование документа «Счет на оплату покупателю»).

Шаг 2. Обновление справочника идентификаторов метаданных

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

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

/C ЗапуститьОбновлениеИнформационнойБазы

Или выполните в консоли кода (или через групповую обработку) следующий программный вызов под полными правами:


УстановитьПривилегированныйРежим(Истина);
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(Истина, Ложь);

Шаг 3. Обновление параметров работы пользователей

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


Константы.ПараметрыРаботыПользователей.СоздатьМенеджерЗначения().ОбновитьОбщиеПараметры();

Шаг 4. Настройка Профиля групп доступа в режиме Предприятия

Теперь переходим в режим «1С:Предприятие» и выполняем настройку интерфейса прав:

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

Важный нюанс: Тестирование под Полными правами

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

Использование расширений конфигурации для создания новых ролей

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

Решение задачи без программирования (для Счетов и Прихода ТМЗ)

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

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

  1. ДобавлениеИзменениеСчетовНаОплатуПокупателям — отвечает за выписку счетов.
  2. ДобавлениеИзменениеПоступленийТоваровУслуг — отвечает за приход ТМЗ и услуг.
  3. ЗапускТонкогоКлиента и БазовыеПраваБП — необходимы для успешного входа в программу и чтения базовых справочников (Организации, Контрагенты, Номенклатура).

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

← На главную