Использование ВЫБРАТЬ РАЗРЕШЕННЫЕ в 1С 8.3

В запросе 1С иногда можно увидеть конструкцию «ВЫБРАТЬ РАЗРЕШЕННЫЕ». Она применяется в основном в системах где включено ограничение доступа на уровне записей. Данный механизм позволяет точно настраивать права доступа пользователей в зависимости от значений в базе данных. Например разные кассиры должны видеть только документы по своим кассам. И если используется 1 отчет, то управляющая конструкция РАЗРЕШЕННЫЕ позволяет избежать ошибки при исполнении запроса.

ВЫБРАТЬ РАЗРЕШЕННЫЕ в запросе 1С 8.3

Ошибка: У пользователя недостаточно прав на исполнение операции над базой данных

Если конструкция ВЫБРАТЬ РАЗРЕШЕННЫЕ не использовалась, то в запросе выбираются все данные, а у пользователей у которых настроено ограничение через RLS возникнет ошибка. Обычно 1С последовательно берет данные из таблиц базы данных. Когда попадается строка с запрещенными данными с помощью RLS, выполнение запроса останавливается исключительной ситуацией.

При добавлении ключевого слова ВЫБРАТЬ РАЗРЕШЕННЫЕ ошибка исчезнет и запрос 1С будет выполнен независимо от настроек RLS. Многие разработчики таким способом решают недостатки системы, думая что это панацея. Однако данный способ имеет существенный недостаток. Иногда отчеты с данной конструкцией могут показывать недостоверную информацию без вывода каких-либо сообщений. Так как пользователям выбираются записи по конкретным правам доступа, необходимо помнить об этом, если нужно получать полную информацию.

Решение без использования «РАЗРЕШЕННЫЕ»

Если при разработке принято решение не использовать конструкцию «ВЫБРАТЬ РАЗРЕШЕННЫЕ», необходимо написать запрос таким образом, чтобы избежать ошибок. Очевидный способ это условием наложить ограничение на запрещенные записи. Пользователи с различными правами будут пользоваться одним отчетом, однако в отборах смогут указывать только доступные для них значения.

ВЫБРАТЬ РАЗРЕШЕННЫЕ в запросе 1С 8.3 с отбором

Второй способ, это выполнять запрос в конструкции Попытка-Исключения с выводом ошибки. В таком случае пользователю будет понятно в чем дело и он самостоятельно с помощью отборов сможет исправить ошибку. Правда если отчет разработан с использованием СКД, то придется написать код исполнения макета вручную в модуле объекта отчета.

Попытка исключение в 1С с ВЫБРАТЬ РАЗРЕШЕННЫЕ

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

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *