При работе в крупных корпоративных системах, таких как 1С:ERP Управление предприятием, часто возникает задача разделения зон ответственности между сотрудниками финансовой службы. Одной из наиболее сложных задач является ограничение доступа бухгалтера таким образом, чтобы он мог видеть и обрабатывать документы только по определенному кругу клиентов или поставщиков (например, по конкретным папкам контрагентов). Прежде чем приступать к настройкам, рекомендуется провести детальный анализ прав доступа к объекту, чтобы точно определить, какие роли и профили влияют на текущую видимость данных.
Прежде всего, проанализируем разницу между «старыми» конфигурациями (например, 1С:Бухгалтерия 2.0 или УПП) и современными решениями на базе 1С:ERP. В ERP справочник Контрагенты (юридические лица) тесно связан со справочник ом Партнеры (управленческие сущности). Большинство ограничений прав доступа в операционном контуре завязано именно на справочнике Партнеры.
Если нам необходимо ограничить видимость контрагентов по папкам, мы должны понимать, что стандартный набор прав профиля Бухгалтер обычно не предполагает фильтрации по партнерам. Тем не менее, техническая возможность настройки RLS (Row Level Security) существует, а для более тонкой настройки полей можно использовать универсальное расширение доступа и видимости реквизитов справочников, которое позволяет скрыть конкретные папки или элементы без внесения изменений в конфигурацию.
Это штатный механизм 1С:ERP, который позволяет классифицировать партнеров не только по иерархии папок, но и по правам доступа. Разберем по шагам, как это настроить:
Группы доступа партнеров. Создадим новую группу, например, «Региональный отдел продаж».Группу доступа.Ограничивать доступ на уровне записей.Профиль групп доступа, скопировав стандартный профиль Бухгалтер.Ограничения доступа выберем вид доступа Группы партнеров и установим значение Все запрещены, исключения подбираются в группах доступа.Группу доступа, назначим в нее нашего пользователя и укажем разрешенную Группу доступа партнеров.Проанализируем ситуацию: теперь пользователь при попытке открыть список партнеров или документов увидит только те записи, которые относятся к разрешенной группе. Однако здесь нас поджидает главная проблема бухгалтерского учета — целостность данных в отчетах.
Рассмотрим пример, который часто приводит к недоумению пользователей. Бухгалтер открывает Оборотно-сальдовую ведомость по счету 51 «Расчетные счета». На этот счет поступали деньги как от «разрешенных» контрагентов, так и от «запрещенных».
Посмотрим на ситуацию глазами системы:
Для решения этой проблемы и устранения «тормозов» системы при наложении прав можно использовать привилегированные отчеты, которые позволяют формировать данные без учета ограничений RLS там, где это необходимо для корректности баланса.
Более стабильным и производительным методом в 1С:ERP является ограничение по Подразделениям. Если бизнес-процесс компании позволяет закрепить за каждым бухгалтером конкретное подразделение, это решит проблему гораздо эффективнее:
Подразделение.Подразделения.Для корректной работы этого механизма иногда требуется доработка RLS в 1С:ERP, исправляющая типовые ограничения и позволяющая более гибко разделять доступ по организациям и подразделениям.
Если типовых средств недостаточно и требуется ограничение именно по папкам (родителям справочника), нам придется прибегнуть к разработке. Создадим расширение и добавим в него свою роль.
Проанализируем пример кода для шаблона RLS, который можно применить к документам или справочникам в расширении:
#Если &ОграничениеДоступаНаУровнеЗаписейВключено #Тогда
ТекущаяТаблица
ГДЕ ТекущаяТаблица.Партнер В ИЕРАРХИИ (&СписокРазрешенныхПапок)
ИЛИ ТекущаяТаблица.Партнер = ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка)
#КонецЕсли
Важно помнить, что использование В ИЕРАРХИИ в запросах RLS существенно замедляет работу. Специалисты рекомендуют избегать иерархических условий в правилах доступа, заменяя их на плоские списки.
Если стоит задача разрешить пользователю нажимать кнопку Дт/Кт только в определенных документах, можно использовать готовое расширение для контроля видимости и доступности элементов управляемой формы. Это позволит скрыть кнопку или запретить её нажатие без написания сложного кода.
Также для управления доступом к отдельным полям документов идеально подойдет универсальное расширение видимости реквизитов документов, которое позволяет гибко настраивать права в разрезе конкретных пользователей.
Пример логики проверки в коде (если вы все же решили делать это программно):
&НаСервере
Функция ДоступКПроводкамРазрешен(ДанныеДокумента)
// Проверяем, относится ли партнер документа к разрешенной папке
Если ДанныеДокумента.Партнер.Родитель = Справочники.Партнеры.НайтиПоНаименованию("НашиКлиенты") Тогда
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции
Мы рассмотрели различные подходы к ограничению прав бухгалтера в 1С:ERP. Подведем итоги:
Оборотно-сальдовая ведомость станет для такого сотрудника бесполезной без использования механизмов привилегированного выполнения отчетов.При реализации любых ограничений RLS обязательно проводите нагрузочное тестирование на копии базы, так как сложные условия доступа могут увеличить время проведения документов в несколько раз.