Ошибка прав доступа в печати по шаблону УНФ
В УНФ есть подсистема печати офисных документов по шаблону. Ко мне обратился клиент, у которого один из менеджеров не мог распечатать коммерческое предложение из заказа покупателя.
У пользователя недостаточно прав на исполнение операции над базой данных.
Код ошибки был такой
{Документ.ЗаказПокупателя.МодульМенеджера(10598)}: Результат = Запрос.Выполнить().Выгрузить();
{Документ.ЗаказПокупателя.МодульМенеджера(9893)}: ЗаполнитьЗначенияПараметровКонтрагента(КонтрагентЗаказа, ОписаниеПараметров);
{Перечисление.НазначенияШаблоновПечатиОфисныхДокументов.МодульМенеджера(13)}:
…
По указанной строке увидел картину маслом, догадались что меня поразило до глубины души?
Стесняюсь спросить, а где ключевое слово РАЗРЕШЕННЫЕ в ВЫБРАТЬ? Да уж, и это типовой код!
Теперь нужно поломать голову, как поменять этот запрос.
Решил таким образом, несколько ассиметрично и, на мой взгляд, красиво:
&Вместо(«ЗаполнитьЗначенияПараметровКонтрагента»)
Процедура дор_ЗаполнитьЗначенияПараметровКонтрагента(Контрагент, ОписаниеПараметров)
//Осипов 2021-04-15
//Устанавливаем привелигированный режим на время вызова функции
Если НЕ ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Истина);
КонецЕсли;
ПродолжитьВызов(Контрагент, ОписаниеПараметров);
КонецПроцедуры
Запускаю под пользователем с помощью рабочего стола администратора:
Проверяю, КП печатается. ЧИТД.
Время факт: 20 минут.
С другой стороны, если пользователь видит заказ, то у него есть права на указанные данные
скорее всего на поля нет доступа, но разбираться было некогда, сделал «костыль»