Сформировать отчет СКД в привилегированном режиме

1. sajmon45 20.12.21 00:05 Сейчас в теме
Как сформировать отчет СКД в привилегированном режиме? Делаю так не работает:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	СтандартнаяОбработка= Ложь;
	
	УстановитьПривилегированныйРежим(Истина);
  	
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
	
	П_пользователь = Настройки.ПараметрыДанных.Элементы.Найти("ТекущийПользователь");
	Если Не П_пользователь = Неопределено Тогда 
		П_пользователь.Значение = Пользователи.ТекущийПользователь();
	КонецЕсли;
	
	Если Не РольДоступна("Снабжение") Тогда
		Для Каждого ЭлКолонки Из Настройки.Выбор.Элементы Цикл
			Если ЭлКолонки.Поле = Новый ПолеКомпоновкиДанных("Цена") Тогда
				ЭлКолонки.Использование = Ложь;
			КонецЕсли;
			
			Если ЭлКолонки.Поле = Новый ПолеКомпоновкиДанных("СуммаЗаказа") Тогда
				ЭлКолонки.Использование = Ложь;
			КонецЕсли;
			
			Если ЭлКолонки.Поле = Новый ПолеКомпоновкиДанных("ЦенаПоступления") Тогда
				ЭлКолонки.Использование = Ложь;
			КонецЕсли;
			
			Если ЭлКолонки.Поле = Новый ПолеКомпоновкиДанных("СуммаПоступления") Тогда
				ЭлКолонки.Использование = Ложь;
			КонецЕсли;
			
			Если ЭлКолонки.Поле = Новый ПолеКомпоновкиДанных("ЦенаТребуется") Тогда
				ЭлКолонки.Использование = Ложь;
			КонецЕсли;
			
			Если ЭлКолонки.Поле = Новый ПолеКомпоновкиДанных("СуммаТребуется") Тогда
				ЭлКолонки.Использование = Ложь;
			КонецЕсли;
			
		КонецЦикла;
	КонецЕсли;

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

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

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

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

    ЭлементРезультата = ПроцессорКомпоновки.Следующий();
    Пока ЭлементРезультата <> Неопределено Цикл
        ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
        ЭлементРезультата = ПроцессорКомпоновки.Следующий();
    КонецЦикла;
    ПроцессорВывода.ЗакончитьВывод();
	
	УстановитьПривилегированныйРежим(Ложь );
	
КонецПроцедуры
Показать
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Swetlana 20 20.12.21 07:51 Сейчас в теме
(1)
Делаю так не работает

Что именно у вас не работает?

ссылка
5. glek 112 20.12.21 11:13 Сейчас в теме
(1) Выполнить отчет в прив. режиме не получится. Единственный вариант, это написать отчет на объект данных и его заполнять в прив. режиме.
7. Oliver 19.03.23 02:41 Сейчас в теме
(5) А почему не получится? У меня вроде получается.
3. ISP 20.12.21 08:32 Сейчас в теме
как внешний отчет ?

Давно тоже пробовал - не получилось. Пришлось извращение делать - СКД сохранял в базе и выполнял в привилигированном модуле. Потом передавал результат
4. sajmon45 20.12.21 09:21 Сейчас в теме
6. VZyryanov 20.12.21 11:43 Сейчас в теме
Установить привилегированный режим можно в общем модуле.
В модуле объекта внешнего отчета:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	Организации=КФ_СерверВызов.ДоступныеОрганизацииПоДокументам("ЗаявкаНаРасходованиеДенежныхСредств");
	Параметры=Новый Структура("Организации",Организации);
	
	ВПривилегированномРежиме=Истина;
	ССообщениями=Истина;
	КФ_СерверВызов.СКДПриКомпоновкеРезультата(ЭтотОбъект,ДокументРезультат,ДанныеРасшифровки,СтандартнаяОбработка, 
		ВПривилегированномРежиме,Параметры,ССообщениями);

КонецПроцедуры
Показать


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

КонецФункции
Показать
8. echo77 1707 19.03.23 09:36 Сейчас в теме
(1) Возможно отключение безопасного режима поможет
Прикрепленные файлы:
Оставьте свое сообщение
Вакансии
Программист, разработчик
Нижневартовск
зарплата от 120 000 руб.
Полный день

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Системный архитектор
Москва
зарплата от 150 000 руб.
Полный день

Ведущий консультант аналитик 1С ERP, УХ
Ульяновск
зарплата от 120 000 руб.
Полный день

Программист-разработчик 1С
Москва
зарплата от 150 000 руб.
Полный день