С задачей «как сделать так, чтобы кладовщик Иванов видел документы только своего склада?» сталкивался, наверное, каждый администратор/разработчик. «Продвинутые» специалисты знают, что в конфигурациях на основе БСП доступен механизм разделения доступа на уровне записей, он же RLS и автоматически посоветуют заказчику самостоятельно настроить доступ с использованием данного функционала и не отвлекать специалистов по пустякам.
С одной стороны, это хорошо, что данная возможность предоставляется типовыми средствами, а с другой – этой возможностью еще нужно уметь воспользоваться, что, поверьте, не так и очевидно.
Итак, пусть в типовой УТ требуется ограничить доступ нескольких кладовщиков/менеджеров/продавцов только к своим складам/подразделениям. Другими словами, предоставить стандартный для выполняемых данными работниками обязанностей перечень ролей, при этом ограничить эти возможности только одним складом/подразделением, то есть:
- Ограничить возможность просмотра/выбора документов, оформленных на иные склады/подразделения, в списках и журналах.
- Не отображать в соответствующих справочниках иных складов/подразделений.
- Не позволять оформлять документы на иные подразделения.
Начать следует с включения функциональных опций в разделе НСИ и Администрирование – Настройка пользователей и прав. Далее будем работать только с этой командой, поэтому сообщать ниже ее расположение не буду.
Для активации функционала ограничения доступа следует включить функциональную опцию Ограничивать доступ на уровне записей. Можно дополнительно настроить вариант работы: стандартный и производительный. Если кратко, то рекомендовано использовать вариант производительный, а в случае, когда начнут возникать проблемы, переключить на стандартный.
Для большего удобства назначения наборов прав пользователей (особенно при их серьезном количестве) рекомендую включить опцию Группы пользователей – о ней речь пойдет далее.
Теперь нужно настроить группы доступа для каждого склада/подразделения.
В типовой конфигурации изначально имеется несколько наборов групп доступа и удобно воспользоваться ими для создания отдельных групп доступа для каждого склада/подразделения.
Например, на основании групп доступа: Кладовщик, Менеджер по продажам, Менеджер по закупкам следует создать такие же по доступным ролям группы, но с ограничением по каждому из складов: Кладовщик (Магазин 1), Кладовщик (Магазин 2)…
Это удобно сделать копированием типовых групп доступа с последующей доработкой каждой.
Если планируется создание нескольких групп, объединенных в рамках каждого склада(магазина), удобно заранее создать группы в справочнике для каждого из разделителей, и новые группы доступа сосредотачивать по группам. Хотя соглашусь, что понятие Группы групп доступа находится за рамками логики.
Группы доступа в дальнейшем будут назначаться конечным пользователям (их группам) и предоставлять права в рамках ролей, определенных в соответствующем профиле групп доступа.
Если вводить группы копированием советующих, то новой группе назначается профиль копируемой. Если же создается новая группа, то следует подобрать подходящий профиль из набора предопределенных.
Когда функциональная опция Ограничивать доступ на уровне записей включена, в форме справочника Группы доступа появляется закладка Ограничение доступа.
В верхней таблице приведены варианты видов доступа и значение доступа (вариант ограничения). В данную таблицу нельзя добавлять строки, можно лишь изменять значение доступа на один из двух вариантов: Все разрешены(по умолчанию) и все запрещены.
Вариант «все запрещены» предоставляет доступ только к указанным в нижней таблице значениям соответствующих данных – например, элементов справочника склады.
«Все разрешены» разрешает доступ ко всем советующим значениям доступа, за исключением указанных в нижней таблице.
В нашей задаче требуется предоставить доступ только к одному складу/подразделению, поэтому воспользуемся первым вариантом и добавим единственный нужный склад/подразделение для каждой группы.
Таким образом необходимо подготовить набор групп доступа для каждого из магазинов.
Настала очередь назначения пользователям созданных групп доступа.
Сделать это можно как минимум тремя способами:
- В группе доступа на закладке Участники группы включить пользователей в текущую группу.
- В списке пользователей выбрать пользователя. В форме пользователя на закладке права доступа по кнопке Включить в группу добавить необходимые роли.
- Если включена опция группы пользователей, то добавить роли можно каждой из групп.
Рассмотрим 3-й способ.
Порядок включения в группы доступа для групп и для отдельных пользователей аналогичен:
Однако очевидным достоинством данного способа является отсутствие необходимости определения групп доступа для каждого пользователя группы.
При создании нового пользователя в рамках группы, этому пользователю по умолчанию назначаются группы доступа, определенные для пользовательской группы.
При переносе из группы в группу (например, при переводе работника на другой склад) группы доступа по умолчанию определяются по новой группе.
После настройки групп доступа и включения в них пользовательских групп рекомендуется проверить работу ограничений, для этого создать тестового пользователя и переносить его в разные группы доступа.
Запустив сеанс тестового пользователя следует убедиться, что, например, в справочнике Склады/Магазины имеется только один «свой» склад.
Замечания:
- Разработчикам/администраторам следует иметь ввиду, что Группы пользователей не являются группами иерархии справочника Пользователи в понимании платформы. Группы пользователей реализованы в виде отдельного справочника, связанного с пользователями через регистр сведений Состав групп пользователей.
- При назначении групп доступа пользователям с ограничением доступа необходимо учитывать, что ограничение доступа пользователя будет срабатывать, если пользователю назначены группы доступа, в каждой из которых задано ограничение по одному складу. Если в какой-либо группе не установлено ограничение по складу или это ограничение не доступна, задача разделения по складам не будет решена.
Например, на рисунке выше в списке ограничений есть ограничение по складам, но отсутствует ограничение по подразделениям.
Однако есть способ добавления вида ограничения в группе доступа, если такое ограничение не предусмотрено. Для этого необходимо изменить профиль групп доступа. При этом нужно понимать, что профили, имеющиеся в справочнике изначально, являются предопределенными и их изменение невозможно. Для дополнения ограничений следует создать новый профиль путем копирования советующего предопределенного. При этом в новый профиль копируются доступные роли и ограничения.
Например, скопировав профиль работник склада, создать новый Работник склада с ограничениями.
При редактировании нового (непредопределенного) профиля на закладке Ограничения в верхней таблице доступна кнопка Добавить, позволяющая задать новое ограничение, например по подразделениям.
В отличие от группы доступа в качестве значения доступа предлагается выбор из четырех вариантов:
- Все запрещены, исключения назначаются в группах доступа
- Все разрешены, исключения назначаются в группах доступа
- Все запрещены, исключения назначаются в профиле
- Все разрешены, исключения назначаются в профиле
Для первых двух вариантов заполнение нижней таблицы не предусмотрено. Для нашей задачи целесообразно выбрать 1-й вариант. 2-й тоже подходит, только в группе доступа при назначении ограничения по складу потребуется изменить значение по умолчанию.
Теперь подготовленные профили с ограничениями можно назначать группам доступа, при этом назначая конкретны склады/подразделения для каждой группы.
Следует отметить, что в отдельных типовых конфигурациях, например 1С: Бухгалтерия предприятия 3.0, в списках ограничений доступа могут присутствовать виды, недоступные для использования, так как их функционал не реализован.
DataFormWizard: Управление данными и формами в 1С 8.3
Проверки ввода данных в 1С, скрытие от пользователя недоступных ему данных, выполнение кода в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.