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

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

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

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

Вариант 1. Создание роли через расширение конфигурации (без снятия с поддержки)

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

Разберем последовательность действий:

  1. Перейдем в меню Конфигурация — Расширения конфигурации и добавим новое расширение.
  2. В расширении создадим новую роль, например, с именем ДобавлениеИзменениеСчетовНаОплатуПоставщика и синонимом Добавление и изменение счетов на оплату поставщика.
  3. Добавим в расширение объект метаданных — документ СчетНаОплатуПоставщика.
  4. Для созданной роли назначим необходимые права на документ:

    Чтение, Добавление, Изменение, Просмотр, Интерактивное добавление, Редактирование, Ввод по строке.

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

    Справочники: Организации, Контрагенты, ДоговорыКонтрагентов, БанковскиеСчета, Номенклатура, СтатьиДвиженияДенежныхСредств.

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

Вариант 2. Ограничение через подписки на события в расширении

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

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

&Вместо("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Если ЭтоНовый() И Не Пользователи.ЭтоПолноправныйПользователь() Тогда
        Отказ = Истина;
        ВызватьИсключение НСтр("ru = 'У вас недостаточно прав для изменения данного документа!'");
    КонецЕсли;
КонецПроцедуры

Почему новая роль не появляется у пользователя: обновление вспомогательных данных БСП

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

Выясним причину такого поведения. В конфигурациях на базе БСП (включая 1С:Бухгалтерию 3.0) прямое назначение ролей пользователям в Конфигураторе не используется — состав ролей жестко контролируется подсистемой Управление доступом. При добавлении новых метаданных или ролей подсистема должна зарегистрировать их в справочниках Идентификаторы объектов метаданных и Идентификаторы объектов расширений, а затем пересчитать состав ролей для всех групп доступа.

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

  1. Запуск с параметром обновления: запустим информационную базу в режиме «1С:Предприятие» от имени администратора с параметром командной строки:

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

  2. Использование внешней обработки: если автоматическое обновление не обновило состав ролей, воспользуемся специализированной обработкой из состава БСП — ИнструментыРазработчикаОбновлениеВспомогательныхДанных.epf. В обработке выполним обновление идентификаторов метаданных и данных подсистемы управления доступом.
  3. Программный вызов: перерасчет данных доступа можно вызвать программно в обработке или внешнем коде:
    
    УправлениеДоступомСлужебный.ОбновитьДанныеСправочниковИБ();
    УправлениеДоступом.ОбновитьДанныеУправленияДоступом();
    

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

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

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

Ошибки при открытии списков и журналов документов

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

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

← На главную