При настройке прав пользователей в типовой конфигурации 1С:Бухгалтерия предприятия 3.0 часто возникает задача ограничить сотрудника режимом «Только просмотр» для всех разделов учета, но оставить возможность создавать и редактировать строго определенные документы — например, Счет на оплату покупателю и Счет на оплату поставщика.
Для документа Счет на оплату покупателю в типовой конфигурации предусмотрена отдельная роль ДобавлениеИзменениеСчетовНаОплатуПокупателю. Однако для документа Счет на оплату поставщика такой изолированной роли «из коробки» нет. Разберем по шагам, как решить эту задачу с минимальным вмешательством в конфигурацию, как правильно применить механизмы БСП (Библиотеки стандартных подсистем) и почему после добавления роли права могут не применяться автоматически.
Чтобы конфигурация осталась на полной поддержке и не возникало сложностей при последующих обновлениях, оптимально вынести недостающую роль в расширение конфигурации со значением назначения Адаптация или Дополнение.
Разберем последовательность действий:
ДобавлениеИзменениеСчетовНаОплатуПоставщика и синонимом Добавление и изменение счетов на оплату поставщика.СчетНаОплатуПоставщика.Чтение, Добавление, Изменение, Просмотр, Интерактивное добавление, Редактирование, Ввод по строке.
Справочники: Организации, Контрагенты, ДоговорыКонтрагентов, БанковскиеСчета, Номенклатура, СтатьиДвиженияДенежныхСредств.
Служебные регистры сведений: версионирование, статусы документов, присоединенные файлы (если используются).
Если требуется запретить редактирование других документов без создания гранулярных ролей, можно использовать альтернативный подход через перехват событий:
ПередЗаписью модуля объекта нужных документов.СчетНаОплатуПокупателю или СчетНаОплатуПоставщика), процедура прерывает запись с выдачей предупреждения:
&Вместо("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ЭтоНовый() И Не Пользователи.ЭтоПолноправныйПользователь() Тогда
Отказ = Истина;
ВызватьИсключение НСтр("ru = 'У вас недостаточно прав для изменения данного документа!'");
КонецЕсли;
КонецПроцедуры
Распространенная ситуация: роль создана, добавлена в Профиль групп доступа, профиль назначен пользователю через справочник Группы доступа, но при проверке через функцию ПравоДоступа программа возвращает значение Ложь, а в конфигураторе у пользователя флажок роли снят.
Выясним причину такого поведения. В конфигурациях на базе БСП (включая 1С:Бухгалтерию 3.0) прямое назначение ролей пользователям в Конфигураторе не используется — состав ролей жестко контролируется подсистемой Управление доступом. При добавлении новых метаданных или ролей подсистема должна зарегистрировать их в справочниках Идентификаторы объектов метаданных и Идентификаторы объектов расширений, а затем пересчитать состав ролей для всех групп доступа.
Разберем по шагам, как выполнить обновление служебных данных подсистемы прав:
/C ЗапуститьОбновлениеИнформационнойБазы
ИнструментыРазработчикаОбновлениеВспомогательныхДанных.epf. В обработке выполним обновление идентификаторов метаданных и данных подсистемы управления доступом.
УправлениеДоступомСлужебный.ОбновитьДанныеСправочниковИБ();
УправлениеДоступом.ОбновитьДанныеУправленияДоступом();
После корректного обновления метаданных настроим права в пользовательском интерфейсе:
Только просмотр;БазовыеПраваБСП, ЗапускУправляемогоКлиента и аналогичные);ДобавлениеИзменениеСчетовНаОплатуПокупателю;ДобавлениеИзменениеСчетовНаОплатуПоставщика.Проанализируем частую проблему: после настройки прав пользователь успешно открывает форму счета, но при попытке открыть общий журнал операций или журнал документов возникает ошибка нарушения прав доступа.
Причина заключается в том, что для отображения динамических списков и общих журналов (например, Журнал операций) платформе требуются права на Чтение и Просмотр для каждого типа документов, входящих в состав журнала. Если хотя бы на один входящий документ у пользователя нет права на просмотр, весь журнал будет недоступен. Чтобы исключить эту ошибку, убедимся, что роль Только просмотр назначена пользователю и покрывает все входящие в журнал объекты метаданных.