Всем знаком модуль, способный выполнять операции с неограниченными правами: для этого достаточно поставить галочку: Привилегированный. На одном из моих проектов такой модуль удобно задействован для логирования.
У привилегированного режима есть разные нюансы, например:
▪️не отключает RLS для некоторых видов объектов, включённый перед пакетным запросом с временными таблицами (8.3.11)
▪️мог вызвать падение СУБД (8.3.12)
▪️не срабатывает во внешних обработках (до сих пор):
УстановитьПривилегированныйРежим(Истина); // Отключаем проверку прав доступа
ПривилегированныйРежим() вернёт Ложь
Так вот, Dmitry Kinash поделился ещё одним непредсказуемым поведением платформы, дословно:
А вы знали, что если перехватывать в расширении процедуры из привилегированного модуля, то они выполняются в режиме без привилегий? Дело в том, что в общих модулях в расширениях не предусмотрели свойство "Привилегированный" (Privileged), а потому механизм расширений выполняет код как обычный. Если у вас далее по коду есть проверка привилегий и вы не хотите получить ошибку, то вам придется явно повысить привилегии:
#Insert
SetPrivilegedMode(True);
#EndInsert
Учитывайте данные нюансы при проектировании архитектуры.
#Практика1С #Лайфхак1Снику
