Программное формирование отчета СКД на УФ

1. PoZiTiFFF 914 26.05.15 02:04 Сейчас в теме
Здравствуйте. Возникла необходимость в постобработке табличного документа уже после формирования и вывода в него результатов выполнения отчета СКД. Формы управляемые. Добавил новую команду, поместил её на форму, но кто может подсказать каким кодом я могу смоделировать выполнения отчета (то есть родной код кнопки Сформировать в отчете). Заранее всем большое спасибо.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. vovan_victory 63 26.05.15 08:04 Сейчас в теме
(1) PoZiTiFFF,
	СхемаКомпоновкиДанных = Обработки.ОбработкаВводаПоказанийСчетчиков.ПолучитьМакет("Макет");
	Настройки = КомпоновщикНастроек.ПолучитьНастройки();
	
	ПараметрыДанных = Настройки.ПараметрыДанных.Элементы;
	
	ЭлементПериод = ПараметрыДанных.Найти("Период");
	ЭлементПериод.Использование = Истина;
	ЭлементПериод.Значение = КонецМесяца(Объект.ОкончаниеПериода);
	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	
	МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
	//КомпоновщикНастроек.Настройки, , ,
	Настройки, , ,
	Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
	
	ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
	
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
	
	Результат = Новый ТаблицаЗначений;
	
	ПроцессорВывода.УстановитьОбъект(Результат);
	ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Показать


полученную таблицу значения можно загрузить в табличную часть. Или вы хотите изменять макет(табличный документ)?
PoZiTiFFF; +1 Ответить
3. PoZiTiFFF 914 27.05.15 07:14 Сейчас в теме
(2) vovan_victory, не срабатывает код. Выдает ошибку:
{Отчет.КалендарьОтгрузок.Форма.ФормаОтчета.Форма(54)}: Ошибка при вызове метода контекста (Выполнить)
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
по причине:
Ошибка компоновки макета
по причине:
Ошибка генерации макета
по причине:
Не поддерживается вывод таблиц, диаграмм и вложенных отчетов в универсальную коллекцию значений
4. vovan_victory 63 27.05.15 08:09 Сейчас в теме
(3) PoZiTiFFF,у Вас макет с видом Схема компоновки данных есть?
5. PoZiTiFFF 914 27.05.15 08:50 Сейчас в теме
(4) vovan_victory, конечно, есть.

Получилось запустить формирование отчета и вывод в табличный документ, но у меня в вычисляемом поле используется функция общего модуля, ругается на неё и не хочет выполняться. Прочитал, что четвертый параметр метода Инициализировать отвечает как раз за возможность использования внешних функций. Вызывает метод следующим образом: ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных,,, Истина), но ошибка сохраняется. Что то еще где то необходимо указать. Стандартная кнопка Выполнить отчета СКД срабатывает без ошибок.
Мой текущий код:

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

	ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Показать
xzorkiix; +1 Ответить
6. vovan_victory 63 27.05.15 09:09 Сейчас в теме
(5) PoZiTiFFF, а если
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
    //КомпоновщикНастроек.Настройки, , ,
    Настройки);

изменить на

МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки , , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));


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


изменить на

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
axelerleo; +1 Ответить
7. xzorkiix 34 30.03.17 12:38 Сейчас в теме
(5) Спсб за ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных,,, Истина)
8. Vlad33k 25.08.17 10:45 Сейчас в теме
(5)
Настройки = Отчет.КомпоновщикНастроек.ПолучитьНастройки();


Заменить на

Настройки = Отчет.КомпоновщикНастроек.Настройки;
9. 7OH 69 14.11.19 11:45 Сейчас в теме
А можно усложнить задачу ?
Надо оставить возможность формирования отчета в фоне, но при этом таки ловить момент окончания.
Охота ограничить возможность повторного формирования отчета.
10. dhurricane 14.11.19 12:07 Сейчас в теме
(9) А если отчет закроют и откроют заново?
11. 7OH 69 14.11.19 12:10 Сейчас в теме
у фонового задания по текущему отчету ИД должен быть один и тот же - тут всё просто.
в принципе в новых БСП это реализовано уже - второй раз не запускается.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот