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