|
Передача объекта ТаблицаЗначений в СКД в качестве параметра | ☑ | ||
---|---|---|---|---|
0
Svetlana_Kazan
14.02.18
✎
15:06
|
Помогите, пожалуйста, никак не получается найти ошибку. Может кто-то уже подобное делал...
С самим запросом проблем нет. Не получается именно с ТаблицейЗначений в СКД. В модуле формы: &НаСервере Процедура СформироватьСКДНаСервере() //Результат - ТабличныйДокумент //АкцияТЗ - ТаблицаЗначений //Период - СтандартныйПериод АкцияТЗ = РеквизитФормыВЗначение("Акция"); Результат.Очистить(); НашОтчет = РеквизитФормыВЗначение("Отчет"); НашОтчет.ПечатьОтчетаСКД(НашОтчет, Результат, АкцияТЗ, Период); КонецПроцедуры &НаКлиенте Процедура СформироватьСКД(Команда) СформироватьСКДНаСервере(); КонецПроцедуры В модуле объекта: Процедура ПечатьОтчетаСКД(НашОтчет, Результат, АкцияТЗ, Период) экспорт //Получаем схему из макета СКДНастроек = НашОтчет.ПолучитьМакет("МакетСКД"); ТекстЗапроса = СКДНастроек.НаборыДанных.НаборДанных1.Запрос; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "АкцияТЗ КАК Акция", "&АкцияТЗ КАК Акция"); Запрос = Новый Запрос; Запрос.Текст = ТекстЗапроса; //Запрос. настройкиСКД = СКДНастроек.ВариантыНастроек.Найти("Основной").Настройки; Запрос.УстановитьПараметр("АкцияТЗ", АкцияТЗ); Запрос.УстановитьПараметр("КолПозиций", АкцияТЗ.Количество()); Запрос.УстановитьПараметр("ДатаНачала", Период.ДатаНачала); Запрос.УстановитьПараметр("ДатаОкончания", ?(Период.ДатаОкончания = Дата(1,1,1), Дата(3999,12,31,23,59,59),Период.ДатаОкончания)); ТабДанных = Запрос.Выполнить().Выгрузить(); //ТабДанных содержит данные, которые получили при выполнении запроса (именно, то что должны) ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("ТаблицаДанных", ТабДанных); //Макет компоновки КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; ВнешнийНД = СКДНастроек.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных")); ИмяНД = СКДНастроек.НаборыДанных[0].Имя; ЗаполнитьЗначенияСвойств(ВнешнийНД, СКДНастроек.НаборыДанных.НаборДанных1); Для каждого ПолеСКД Из СКДНастроек.НаборыДанных[0].Поля Цикл НовоеПоле = ВнешнийНД.Поля.Добавить(ТипЗнч(ПолеСКД));//(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ЗаполнитьЗначенияСвойств(НовоеПоле,ПолеСКД); КонецЦикла; СКДНастроек.НаборыДанных.Удалить(СКДНастроек.НаборыДанных[0]); СКДНастроек.НаборыДанных[0].Имя = ИмяНД; СКДНастроек.НаборыДанных[0].ИмяОбъекта = "ТаблицаДанных"; МакетКомпоновки = КомпоновщикМакета.Выполнить(СКДНастроек,НастройкиСКД); //Компоновка данных ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных); //Вывод результата Результат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецПроцедуры |
|||
1
Svetlana_Kazan
14.02.18
✎
16:45
|
Может кто знает, а так должно быть, что при открытии СхемыКомпоновкиДанных
выходит ошибка: Ошибка получения информации набора данных по причине: Ошибка в запросе набора данных по причине: {(6, 2)}: Таблица не найдена "АкцияТЗ" <<?>>АкцияТЗ КАК Акция При этом при во вкладке Настройки СКД недоступны ВыбранныеПоля(этой части вообще нет) |
|||
2
Tateossian
14.02.18
✎
16:52
|
ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить("ТаблицаДанных", ТабДанных); Посмотри на название таблицы |
|||
3
Svetlana_Kazan
14.02.18
✎
17:50
|
(2) А как должно быть?
ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить(ТаблицаДанных, ТабДанных); Выполнение отчета дает пустой результат. |
|||
4
Evgenchik
14.02.18
✎
17:54
|
+(2) Таблица должна называться также как у тебя в СКД.
"ТаблицаДанных" - такое название таблицы в СКД? |
|||
5
Svetlana_Kazan
14.02.18
✎
18:07
|
(4) ,Да
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |