Как передать табличную часть из внешней обработки в СКД (как параметр)
Есть внешняя обработка с табличной частью. Из нее нужно сформировать отчет.
Отчет хотелось бы в СКД.
Вне СКД начало запроса бы выглядело так:
и потом
А СКД на такую конструкцию ругается так:
Как бы это обойти?
Отчет хотелось бы в СКД.
Вне СКД начало запроса бы выглядело так:
Запрос.Текст = "ВЫБРАТЬ
| ЗаказыНаПроизводство.ЗаказНаПроизводство
|ПОМЕСТИТЬ втЗаказыНаПроизводство
|ИЗ
| &ЗаказыНаПроизводство КАК ЗаказыНаПроизводство
|;
|
Запрос.УстановитьПараметр("ЗаказыНаПроизводство",Объект.ЗаказыНаПроизводство.Выгрузить());
А СКД на такую конструкцию ругается так:
Ошибка получения информации набора данных
по причине:
Ошибка в запросе набора данных
по причине:
{(5, 2)}: Неверные параметры "ЗаказыНаПроизводство"
<<?>>&ЗаказыНаПроизводство КАК ЗаказыНаПроизводство
по причине:
Ошибка в запросе набора данных
по причине:
{(5, 2)}: Неверные параметры "ЗаказыНаПроизводство"
<<?>>&ЗаказыНаПроизводство КАК ЗаказыНаПроизводство
Как бы это обойти?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вставьте передачу нужной таблицы значения в процедуру модуля:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
Схема = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
НаборыДанных = Новый Структура("ВашаТаблица", ВашаТаблица);
ПК = Новый ПроцессорКомпоновкиДанных;
ПК.Инициализировать(МакетКомпоновки, НаборыДанных);
ПВ = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПВ.УстановитьДокумент(ДокументРезультат);
ПВ.Вывести(ПК, Истина);
КонецПроцедуры
В схеме компоновки добавьте набор данных - объект "ВашаТаблица"
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
Схема = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
НаборыДанных = Новый Структура("ВашаТаблица", ВашаТаблица);
ПК = Новый ПроцессорКомпоновкиДанных;
ПК.Инициализировать(МакетКомпоновки, НаборыДанных);
ПВ = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПВ.УстановитьДокумент(ДокументРезультат);
ПВ.Вывести(ПК, Истина);
КонецПроцедуры
В схеме компоновки добавьте набор данных - объект "ВашаТаблица"
(4)Собиралась как то так:
&НаКлиенте
Процедура ОтчетПодробный(Команда)
табДок = новый ТабличныйДокумент;
СерверЗаполнитьТабличныйДокумент(табДок);
табДок.Показать();
КонецПроцедуры
&НаСервере
Процедура СерверЗаполнитьТабличныйДокумент(ТабДок)
ОтчетОбъект = РеквизитФормыВЗначение("Объект");
СхемаКомпоновкиДанных = ОтчетОбъект.ПолучитьМакет("Макет");
СхемаКомпоновкиДанных.Параметры.ЗаказыНаПроизводство.Значение = Объект.ЗаказыНаПроизводство.Выгрузить();
СхемаКомпоновкиДанных.Параметры.Организация.Значение = Объект.Организация;
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ТабДок);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
КонецПроцедуры
Показать
(3) В данной публикации приведена процедура, с помощью которой можно получить от СКД табличный документ или коллекцию значений
//****************************************************************************
// ШАБЛОНЫ ДЛЯ ИСПОЛЬЗОВАНИЯ СКД
// {{
//****************************************************************************
// Заполняет переданный объект на основани СКД
//
// Параметры
//
// СКД – собствеено настройки СКД
//
// ОбъектДляЗагрузки – объект в который выгружаются данные, таблица значений, дерево значений, табличный документ
//
// ИсполняемыеНастройки – Пользовательские настройки СКД если не указаны будут использованы настроки СКД по умолчанию
//
// СтруктураПараметров - Структура – Передаваемые для СКД параметры
//
// краткий лекбез, поправлю позже
//
Процедура ПолучитьДанныеНаОснованииСКД(СКД, ОбъектДляЗагрузки, ИсполняемыеНастройки = Неопределено, СтруктураПараметров = Неопределено, РасшифровкаСКД = Неопределено, МакетКомпоновки = Неопределено, ВнешниеНаборыДанных = Неопределено) Экспорт
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Если ТипЗнч(ОбъектДляЗагрузки) = Тип("ПолеТабличногоДокумента") ИЛИ ТипЗнч(ОбъектДляЗагрузки) = Тип("ТабличныйДокумент") Тогда
ТипГенератора = Тип("ГенераторМакетаКомпоновкиДанных");
Иначе
ТипГенератора = Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений");
КонецЕсли;
Если ИсполняемыеНастройки = Неопределено Тогда
ИсполняемыеНастройки = СКД.НастройкиПоУмолчанию;
КонецЕсли;
Если СтруктураПараметров <> Неопределено Тогда
КоллекцияЗначенийПараметров = ИсполняемыеНастройки.ПараметрыДанных.Элементы;
Для каждого Параметр Из СтруктураПараметров Цикл
НайденноеЗначениеПараметра = КоллекцияЗначенийПараметров.Найти(Параметр.Ключ);
Если НайденноеЗначениеПараметра <> Неопределено Тогда
НайденноеЗначениеПараметра.Использование = Истина;
НайденноеЗначениеПараметра.Значение = Параметр.Значение;
КонецЕсли;
КонецЦикла;
КонецЕсли;
МакетКомпоновкиСКД = КомпоновщикМакета.Выполнить(СКД, ИсполняемыеНастройки, РасшифровкаСКД, МакетКомпоновки, ТипГенератора);
ПроцессорКомпановки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпановки.Инициализировать(МакетКомпоновкиСКД, ВнешниеНаборыДанных, РасшифровкаСКД);
Если ТипЗнч(ОбъектДляЗагрузки) = Тип("ПолеТабличногоДокумента") ИЛИ ТипЗнч(ОбъектДляЗагрузки) = Тип("ТабличныйДокумент") Тогда
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ОбъектДляЗагрузки);
Иначе
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ОбъектДляЗагрузки);
КонецЕсли;
ПроцессорВывода.ОтображатьПроцентВывода = Истина;
ПроцессорВывода.Вывести(ПроцессорКомпановки, Истина);
КонецПроцедуры // ПолучитьДанныеНаОснованииСКД()
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот