Вход | Регистрация


Передача объекта ТаблицаЗначений в СКД в качестве параметра

Передача объекта ТаблицаЗначений в СКД в качестве параметра
Я
   Svetlana_Kazan
 
14.02.18 - 15:06
Помогите, пожалуйста, никак не получается найти ошибку. Может кто-то уже подобное делал...
С самим запросом проблем нет. Не получается именно с ТаблицейЗначений в СКД.

В модуле формы:
&НаСервере
Процедура СформироватьСКДНаСервере()
//Результат - ТабличныйДокумент

//АкцияТЗ - ТаблицаЗначений
//Период - СтандартныйПериод


АкцияТЗ = РеквизитФормыВЗначение("Акция");
Результат.Очистить();
НашОтчет = РеквизитФормыВЗначение("Отчет");
НашОтчет.ПечатьОтчетаСКД(НашОтчет, Результат, АкцияТЗ, Период);
КонецПроцедуры

&НаКлиенте
Процедура СформироватьСКД(Команда)
СформироватьСКДНаСервере();
КонецПроцедуры


В модуле объекта:
Процедура ПечатьОтчетаСКД(НашОтчет, Результат, АкцияТЗ, Период) экспорт
//Получаем схему из макета

СКДНастроек = НашОтчет.ПолучитьМакет("МакетСКД");
ТекстЗапроса = СКДНастроек.НаборыДанных.НаборДанных1.Запрос;

ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "АкцияТЗ КАК Акция", "&АкцияТЗ КАК Акция");

Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;

//Запрос.

настройкиСКД = СКДНастроек.ВариантыНастроек.Найти("Основной").Настройки;

Запрос.УстановитьПараметр("АкцияТЗ", АкцияТЗ);
Запрос.УстановитьПараметр("КолПозиций", АкцияТЗ.Количество());
Запрос.УстановитьПараметр("ДатаНачала", Период.ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ?(Период.ДатаОкончания = Дата(1,1,1), Дата(3999,12,31,23,59,59),Период.ДатаОкончания));

ТабДанных = Запрос.Выполнить().Выгрузить();//ТабДанных содержит данные, которые получили при выполнении запроса (именно, то что должны)


ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить("ТаблицаДанных", ТабДанных);

//Макет компоновки

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
ВнешнийНД = СКДНастроек.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
ИмяНД = СКДНастроек.НаборыДанных[0].Имя;
ЗаполнитьЗначенияСвойств(ВнешнийНД, СКДНастроек.НаборыДанных.НаборДанных1);

Для каждого ПолеСКД Из СКДНастроек.НаборыДанных[0].Поля Цикл
НовоеПоле = ВнешнийНД.Поля.Добавить(ТипЗнч(ПолеСКД))//(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));

ЗаполнитьЗначенияСвойств(НовоеПоле,ПолеСКД);
КонецЦикла;

СКДНастроек.НаборыДанных.Удалить(СКДНастроек.НаборыДанных[0]);
СКДНастроек.НаборыДанных[0].Имя = ИмяНД;
СКДНастроек.НаборыДанных[0].ИмяОбъекта = "ТаблицаДанных";

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

//Компоновка данных

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

//Вывод результата

Результат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
 
 
   Svetlana_Kazan
 
1 - 14.02.18 - 16:45
Может кто знает, а так должно быть, что при открытии СхемыКомпоновкиДанных
выходит ошибка:
Ошибка получения информации набора данных
по причине:
Ошибка в запросе набора данных
по причине:
{(6, 2)}: Таблица не найдена "АкцияТЗ"
<<?>>АкцияТЗ КАК Акция

При этом при во вкладке Настройки СКД недоступны ВыбранныеПоля(этой части вообще нет)
   Tateossian
 
2 - 14.02.18 - 16:52
ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить("ТаблицаДанных", ТабДанных);

Посмотри на название таблицы
   Svetlana_Kazan
 
3 - 14.02.18 - 17:50
(2) А как должно быть?

ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить(ТаблицаДанных, ТабДанных);

Выполнение отчета дает пустой результат.
   Evgenchik
 
4 - 14.02.18 - 17:54
+(2) Таблица должна называться также как у тебя в СКД.
"ТаблицаДанных" - такое название таблицы в СКД?
   Svetlana_Kazan
 
5 - 14.02.18 - 18:07
(4) ,Да

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует