![]() |
![]() |
![]() |
|
СКД 8.2 | ☑ | ||
---|---|---|---|---|
0
Black_Doctor
28.11.10
✎
13:48
|
значит тема такая, передаю в процедуру строку результата выборки данных по запросу, СКД отрабатывает, а в результирующий документ ничего не выводит, подскажите, что делаю не так???
код процедуры: Процедура ЗаполнениеОтчетаОбОшибках(ТаблицаЗначений = Неопределено,Дополнение = "") // Получение схемы и настройки СхемаКомпоновкиДанных = ЭтотОбъект.ПолучитьМакет("Макет"); КомпоновщикНастроекСхемы = Новый КомпоновщикНастроекКомпоновкиДанных; НовыйИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Найти("НаборДанных1"); НовыйНаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Найти("НаборДанных1"); Для каждого стр из ТаблицаЗначений.Владелец().колонки Цикл НовоеПоле = НовыйНаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); НовоеПоле.Заголовок = стр.имя; НовоеПоле.ВыражениеПредставления = стр.имя; НовоеПоле.ПутьКДанным = стр.имя; НовоеПоле.Поле = стр.имя; КонецЦикла; КомпоновщикНастроекСхемы.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); Настройки = КомпоновщикНастроекСхемы.Настройки; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки); // Инициализируем процессор компоновки ВнешнийНаборДанных = Новый Структура; ВнешнийНаборДанных.Вставить("ТаблицаЗначений",ТаблицаЗначений); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,ВнешнийНаборДанных); // Выводим результат ДокументРезультат = Новый ТабличныйДокумент; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ОсновнойМакетОшибок); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); //ОсновнойМакетОшибок.Присоединить(ДокументРезультат); КонецПроцедуры |
|||
1
Beans
28.11.10
✎
16:16
|
может быть внешние данные не правильно передаются?
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; КС = Новый КвалификаторыСтроки(100); Массив = Новый Массив; Массив.Добавить(Тип("Строка")); ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС); ТЗ =Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Поле",ОписаниеТиповС); //----------------------------------------------- НовСтрока = ТЗ.Добавить(); НовСтрока.Поле = "Значение1" ; //------------------------------------------------- ВнешнийНабор = Новый Структура; ВнешнийНабор.Вставить("НаборДанных1",ТЗ); ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешнийНабор , ДанныеРасшифровки); |
|||
2
Black_Doctor
28.11.10
✎
16:34
|
я туда пробовал передать как Таблицу значений, так и сроку выборки из запроса.... ни то ни то не выводиться...
|
|||
3
Beans
28.11.10
✎
16:45
|
в самой схеме создать набор данных "объект"
и поле: Имя объекта , содержащего данные : НаборДанных1 и поля вручную создать |
|||
4
Black_Doctor
28.11.10
✎
16:51
|
дело в том, что мне динамически нужно создавать набор данных и соответственно поля тоже динамически нужно задавать)))
|
|||
5
Beans
28.11.10
✎
17:42
|
тогда все надо динамически придется делать и добавлять поля группировок и выбранные поля
полчается примерно так ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; КС = Новый КвалификаторыСтроки(100); Массив = Новый Массив; Массив.Добавить(Тип("Строка")); ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС); ТЗ =Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Поле",ОписаниеТиповС); //----------------------------------------------- НовСтрока = ТЗ.Добавить(); НовСтрока.Поле = "Значение1" ; //------------------------------------------------- НовыйИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Найти("ИсточникДанных1"); НовыйНаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Найти("НаборДанных1"); Настройки = КомпоновщикНастроек.Настройки; //добавим группировки отчета Группировка = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); Группировка.Использование =Истина; //------------------------------------------- Для каждого стр из ТЗ.колонки Цикл НовоеПоле = НовыйНаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); НовоеПоле.Заголовок = стр.имя; НовоеПоле.ВыражениеПредставления = стр.имя; НовоеПоле.ПутьКДанным = стр.имя; НовоеПоле.Поле = стр.имя; //добавим поле в группировку ПолеНовое = Группировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеНовое.Поле =Новый ПолеКомпоновкиДанных(стр.Имя); ПолеНовое.Использование = Истина; КонецЦикла; //добавим выбранные поля ВыбранныеПоля = Группировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); ВыбранныеПоля.Использование =Истина; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); ВнешнийНабор = Новый Структура; ВнешнийНабор.Вставить("НаборДанных1",ТЗ); ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,ВнешнийНабор ,ДанныеРасшифровки); |
|||
6
Black_Doctor
28.11.10
✎
19:25
|
{Форма.Форма.Форма(45)}: Ошибка при вызове метода контекста (Инициализировать)
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,ВнешнийНаборДанных); по причине: Ошибка компоновки данных по причине: Ошибка инициализации по причине: Ошибка создания набора данных "НаборДанных1" по причине: Не найден внешний набор данных вот такая вот ошибка, при таком вот коде: Процедура ЗаполнениеОтчетаОбОшибках(ТаблицаЗначений = Неопределено,Дополнение = "") // Получение схемы и настройки СхемаКомпоновкиДанных = ЭтотОбъект.ПолучитьМакет("Макет"); КомпоновщикНастроекСхемы = Новый КомпоновщикНастроекКомпоновкиДанных; НовыйИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Найти("ТаблицаЗначений"); НовыйНаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Найти("НаборДанных1"); КомпоновщикНастроекСхемы.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); Настройки = КомпоновщикНастроекСхемы.Настройки; //добавим группировки отчета Группировка = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); Группировка.Использование =Истина; Для каждого стр из ТаблицаЗначений.Владелец().колонки Цикл НовоеПоле = НовыйНаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); НовоеПоле.Заголовок = стр.имя; НовоеПоле.ВыражениеПредставления = стр.имя; НовоеПоле.ПутьКДанным = стр.имя; НовоеПоле.Поле = стр.имя; КонецЦикла; //добавим поле в группировку ПолеНовое = Группировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеНовое.Поле =Новый ПолеКомпоновкиДанных(стр.Имя); ПолеНовое.Использование = Истина; //добавим выбранные поля ВыбранныеПоля = Группировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); ВыбранныеПоля.Использование =Истина; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки); // Инициализируем процессор компоновки ВнешнийНаборДанных = Новый Структура; ВнешнийНаборДанных.Вставить("ТаблицаЗначений",ТаблицаЗначений); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,ВнешнийНаборДанных); // Выводим результат ДокументРезультат = Новый ТабличныйДокумент; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ОсновнойМакетОшибок); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); //ОсновнойМакетОшибок.Присоединить(ДокументРезультат); КонецПроцедуры |
|||
7
Black_Doctor
29.11.10
✎
00:53
|
ну, ну мне категорически не помогают))) придеться собирать макеты)))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |