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