Имя: Пароль:
1C
 
Как передать текст запроса в СКД?
0 polo_mino
 
01.11.10
17:05
Доброго всем вечера! Подскажите пожалуйста каким образом передать текст запроса, который формируется динамически, в СКД?
1 Dmitrii
 
гуру
01.11.10
17:11
НаборДанныхЗапросСхемыКомпоновкиДанных (DataCompositionSchemaDataSetQuery)
Запрос (Query)
Использование:
Чтение и запись.
Описание:
Тип: Строка. Текст запроса для получения данных набора.
2 polo_mino
 
01.11.10
17:22
Делаю примерно так:


СКД = Новый СхемаКомпоновкиДанных;
   ИД = СКД.ИсточникиДанных.Добавить();
   ИД.Имя = "ИсточникДанных";
   ИД.ТипИсточникаДанных = "local";
   НаборДанных = СКД.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
   НаборДанных.Имя = "НаборДанный1";
   НаборДанных.Запрос = "ВЫБРАТЬ
           |    ТипыСкидокНаценок.Наименование,
           |    ТипыСкидокНаценок.Условие,
           |    ТипыСкидокНаценок.ВидСкидки
           |ИЗ
           |    Справочник.ТипыСкидокНаценок КАК ТипыСкидокНаценок";
   НаборДанных.ИсточникДанных = "ИсточникДанных";
   СхемаКомпоновкиДанных = СКД;
   
Настройки = КомпоновщикНастроек.Настройки;
   
   //Помещаем в переменную данные о расшифровке данных
   ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
   
   //Формируем макет, с помощью компоновщика макета
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   
   //Передаем в макет компоновки схему, настройки и данные расшифровки
   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
   Настройки, ДанныеРасшифровки);
   
   //Выполним компоновку с помощью процессора компоновки
   ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,
   ДанныеРасшифровки);
   
   //Очищаем поле табличного документа
   Результат = ЭлементыФормы.Результат;
   Результат.Очистить();
   
   
   
   //Выводим результат в табличный документ
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(Результат);
   
   ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
   
   ЭлементыФормы.Результат.ПоказатьУровеньГруппировокСтрок(0);



///////////////////////////////////////

При получении существующей схемы настройки и расшифровки по умолчанию работают нормально, подскажите в чем ошибка
3 polo_mino
 
03.11.10
11:26
ап
4 Defender aka LINN
 
03.11.10
11:30
(2) "настройки и расшифровки по умолчанию работают нормально, подскажите в чем ошибка" - и в чем ошибка?
5 detec
 
03.11.10
11:32
(2) А в чём, собственно, ошибка? По хорошему в СКД не нужно передавать программно изменяющихся запросов. Нужно так спланировать запрос, чтобы в запросе выполнялось то или иное вычисление.
6 polo_mino
 
03.11.10
12:57
Ошибка в том, что таким образом схема новая так и не создалась... проблему решила сделав схему с пустыми полями, получила ее в программно и передала нужный текст запроса))
7 polo_mino
 
03.11.10
12:59
появилась следующая задачка, как программно создать параметры схемы?
8 polo_mino
 
03.11.10
13:25
есть вариант добавления параметров интерактивно и управления ими потом уже программно, как предложено здесь:
v8: Как в СКД добавить параметр программно
на этом и остановились, может кто все таки встречал способ как создать свои параметры программно?
9 Defender aka LINN
 
03.11.10
13:45
(8) Для на хре на?
10 alex-pro
 
03.11.10
14:02
Может, проще будет выполнить предварительно запрос и передать табличку в СКД? ))))
11 polo_mino
 
03.11.10
14:30
табличку с чем? со значениями параметров?
12 artems
 
03.11.10
14:33
(11) табличку с данными
13 polo_mino
 
03.11.10
14:37
не в передаче списка данных дело, меняются сами параметры т.е. в цикле формируем ряд параметров и их нужно объявить для скд, а потом присвоить некие значения
14 artems
 
03.11.10
14:41
(13) Так в этом и дело. Предварительно запросом с нужными параметрами получаешь ТЗ с уже отфильтрованными данными и передаешь ее в СКД, а там уже выводишь как надо.
15 polo_mino
 
03.11.10
14:55
(14) простой пример пожалуйста) а то думается мне мы говорим о разном
16 polo_mino
 
08.11.10
06:30
ап
17 polo_mino
 
09.11.10
07:47
Задачу решила, передав результат работы запроса как внешний источник данных для СКД, получилось как раз то что нужно))
Код:

ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить("тз",тз);
СхемаКомпоновкиДанных = ПолучитьМакет("ЧерезВнешний");
Настройки = КомпоновщикНастроек.Настройки;      ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки, ДанныеРасшифровки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных);
Результат = ЭлементыФормы.Результат;
Результат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
ЭлементыФормы.Результат.ПоказатьУровеньГруппировокСтрок(0);
18 Aprobator
 
09.11.10
09:33
(17) работаешь с отчетом? Почитай в СП про расширения формы отчета и свойства объекта Отчет.
19 5 Элемент
 
09.11.10
09:41
Перепиши код так
//СКД = Новый СхемаКомпоновкиДанных;
ИД = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить();
ИД.Имя = "ИсточникДанных";
...

Если не понял, то нужно изменять схему по-умолчанию.
20 polo_mino
 
09.11.10
11:05
(19) от создания новой схемы руками отказалась, передаю набор в существующую, так проще с скд работать
21 polo_mino
 
09.11.10
12:18
(17) расскажите пожалуйста как это к делу относится?