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

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет IT и автоматизация бизнеса
← На главную

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

Архитектурные особенности RLS в подсистеме расчета зарплаты

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

  1. Разделение управленческого и регламентированного учета: В УПП сосуществуют две структуры. Справочник Подразделения отвечает за управленческий учет, а ПодразделенияОрганизаций — за регламентированный (бухгалтерский и налоговый). Документ Начисление зарплаты сотрудникам формирует управленческие движения, а Начисление зарплаты сотрудникам организаций — регламентированные начисления, проводки и расчеты с фондами.
  2. Отсутствие шаблонов RLS в метаданных: Механизм RLS для регламентированной зарплатной структуры намеренно не был включен разработчиками в типовые роли. Даже если в пользовательском режиме включить доступ по подразделениям организаций, в текстах ограничений ролей отсутствуют условия на чтение данного справочника.
  3. Специфика расчетных алгоритмов: Внутренние механизмы регламентированного расчета зарплаты (расчет по среднему заработку, НДФЛ, страховые взносы, пособия) обращаются к регистрам сведений и расчета (ОсновныеНачисленияРаботниковОрганизаций, ПлановыеНачисленияРаботниковОрганизаций). При ограничении на уровне строк СУБД перевод сотрудника из одного подразделения в другое приводил бы к ошибкам «Нарушение прав доступа» при попытке прочитать прошлую историю начислений.
  4. Принцип неделимости документа: Если расчетный документ содержит сотрудников разных подразделений, RLS платформы блокирует доступ ко всему документу целиком при отсутствии прав хотя бы на одну строку.

Решение 1. Штатная настройка доступа через группы физических лиц

Разберем основной и рекомендованный разработчиками платформы метод разделения зон ответственности расчетчиков — использование объекта доступа Физические лица.

Выполним настройку по следующим шагам:

  1. Перейдем в справочник Группы доступа физических лиц (или используем иерархию папок справочника ФизическиеЛица). Создадим группы, соответствующие участкам работы расчетчиков (например, «Цех №1», «Администрация», «Транспортный отдел»).
  2. Распределим физических лиц сотрудников по соответствующим группам доступа.
  3. Откроем настройку прав доступа на уровне записей для пользователя или профиля групп пользователей (Вид объекта доступа: Физические лица). Назначим каждому расчетчику доступ только к его группе физических лиц.
  4. Проверим заполнение расчетных документов: при автозаполнении документа Начисление зарплаты сотрудникам организаций система автоматически отбирает только тех сотрудников, чьи физические лица разрешены текущему пользователю.

Решение 2. Программное ограничение на уровне интерфейса (без включения RLS)

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

Рассмотрим по шагам реализацию данного подхода:

  1. В справочнике Пользователи или через регистр сведений добавим привязку пользователей к доступным им элементам справочника ПодразделенияОрганизаций.
  2. В форме выбора справочника ПодразделенияОрганизаций установим программный отбор по списку разрешенных подразделений текущего сеанса.
  3. В форме документа Начисление зарплаты сотрудникам организаций перед автозаполнением добавим проверку соответствия подразделения в шапке документа списку прав расчетчика.

Посмотрим на пример установки отбора при открытии формы выбора справочника:


Процедура ПриОткрытии()
    // Получаем массив доступных подразделений для текущего пользователя
    МассивПодразделений = УправлениеПравамиДоступаСервер.ПолучитьДоступныеПодразделенияОрганизаций(ПараметрыСеанса.ТекущийПользователь);
    
    // Устанавливаем отбор в списке
    Отбор = Список.Отбор;
    Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
    Отбор.Ссылка.Значение.ЗагрузитьЗначения(МассивПодразделений);
    Отбор.Ссылка.Использование = Истина;
КонецПроцедуры

Решение 3. Реализация RLS в конфигураторе

Если политика информационной безопасности требует жесткого запрета на чтение данных на уровне СУБД, условия RLS можно внедрить в конфигураторе вручную.

Проанализируем необходимые действия и риски:

  1. Необходимо добавить шаблоны ограничений и условия на чтение/изменение для справочника ПодразделенияОрганизаций, документов начисления зарплаты, а также всех зависимых регистров расчета и накопления по взаиморасчетам.
  2. Важный момент: При внедрении RLS в запросы к таблицам расчета зарплаты существенно возрастает нагрузка на сервер СУБД.
  3. Потребуется предусмотреть обработку ситуаций с межцеховыми и межподразделенческими переводами сотрудников, выполняя чтение базовых начислений в привилегированном режиме, иначе расчет среднего заработка у переведенных сотрудников будет выдавать ошибку прав доступа.
← На главную