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