При работе в многофирменном учете «1С:Бухгалтерия КОРП» часто возникает задача разделить видимость данных так, чтобы сотрудники одной организации не могли видеть документы и отчеты другой. Несмотря на то, что в описании конфигурации КОРП заявлена поддержка разграничения прав, многие пользователи сталкиваются с трудностями при первичной настройке. В этой статье мы подробно рассмотрим, как включить штатные механизмы ограничения и что делать, если вам требуется более глубокое разделение — на уровне подразделений.
Начнем с самого простого и востребованного сценария — разделения доступа по юридическим лицам. В современных версиях программы «1С:Бухгалтерия 8 КОРП» (редакция 3.0) управление доступом осуществляется через профили и группы. Проанализируем стандартный алгоритм действий.
Для начала нам необходимо убедиться, что в программе включена сама возможность использования ограничений на уровне записей (RLS). Разберем этот процесс по шагам:
В старых редакциях или при использовании интерфейса, близкого к классическому, доступ к этим настройкам также можно получить через Операции — Константы — Настройка программы, на закладке Права доступа. Однако современный метод через раздел администрирования является более предпочтительным и функциональным.
Часто бухгалтеры и руководители хотят пойти дальше и ограничить доступ не только по организациям, но и по конкретным подразделениям внутри одного юридического лица. Рассмотрим ситуацию: в типовой «Бухгалтерии КОРП» функциональная опция «Ограничивать по подразделениям» может присутствовать в метаданных, но фактически фильтрация данных в журналах и отчетах может не срабатывать. Выясним причину этого поведения.
Дело в том, что полноценный механизм RLS по подразделениям в типовой поставке реализован преимущественно для обособленных подразделений, выделенных на отдельный баланс. Для обычных («сквозных») подразделений шаблоны ограничений в ролях зачастую отсутствуют. Чтобы решить эту задачу, нам придется прибегнуть к программированию и изменению ролей.
Если штатных средств недостаточно, мы можем реализовать ограничение программно. Рассмотрим алгоритм действий программиста для внедрения RLS по подразделениям:
ОграничиватьДоступПоПодразделениям). Это позволит нам управлять видимостью настроек в интерфейсе профилей.#ПоЗначениям.Посмотрим на пример того, как может выглядеть шаблон ограничения в запросе роли для справочника или документа:
// Пример шаблона ограничения по подразделениям
#ПоЗначениям(
"Справочник.ПодразделенияОрганизаций",
"Чтение",
"",
"Организации", "Владелец",
"ПодразделенияОрганизаций", "Ссылка",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""
)
При использовании этого шаблона система будет проверять право доступа пользователя к конкретному элементу справочника ПодразделенияОрганизаций, опираясь на настройки, заданные в его группе доступа. Для проверки и анализа результирующего текста таких условий подойдёт обработка для отладки шаблонов ограничений доступа.
Проанализируем важный нюанс: внедрение RLS, особенно по таким объемным регистрам, как РегистрБухгалтерии.Хозрасчетный, может привести к значительному снижению производительности. Система вынуждена к каждому SQL-запросу добавлять подзапрос, проверяющий права доступа. На больших объемах данных это становится критичным.
Рассмотрим альтернативный способ ограничения доступа, если стандартный RLS слишком сильно замедляет работу:
ПередЗаписью и ПриЧтенииНаСервере (в формах). Это позволит проверять права программно в момент совершения действия.Чтобы сохранить конфигурацию на поддержке, крайне рекомендуется выносить все изменения в Расширение. Мы можем добавить в расширение нужные объекты, переопределить роли и добавить свои шаблоны доступа. Это наиболее правильный путь развития системы в 2024 году. В качестве альтернативы ручной доработке ролей можно использовать расширение для разграничения прав доступа с гибкими отборами.
Важно помнить, что если вы ограничиваете доступ к документам, вы обязаны настроить аналогичные ограничения и для Регистра бухгалтерии. В противном случае пользователь сможет увидеть данные через стандартные отчеты, такие как «Оборотно-сальдовая ведомость», даже если сами документы ему недоступны.
Подведем итог: штатное разделение по организациям в КОРП настраивается за 5 минут через «Настройки пользователей и прав». Однако полноценное разделение по подразделениям — это уже проектная задача, требующая понимания механизмов RLS, работы с ролями и учета нагрузки на сервер 1С.