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

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) Возможно отключение безопасного режима поможет
Прикрепленные файлы:
Оставьте свое сообщение
Вакансии
Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

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

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

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

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