Как ограничить права пользователя только двумя документами в 1С:Бухгалтерия строительной организации 3.1?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет Промышленность, строительство и АПК
← На главную

Переход с платформы 1С 8.2 на 8.3 и смену редакций конфигураций (с 2.0 на 3.0/3.1) часто сопровождает вопрос: куда исчезли привычные интерфейсы и как теперь ограничить пользователя, чтобы он видел только необходимые ему объекты? В обычных формах задача решалась созданием отдельного интерфейса. В управляемых формах 1С:Бухгалтерия строительной организации (БСО) логика изменилась: теперь за видимость и доступность отвечают подсистемы, роли и функциональные опции. Рассмотрим подробно, как решить задачу ограничения доступа пользователя всего до двух документов: Авансовый отчет и Поступление товаров и услуг.

Метод 1. Создание минималистичной роли (Аддитивный подход)

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

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

Метод 2. Ограничение через профили групп доступа (БСП)

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

Проанализируем ситуацию: в разделе Администрирование — Настройки пользователей и прав — Профили групп доступа мы можем создать новый профиль. Рассмотрим преимущества этого метода:

Почему возникает ошибка "Нарушение доступа" и как её отловить?

Выясним причину, по которой даже при наличии прав на документ система выдает ошибку. В отраслевых решениях, таких как БСО от компании "Рарус", часто встроена система лицензирования (СЛК). Если у пользователя нет прав на объекты, связанные с защитой конфигурации, или на специализированные общие модули, программа будет аварийно завершаться.

Для диагностики используем следующие инструменты:

  1. Журнал регистрации: Перейдем в него сразу после возникновения ошибки. Ищем записи с уровнем "Ошибка" и событием "Отказ в доступе". Там будет четко указано имя объекта (например, Константа.ПараметрыЗащиты или РегистрСведений.Лицензии), к которому не хватило прав.
  2. Остановка по ошибке: В конфигураторе выберем меню Отладка — Остановка по ошибке. Установим флажок "При возникновении исключения". Теперь при возникновении ошибки система сама откроет код на той строке, где происходит обращение к запрещенному объекту.
  3. Технологический журнал: В сложных случаях настроим сбор логов через файл logcfg.xml, указав событие EXCP.

Метод 3. Настройка интерфейса (Визуальное ограничение)

Если задача стоит не в жестком запрете (безопасности), а в удобстве пользователя ("чтобы глаза не разбегались"), можно пойти путем настройки интерфейса. Рассмотрим, как это сделать без изменения прав доступа:

В режиме "1С:Предприятие" под учетной записью пользователя нажмем на кнопку Настройка — Настройка панели разделов. Удалим все разделы, кроме "Покупки" или "Главное". Затем в Настройке навигации внутри раздела уберем все документы, кроме нужных нам Авансовых отчетов и Поступлений.

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

Специфика БСО и работа с подсистемами

В управляемом приложении роль интерфейсов играют подсистемы. Чтобы быстро понять, какие роли дают доступ к конкретному разделу, проанализируем структуру конфигурации:

  1. Откроем объект Подсистема в дереве метаданных.
  2. Посмотрим на закладку "Состав". Здесь перечислены все документы и справочники, входящие в неё.
  3. Чтобы дать права на всю подсистему, нам придется найти все роли, в которых эти объекты разрешены на чтение.

Для быстрого поиска прав в коде или консоли запросов можно обращаться к метаданным. Например, чтобы проверить права текущего пользователя программно, используем конструкцию:


Если ПравоДоступа("ИнтерактивноеДобавление", Метаданные.Документы.АвансовыйОтчет) Тогда
    // Логика доступна
КонецЕсли;

Резюме: Для реализации задачи "только два документа" в 1С:Бухгалтерия строительной организации наиболее правильным будет создание Профиля группы доступа, в который войдут: базовая роль Пользователь, специализированная роль для работы с защитой (СЛК) и ваша кастомная роль с полными правами на два документа и правами на чтение основных справочников. Это обеспечит стабильную работу без ошибок доступа и чистоту интерфейса.

← На главную