← На главную
При переходе с устаревшей версии «1С:Зарплата и управление персоналом 2.5» на современную редакцию 3.1 многие администраторы и бухгалтеры сталкиваются с неожиданным поведением системы прав доступа. В версии 2.5 ограничение на уровне записей (RLS) работало достаточно прямолинейно: если пользователю запрещен доступ к организации, она просто исчезала из всех списков выбора. В версии 3.1 часто возникает ситуация, когда бухгалтер видит документы только по своим фирмам, но в общем списке выбора организаций все равно отображается весь холдинг из 10–20 юридических лиц.
В этой статье мы подробно разберем, почему так происходит, проанализируем внутренние механизмы платформы «1С:Предприятие 8.3» и составим пошаговую инструкцию, как скрыть ненужные организации из списка выбора.
Почему одна роль может «сломать» все ограничения
Для начала проанализируем базовый принцип работы подсистемы управления доступом в платформе 1С. Когда пользователю назначается несколько ролей (через одну или несколько групп доступа), система объединяет эти роли по логическому правилу «ИЛИ». Это означает следующее:
Если у пользователя есть хотя бы одна роль, которая разрешает чтение справочника Организации без ограничений, то платформа проигнорирует любые шаблоны ограничений RLS, прописанные в других ролях. Доступ к списку организаций будет предоставлен в полном объеме.
В конфигурации «1С:Зарплата и Управление Персоналом 3.1» существует множество служебных и вспомогательных ролей, создатели которых не предусмотрели ограничения RLS, поскольку эти роли предназначены для технических задач или сдачи отчетности. Если такая роль попадает в профиль группы доступа пользователя, механизм RLS для справочника Организации перестает работать.
Какие роли чаще всего отключают RLS по организациям
Проанализируем список наиболее «проблемных» ролей, добавление которых пользователю открывает видимость всех элементов справочника Организации:
- «Оператор отправки отчетности через представителя» — именно эта роль часто становится причиной сбоя RLS у бухгалтеров. Она необходима для взаимодействия с сервисом «1С-Отчетность», но дает полные права на чтение справочника организаций.
- «Чтение новостей» — часто включается в типовые профили, но может содержать неявные права на чтение ключевой нормативно-справочной информации (НСИ) без ограничений.
- «Передача данных (анонимный доступ)» и роли удаленного доступа (например, для работы по протоколу OData).
- Роли, связанные с сервисом «1С:Кабинет сотрудника».
- «Просмотр протоколов отправки в контролирующие органы».
Шаг 1. Локализуем проблему с помощью встроенного отчета
Прежде чем вносить изменения в конфигурацию или профили, выясним, какая именно роль дает пользователю избыточные права на справочник Организации. Для этого воспользуемся встроенным инструментом диагностики.
- Перейдем в раздел Администрирование, затем выберем пункт Настройки пользователей и прав и откроем справочник Пользователи.
- Найдем в списке нужного бухгалтера, у которого отображаются лишние организации, и откроем его карточку.
- На панели навигации карточки пользователя нажмем кнопку Права доступа.
- В верхней части открывшегося окна нажмем кнопку Отчет по правам доступа.
- В сформировавшемся отчете развернем структуру метаданных и найдем справочник
Организации.
- Проанализируем колонку «Чтение» или «Просмотр». Отчет покажет все роли, назначенные пользователю, и наглядно выделит те, у которых отсутствует значок ограничения (RLS). Именно эти роли нам и необходимо будет исключить из профиля пользователя.
Шаг 2. Создаем и настраиваем нетиповой профиль группы доступа
Поскольку типовые профили (такие как «Расчетчик», «Старший расчетчик», «Кадровик») в ЗУП 3.1 заблокированы от изменений для обеспечения корректного обновления программы, мы настроим индивидуальный профиль путем копирования.
Рассмотрим по шагам, как это сделать:
- Перейдем в раздел Администрирование — Настройки пользователей и прав — Профили групп доступа.
- Найдем типовой профиль, который сейчас назначен пользователю (например, «Расчетчик» или «Бухгалтер»), выделим его и нажмем кнопку Скопировать (или клавишу
F9).
- В новом окне укажем понятное наименование, например: «Расчетчик (с ограничением по организациям)».
- Перейдем на вкладку Разрешенные действия (роли). Нам необходимо найти и снять флажки с тех ролей, которые мы выявили на этапе диагностики (например, снимаем флажок с роли «Оператор отправки отчетности через представителя»).
- Нажмем кнопку Записать и закрыть.
Шаг 3. Настройка ограничений в Группе доступа
Теперь свяжем наш созданный профиль с конкретным пользователем и зададим жесткие ограничения на уровне записей.
- Перейдем в раздел Администрирование — Настройки пользователей и прав — Группы доступа.
- Создадим новую группу доступа (нажав кнопку Создать).
- В поле Профиль выберем созданный нами ранее нетиповой профиль «Расчетчик (с ограничением по организациям)».
- На вкладке Участники добавим нашего пользователя (бухгалтера).
- Перейдем на вкладку Ограничения доступа. В колонке «Вид доступа» выберем
Организации.
- В правой части окна для этого вида доступа установим значение: «Все запрещены, исключения назначаются в группах доступа».
- В появившейся табличной части нажмем кнопку Добавить и выберем только те организации, которые данный бухгалтер имеет право видеть и редактировать.
- Сохраним изменения по кнопке Записать и закрыть.
Важное примечание: Не забудьте зайти в карточку пользователя и убедиться, что у него отключены старые группы доступа, которые базировались на типовых профилях с «лишними» ролями. У пользователя должна остаться только новая, настроенная нами группа доступа.
Влияние RLS на производительность системы
Внедрение разграничения прав на уровне записей (RLS) существенно увеличивает нагрузку на СУБД (MS SQL Server, PostgreSQL и др.). При формировании списков документов или проведении документов начисления зарплаты платформа динамически дописывает к SQL-запросам дополнительные условия фильтрации по разрешенным организациям.
Чтобы программа не «зависала», обязательно проверим следующие настройки:
- Перейдем в меню Администрирование — Настройки пользователей и прав.
- Убедимся, что флажок Ограничивать доступ на уровне записей включен.
- Для платформы версии 8.3 крайне рекомендуется использовать производительный режим работы RLS (в интерфейсе он может называться «упрощенным» или «производительным» в зависимости от версии релиза). В этом режиме ограничения рассчитываются платформой заранее и кэшируются в специальных служебных таблицах базы данных (так называемые «ключи доступа»), что позволяет избежать сложных ресурсоемких запросов «на лету».
Таким образом, выполнив диагностику ролей и настроив индивидуальный профиль группы доступа, мы добьемся того, что в списке выбора организаций у каждого бухгалтера будут отображаться исключительно его рабочие фирмы, как это и было реализовано в старых версиях программы.