|
Как вывести результат СКД в свой собственный макет программно? | ☑ | ||
---|---|---|---|---|
0
mega1c
15.05.13
✎
15:36
|
Как вывести результат СКД в свой собственный макет программно?
|
|||
1
Defender aka LINN
15.05.13
✎
15:37
|
Что есть "вывести результат СКД в свой собственный макет"? И можешь ли ты это сделать не программно?
|
|||
2
mega1c
15.05.13
✎
15:41
|
есть схема компоновки, в ней выполняется какой-то запрос, применяются отборы, но мне нужно обойти результат по группировкам и вывести данные в свой макет (т.е. Область.Параметры.МойПараметр = ...; ТабДок.Вывести(Область);)
|
|||
3
kible
15.05.13
✎
15:43
|
ТЗ = Новый ТаблицаЗначений;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ПроцессорВывода.УстановитьОбъект(ТЗ); ТЗ = ПроцессорВывода.Вывести(ПроцессорКомпановки); |
|||
4
mega1c
15.05.13
✎
15:44
|
(3) это я знаю.. (см 2)
|
|||
5
ИС-2
naïve
15.05.13
✎
15:48
|
(2) вывести в типовой макет и скопировать области?
|
|||
6
mega1c
15.05.13
✎
15:50
|
нет не скопировать, а именно свой макет, со своим расположением полей, своей раскраской, картинками и тд, который уже нарисован..
|
|||
7
Fragster
гуру
15.05.13
✎
15:53
|
КомпоновщикМакетаКомпоновкиДанных (DataCompositionTemplateComposer)
Выполнить (Execute) Синтаксис: Выполнить(<Схема>, <Настройки>, <ДанныеРасшифровки>, <МакетОформления>, <ТипГенератора>, <ПроверятьДоступностьПолей>, <ПараметрыФункциональныхОпций>) Параметры: <Схема> (обязательный) Тип: СхемаКомпоновкиДанных. Схема, для которой требуется построить макет. <Настройки> (обязательный) Тип: НастройкиКомпоновкиДанных. Настройки, для которых необходимо создать макет. <ДанныеРасшифровки> (необязательный) Тип: ДанныеРасшифровкиКомпоновкиДанных. Содержит переменную, в которую будут помещены данные расшифровки. Если параметр не указан, расшифровка заполняться не будет. <МакетОформления> (необязательный) Тип: МакетОформленияКомпоновкиДанных. Макет оформления, в соответствии с которым необходимо оформлять макет компоновки данных. Если не указан, будет использоваться макет оформления по умолчанию. <ТипГенератора> (необязательный) Тип: Тип. Указывает тип генератора макета компоновки данных. Возможные типы: ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений (DataCompositionValueCollectionTemplateGenerator), ГенераторМакетаКомпоновкиДанных (DataCompositionTemplateGenerator). Значение по умолчанию: Тип("ГенераторМакетаКомпоновкиДанных") <ПроверятьДоступностьПолей> (необязательный) Тип: Булево. Определяет, выполнять ли проверку прав на просмотр полей и проверку доступности поля во включенных функциональных возможностях. Значение по умолчанию: Истина <ПараметрыФункциональныхОпций> (необязательный) Тип: Структура. Содержит параметры функциональных опций, используемые при исполенении отчета. Значение по умолчанию: Неопределено Возвращаемое значение: Тип: МакетКомпоновкиДанных. Созданный макет компоновки. Описание: Выполняет компоновку макета. Доступность: Сервер, толстый клиент, внешнее соединение. |
|||
8
mega1c
15.05.13
✎
15:55
|
раскраска и картинки по условию, куда условие вставлять то?
|
|||
9
mega1c
15.05.13
✎
15:58
|
вообще как можно вытащить данные из скд, чтобы их потом можно было бы дальше в коде использовать?
|
|||
10
Fragster
гуру
15.05.13
✎
15:59
|
||||
11
mega1c
15.05.13
✎
16:16
|
Теперь почему-то ДеревоЗначений пустое, хотя результат запроса не пустой..
РезультатДанных = ЗапросДанных.Выполнить().Выгрузить(); ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("ДанныеПоМенеджеру",РезультатДанных); СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных; КомпоновщикНастроек1 = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроек1.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек1.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных,ВнешниеНаборыДанных); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ДеревоЗначений = Новый ДеревоЗначений; ПроцессорВывода.УстановитьОбъект(ДеревоЗначений); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
|||
12
Fragster
гуру
15.05.13
✎
16:28
|
Стоит отметить, что при выводе результата компоновки в коллекцию значений существует несколько ограничений:
* В настройках нельзя использовать таблицы, диаграммы и вложенные схемы; * Не используется условное оформление; * Игнорируются папки в выбранных полях. |
|||
13
zak555
15.05.13
✎
16:29
|
(12) и зачем эти ограничения ?
|
|||
14
mega1c
15.05.13
✎
16:31
|
печально..
|
|||
15
mega1c
15.05.13
✎
17:05
|
А щас то почему пустой?
СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных; ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить(); ИсточникДанных.Имя = "ИсточникДанных1"; ИсточникДанных.ТипИсточникаДанных ="Local"; ИсточникДанных.СтрокаСоединения =""; НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(ТИП("НаборДанныхЗапросСхемыКомпоновкиДанных")); НаборДанных.Имя = "НаборДанных1"; НаборДанных.Запрос= ЗапросДанных.Текст; НаборДанных.ИсточникДанных ="ИсточникДанных1"; КомпоновщикНастроек1 = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроек1.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек1.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);//ВнешниеНаборыДанных); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ДеревоЗначений = Новый ДеревоЗначений; ПроцессорВывода.УстановитьОбъект(ДеревоЗначений); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
|||
16
kiruha
15.05.13
✎
17:14
|
(0)
Без извращений никак ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений вещь убогая - группировка колонок отсутствует, а без нее это не лучше построителя. |
|||
17
Fragster
гуру
15.05.13
✎
17:17
|
(16) лучше - условия гибкие, дополнение по периоду нормальное, внешние источники типа ТЗ, вызов функций из конфигурации в вычисляемых полях, произвольная иерархия, соедиенение запросов по условию и куча других плюшек
|
|||
18
Зойч
15.05.13
✎
17:20
|
(16) зачем тебе группировка колонок, если у тебя фиксировнный макет?
|
|||
19
mega1c
15.05.13
✎
17:28
|
(15)блин, в чем может быть проблема то?
|
|||
20
kiruha
15.05.13
✎
17:35
|
Если проблема с добавлением источника данных - в макеты лучше даже и не лезть - забей
|
|||
21
drongo-god
15.05.13
✎
17:47
|
(0) Результат выполнения в ТЗ положить и потом обойти эту ТЗ выводя данные в свой макет.
Если нужно подробней могу расписать с примерами. |
|||
22
mega1c
15.05.13
✎
18:01
|
можно пример? все равно пустой получается..
СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных; ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить(); ИсточникДанных.Имя = "ИсточникДанных1"; ИсточникДанных.ТипИсточникаДанных ="Local"; ИсточникДанных.СтрокаСоединения =""; НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(ТИП("НаборДанныхЗапросСхемыКомпоновкиДанных")); НаборДанных.Имя = "НаборДанных1"; НаборДанных.Запрос= ЗапросДанных.Текст; НаборДанных.ИсточникДанных ="ИсточникДанных1"; НаборДанных.АвтоЗаполнениеДоступныхПолей = Истина; КомпоновщикНастроек1 = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроек1.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек1.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);//ВнешниеНаборыДанных); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ТаблицаВыпуска = Новый ТаблицаЗначений; ПроцессорВывода.УстановитьОбъект(ТаблицаВыпуска); ТаблицаВыпуска = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
|||
23
drongo-god
15.05.13
✎
18:01
|
(19) Если у тебя в схеме в настройках нет группировок и выводимых полей то результат будет пустым.
|
|||
24
drongo-god
15.05.13
✎
18:07
|
ТекущаяСхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(СхемаКомпоновкиДанныхВвод);
ТекущийКомпановщикНастроек = новый КомпоновщикНастроекКомпоновкиДанных; ТекущийКомпановщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(ТекущаяСхемаКомпоновкиДанных)); ТекущийКомпановщикНастроек.ЗагрузитьНастройки(КомпоновщикНастроек.Настройки); тз = новый ТаблицаЗначений; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(ТекущаяСхемаКомпоновкиДанных, ТекущийКомпановщикНастроек.Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ПроцессорВывода.УстановитьОбъект(тз); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
|||
25
drongo-god
15.05.13
✎
18:10
|
(24) Я тут использую даже две разные схемы компоновки.
Причем настроки для одной беру с другой. СхемаКомпоновкиДанныхВвод - Схема которую я ложу в хранилище еще при создании формы. КомпоновщикНастроек - настроки компоновщика которые инициализируются при создании формы. Но не забудь о том что если в твоей схеме не будет группировки с указанием всех полей которые ты хочеш получить то будет пусто. Приче желательно группировку делать только одну, в ней указать нужные поля для вывода. |
|||
26
drongo-god
15.05.13
✎
18:14
|
(23) Так же перед выполнением посмотри в отладчике что у тебя лежит в ТекущийКомпановщикНастроек.Настройки.Структура
Там ты должен увидеть свою группировку и поля которые будут выводиться. |
|||
27
drongo-god
15.05.13
✎
18:37
|
(26)
Далее Макет = "то место откуда получаем свой макет".ПолучитьМакет("Имя макета"); ТабДок = ЭтаФорма.ТабВывода; ТабДок.Очистить(); Для Каждого СтрокаТЗ Из ТЗ Цикл ОбластьСтрока = Макет.ПолучитьОбласть("ИмяОбласти"); //Заполняем парметры области ТабДок.Вывести(ОбластьСтрока); КонецЦикла; |
|||
28
mega1c
16.05.13
✎
11:18
|
все получилось, спасибо, нужно было добавить группировку и поля в настройки скд..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |