Имя: Пароль:
1C
1С v8
Выполнение отчета на СКД в привилигированном режиме?
0 Elf56
 
26.11.15
09:10
Всем доброго времени суток.

Имеется
1С:Предприятие 8.3 (8.3.5.1517)
"Управление торговлей и взаимоотношениями с клиентами (CRM)", редакция 2.0 (2.0.2.5)

Так же есть отчет состряпанный на СКД. Также есть роль менеджеры которые могу просматривать только свои заказы где автор сам менеджер т.е. ограниче на уровне RLS на чтение документа "ЗаказКлиента". Но есть отчет который выбирает на СКД все заказы клиента и при формировании выдает ошибку от пользователя менеджер что не достаточно прав на формирование отчета хотя сам отчет открывается. Если дать права на чтение всех ЗаказКлиентов этой роли менеджер то отчет формируется без проблем. Убирать ограние на уровне RLS нельзя т.е. соответственно нужно выполнять данный отчет в привилигированном режиме. Нашел в интернете как это можно сделать просто вставить в модуль отчета процедуру и код, но у меня почему то в модуле отчета выдает ошибку, что я делаю не так ?

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    УстановитьПривилегированныйРежим(Истина);    
    
    //Сформируем отчет
    ДокументОбъект = РеквизитФормыВЗначение("Отчет");
    ДокументОбъект.СформироватьОтчет (ДокументРезультат, ДанныеРасшифровки);
    ЗначениеВРеквизитФормы(ДокументОбъект, "Отчет");
    
    УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры

Всем заранее спасибо за ответы.
1 Elf56
 
26.11.15
09:25
Тему можно закрывать разобрался просто в процедуру надо было вставить вот этот код

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    УстановитьПривилегированныйРежим(Истина);    
    
    //Сформируем отчет
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки,ДанныеРасшифровки);

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

    ПроцессорВывода.НачатьВывод();

    ЭлементРезультата = ПроцессорКомпоновки.Следующий();
    Пока ЭлементРезультата <> Неопределено Цикл
        ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
        ЭлементРезультата = ПроцессорКомпоновки.Следующий();
    КонецЦикла;
    ПроцессорВывода.ЗакончитьВывод();
    
    УстановитьПривилегированныйРежим(Ложь);
    
КонецПроцедуры
Независимо от того, куда вы едете — это в гору и против ветра!