При ведении учета в базах 1С:Бухгалтерия 3.0 (БП 3.0) или 1С:Управление торговлей 11 (УТ 11) часто возникает задача: в системе заведено несколько организаций, но некоторым пользователям необходимо сделать видимой только определенную из них. Давайте разберем по шагам, как правильно решить эту задачу и какие механизмы платформы 1С для этого подходят лучше всего.
Если наша цель — полностью закрыть доступ к документам и справочникам чужих организаций, чтобы пользователь не мог их увидеть ни в списках, ни в отчетах, рассмотрим подробнее типовой механизм RLS (Ограничение доступа на уровне записей).
Для включения этого механизма перейдем в раздел администрирования и установим флажок Ограничивать доступ на уровне записей. Однако, проанализируем ситуацию глубже: сама по себе эта галочка ничего не скрывает. Нам потребуется выполнить дополнительную настройку.
Выясним важную особенность: включение механизма RLS может существенно замедлить работу системы. Платформа 1С неявно добавляет условия проверки прав к каждому запросу к базе данных. В базах с большим объемом информации это может привести к увеличению времени открытия списков, проведения документов и формирования отчетов.
Иногда жесткая безопасность не требуется. Требуется лишь, чтобы у пользователя по умолчанию во всех списках, оборотно-сальдовых ведомостях (ОСВ) и новых документах всегда подставлялась определенная организация, но видимость оставалась по всем. Посмотрим, как это сделать без включения тяжелого механизма RLS.
В типовых конфигурациях существует несколько простых способов задать основную организацию:
Важное уточнение: такая настройка лишь заполняет соответствующий реквизит по умолчанию при создании новых объектов. Она не скрывает документы других организаций из общих динамических списков или журналов. Пользователь по-прежнему будет видеть чужие данные и при желании сможет вручную выбрать другую организацию.
Если первый способ (RLS) слишком сильно "тормозит" базу, а второй (Основная организация) не скрывает визуально чужие документы из списков, рассмотрим дополнительные подходы.
1. Визуальное скрытие через расширения конфигурации
Если строгая безопасность на уровне базы данных не критична, и мы просто хотим очистить интерфейс пользователя от лишней информации, воспользуемся механизмом расширений. В расширении для нужных форм списков и журналов документов в обработчике ПриСозданииНаСервере можно программно добавить жесткий невидимый отбор в динамический список по закрепленной за пользователем организации. При таком подходе производительность остается высокой, пользователь визуально не пересекается с чужими документами и не может снять отбор пользовательскими настройками. Однако, нужно понимать, что программный доступ (через консоль запросов или универсальные отчеты) к этим данным у него останется.
2. Использование механизма разделения данных (Области данных)
Если организации в одной базе абсолютно не связаны между собой и им не требуется общая нормативно-справочная информация (одни и те же контрагенты, номенклатура), целесообразно использовать платформенный механизм разделения данных (работа в модели сервиса). В этом случае база логически изолируется на независимые области. Пользователи будут видеть исключительно свою область данных, данные других организаций полностью отсекаются на уровне платформы, а проблема падения производительности, характерная для RLS, отсутствует полностью.