Почему не работает ограничение прав доступа по обособленным подразделениям в 1С:Бухгалтерия КОРП и как его настроить?

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

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

Причина поведения типового механизма RLS

Проанализируем логику, заложенную разработчиками в типовой механизм разграничения прав подсистемы «Управление доступом» (БСП). В конфигурации «1С:Бухгалтерия КОРП» обособленные подразделения регистрируются в справочнике Организации с заполненным реквизитом ГоловнаяОрганизация.

На уровне прав к справочнику Организации в шаблоне #ПоЗначениямРасширенный заложено условие, позволяющее читать данные организации, если у пользователя есть доступ:

  1. К самой организации.
  2. К головной организации для данной организации.
  3. К любой организации, у которой головная организация совпадает с головной организацией текущей.

Выясним причину такого решения: обособленные подразделения одного юридического лица неразрывно связаны регламентными операциями. Закрытие месяца, межфилиальные расчеты (авизо по счету 79), распределение налога на прибыль и декларации по НДС требуют чтения данных всех филиалов. Если ограничить видимость филиалов между собой жестко, регламентные процедуры и проведение перекрестных документов завершатся системными ошибками нарушения прав доступа.

Решение 1. Методологическая корректировка (для группы юридических лиц)

Разберем по шагам наиболее частую ошибку моделирования структуры предприятия. Если ваши филиалы в разных городах зарегистрированы как отдельные юридические лица (имеют разные ИНН), но объединены общим владельцем для управленческого учета, заполнять реквизит ГоловнаяОрганизация нельзя.

  1. Откройте справочник Организации.
  2. Очистите реквизит ГоловнаяОрганизация во всех дочерних компаниях.
  3. Настройте типовые группы доступа с видом ограничения Организации, указав для каждого пользователя только разрешенные юридические лица.

Когда реквизит ГоловнаяОрганизация пуст, типовой механизм RLS работает изолированно по каждому юридическому лицу «из коробки», без необходимости снимать конфигурацию с поддержки.

Решение 2. Корректировка шаблонов ограничений и доработка БСП

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


#ПоЗначениямРасширенный("Справочник.Организации", "Чтение",
"",
"ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК ОбособленныеПодразделения
ПО
    //Т.ГоловнаяОрганизация <> ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
    //И (
    //    Т.ГоловнаяОрганизация = ОбособленныеПодразделения.ГоловнаяОрганизация
    //    ИЛИ
    //    Т.ГоловнаяОрганизация = ОбособленныеПодразделения.Ссылка
    //)
    //ИЛИ
    //Т.Ссылка = ОбособленныеПодразделения.ГоловнаяОрганизация
    Т.Ссылка = ОбособленныеПодразделения.Ссылка",
"",
"Организации", "Т.Ссылка", "ИЛИ (",
"Организации", "Т.ГоловнаяОрганизация","И", 
"","Т.ГоловнаяОрганизация <> ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)", ") ИЛИ",
"Организации", "ОбособленныеПодразделения.Ссылка", "", 
"","","", "","","", "","","", "","","", 
"","","", "","","", "","","", "","","", 
"","","", "","","", "","","", "","",""
)

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

  1. Внедрите расширение конфигурации и переопределите поведение в общем модуле УправлениеДоступомПереопределяемый (процедуры ПриЗаполненииОграниченияДоступа, ПриЗаполненииСпискаИерархическихЗначенийДоступа).
  2. После изменения правил сформируйте заново служебные таблицы доступа. Для этого запустите обновление данных через регламентные задания подсистемы доступа.
  3. Проконтролируйте актуальность записей в служебных регистрах: РегистрСведений.КлючиДоступаКОбъектам и РегистрСведений.НаборыЗначенийДоступа.

Решение 3. Архитектурные альтернативы

Если доработка типового RLS нежелательна из-за регулярных обновлений базы, рассмотрим другие проверенные архитектурные варианты:

  1. Распределенная информационная база (РИБ) с фильтрацией: создаются отдельные узлы РИБ для каждого подразделения с отбором по организации. В базу филиала попадают только его данные, а центральная база консолидирует всю информацию группы.
  2. Механизм разделения данных (технология 1С:Фреш / Multitenancy): каждое подразделение работает в собственной изолированной области данных одной информационной базы, а консолидация выполняется через внешние сервисы или единый сеанс без разделения.
← На главную