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

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

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

Настройка ограничения доступа по организациям штатными средствами

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

Для начала нам необходимо убедиться, что в программе включена сама возможность использования ограничений на уровне записей (RLS). Разберем этот процесс по шагам:

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

В старых редакциях или при использовании интерфейса, близкого к классическому, доступ к этим настройкам также можно получить через Операции — Константы — Настройка программы, на закладке Права доступа. Однако современный метод через раздел администрирования является более предпочтительным и функциональным.

Проблема ограничения доступа по подразделениям

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

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

Техническая реализация ограничения по подразделениям (RLS)

Если штатных средств недостаточно, мы можем реализовать ограничение программно. Рассмотрим алгоритм действий программиста для внедрения RLS по подразделениям:

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

Посмотрим на пример того, как может выглядеть шаблон ограничения в запросе роли для справочника или документа:


// Пример шаблона ограничения по подразделениям
#ПоЗначениям(
    "Справочник.ПодразделенияОрганизаций",
    "Чтение",
    "",
    "Организации", "Владелец",
    "ПодразделенияОрганизаций", "Ссылка",
    "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""
)

При использовании этого шаблона система будет проверять право доступа пользователя к конкретному элементу справочника ПодразделенияОрганизаций, опираясь на настройки, заданные в его группе доступа. Для проверки и анализа результирующего текста таких условий подойдёт обработка для отладки шаблонов ограничений доступа.

Оптимизация производительности: почему база начинает тормозить?

Проанализируем важный нюанс: внедрение RLS, особенно по таким объемным регистрам, как РегистрБухгалтерии.Хозрасчетный, может привести к значительному снижению производительности. Система вынуждена к каждому SQL-запросу добавлять подзапрос, проверяющий права доступа. На больших объемах данных это становится критичным.

Рассмотрим альтернативный способ ограничения доступа, если стандартный RLS слишком сильно замедляет работу:

Реализация через расширения конфигурации

Чтобы сохранить конфигурацию на поддержке, крайне рекомендуется выносить все изменения в Расширение. Мы можем добавить в расширение нужные объекты, переопределить роли и добавить свои шаблоны доступа. Это наиболее правильный путь развития системы в 2024 году. В качестве альтернативы ручной доработке ролей можно использовать расширение для разграничения прав доступа с гибкими отборами.

Важно помнить, что если вы ограничиваете доступ к документам, вы обязаны настроить аналогичные ограничения и для Регистра бухгалтерии. В противном случае пользователь сможет увидеть данные через стандартные отчеты, такие как «Оборотно-сальдовая ведомость», даже если сами документы ему недоступны.

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

← На главную