Как ограничить доступ к данным по заработной плате по определенной группе сотрудников в 1С:Комплексная автоматизация

Программист 1С v8.3 (Управляемые формы) 1С:Комплексная автоматизация Управленческий учет
← На главную

При работе в крупных организациях часто возникает задача разграничения прав доступа к финансовой информации. Одной из наиболее чувствительных тем является заработная плата руководства или определенных «VIP-групп». В конфигурации 1С:Комплексная автоматизация (и аналогичных ей 1С:ERP или 1С:ЗУП 3.1) стандартная настройка прав часто не позволяет просто «скрыть» суммы по конкретным людям, если расчетчик работает с общим документом начисления. В данной статье мы разберем, как реализовать такое ограничение, не прибегая к изменению утвержденного штатного расписания.

Анализ проблемы: почему стандартные методы не всегда работают

Рассмотрим ситуацию: автор вопроса столкнулся с тем, что перевод сотрудников в отдельное подразделение для ограничения доступа требует изменения штатного расписания, что недопустимо по регламентам компании. Попытки использовать механизм Ограничения на уровне записей (RLS) для справочника Физические лица привели к тому, что сотрудники скрываются в списке физлиц, но остаются видимыми в документах Начисление зарплаты и в справочнике Сотрудники.

Проанализируем причины этой проблемы:

  1. Различие между Физлицами и Сотрудниками: В системе 1С данные о человеке хранятся в справочнике Физические лица, а данные о его трудовом договоре — в справочнике Сотрудники. Ограничение одного не всегда автоматически влечет ограничение другого.
  2. Права на чтение vs Права на изменение: Как было отмечено в ходе обсуждения, в некоторых релизах типовых конфигураций группы доступа физлиц ограничивают только добавление и изменение данных, оставляя право на просмотр доступным для всех.
  3. Привилегированный режим заполнения: Механизмы автоматического заполнения документов (кнопка «Заполнить») часто работают в обход RLS, из-за чего данные попадают в документ, даже если у пользователя нет прав на их просмотр.

Решение №1: Использование групп доступа физических лиц

Этот способ является наиболее близким к типовому функционалу. Разберем его по шагам:

Шаг 1. Включение RLS. Перейдем в раздел НСИ и администрирование — Настройка пользователей и прав и убедимся, что установлен флаг Ограничивать доступ на уровне записей.

Шаг 2. Настройка групп доступа. Создадим две группы в справочнике Группы доступа физических лиц (например, «Общая» и «Ограниченная»). Назначим каждому физическому лицу соответствующую группу. Это делается в карточке физлица на закладке «Администрирование» или через групповое изменение реквизитов.

Шаг 3. Настройка профиля. Проанализируем профиль пользователя «Расчетчик». В списке Виды доступа выберем «Группы физических лиц». Установим значение «Все запрещены, исключения назначаются в группах доступа». В самой группе доступа для обычных расчетчиков добавим в список разрешенных только группу «Общая».

Важное замечание: Если после этих настроек расчетчик все еще видит VIP-сотрудников в отчетах, необходимо проверить роли в конфигураторе. Проанализируем роль, отвечающую за чтение данных по зарплате. В шаблонах ограничений для справочника Физические лица и регистров расчета должно быть прописано условие по группе доступа. Если шаблон стоит только на «Изменение», его нужно скопировать и для права «Чтение».

Решение №2: Использование групп доступа сотрудников

В современных редакциях систем на базе 1С:ЗУП 3.1 (включая КА) появился более гибкий инструмент — Группы доступа сотрудников. Это позволяет объединять людей в группы вне зависимости от их позиции в оргструктуре.

Рассмотрим подробнее механизм работы:

  1. В настройках расчета зарплаты (или кадрового учета) нужно включить возможность использования групп доступа сотрудников.
  2. В справочнике Сотрудники появится поле для указания группы доступа.
  3. В профилях групп доступа появится новый вид доступа — «Группы сотрудников».

Этот метод более надежен, так как он ограничивает доступ непосредственно к объекту СправочникСсылка.Сотрудники, который является основным разрезом во всех зарплатных документах и регистрах.

Решение №3: Технический обход через разделение документов

Если RLS по какой-то причине настроить не удается (например, из-за падения производительности системы), можно использовать методический подход, предложенный участниками форума. Выясним, как это реализовать:

Разделим процесс начисления зарплаты на два этапа:

Для того чтобы обычный расчетчик не мог открыть «чужой» документ, используется ограничение по Подразделениям. Даже если вы не хотите менять штатное расписание, вы можете создать в справочнике Подразделения техническую ветку (например, «Администрация (служебная)»), которая в печатных формах будет ссылаться на основное подразделение, но в базе позволит настроить жесткий барьер RLS. В 1С:КА ограничение по подразделениям работает наиболее стабильно и предсказуемо.

Почему документ «Начисление зарплаты» заполняется всеми сотрудниками?

Выясним причину ситуации, описанной в сообщении №22. Когда пользователь нажимает кнопку «Заполнить», система инициирует серверный вызов. Рассмотрим примерный код, который может отрабатывать в этот момент:


// Пример упрощенного кода заполнения
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Справочник.Сотрудники ГДЕ Организация = &Организация";
// Если этот код выполняется в модуле с установленным флагом "Привилегированный"
// то RLS игнорируется, и запрос выберет всех сотрудников.

Чтобы решить эту проблему, необходимо убедиться, что в настройках программы включена опция «Проверять права доступа при заполнении документов». Если такой опции в вашем релизе нет, единственным выходом будет доработка программного кода заполнения, чтобы он учитывал текущего пользователя, либо использование механизма Группы доступа физических лиц с корректно настроенными шаблонами на уровне Чтение в конфигураторе.

Рекомендации по настройке в «1С:Комплексная автоматизация для Казахстана»

Поскольку автор вопроса использует локализацию для Казахстана (версия 2.1.3.14 от 1С-Рейтинг), стоит учитывать, что механизмы защиты данных здесь могут иметь свои особенности. Проанализируем версию БСП (Библиотеки стандартных подсистем) — 2.3.2.195. Это достаточно зрелая версия, где RLS реализован через производительные механизмы (длинные таблицы).

Мы рекомендуем:

  1. Проверить регистр сведений Настройка прав доступа (или аналогичный в вашей версии), чтобы убедиться, что ограничения действительно применяются к конкретному пользователю.
  2. Использовать отчет «Права доступа» (Администрирование — Настройки пользователей и прав — Пользователи — Права доступа — Отчет по правам доступа), чтобы увидеть, через какую роль пользователь получает доступ к «запрещенным» физлицам.
  3. Если типовая роль Расчетчик дает избыточные права, создайте копию этой роли, назовите её РасчетчикОграниченный и в конфигураторе добавьте условия RLS на чтение для объектов:
    • Справочник.ФизическиеЛица
    • Справочник.Сотрудники
    • РегистрРасчета.Начисления
    • РегистрНакопления.ВзаиморасчетыС_Сотрудниками

Таким образом, комбинируя использование групп доступа физических лиц и точечную настройку ролей, можно добиться полной невидимости данных по VIP-сотрудникам для обычного персонала, сохраняя при этом целостность штатного расписания и прозрачность учета для главного бухгалтера или руководителя.

← На главную