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