|
СКД: программный вывод в таблицу значений | ☑ | ||
---|---|---|---|---|
0
Zhuravlik
23.01.14
✎
17:52
|
Добрый вечер. Не могу понять, в чем трабла: хочу на основе всяческих пользовательских отборов и фильтров по периоду получить таблицу значений. И хочу через СКД, т.к. в одном случае нужна тз, в другом - сформированный табличный документ.
При этом хочу, чтобы все работало в УФ, с настройками по-умолчанию (панель с "авто-заполнением"). Создал отчет, определил схему компоновки, задал параметры, создал форму. Попробовал - результат в табличном документе есть. Теперь мне нужно получить данные в таблицу значений, пока не думаю как ее передать на клиент, но чую там тоже история. После нажатия на "Сформировать" выполняются последовательно 3 события: 1) ОбработкаПроверкиЗаполненияНаСервере (Модуль формы) 2) ОбработкаПроверкиЗаполнения (Модуль объекта) 3) ПриКомпоновкеРезультата (МодульОбъекта) В ПриКомпоновкеРезультата пишу такой вот код: Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; тз = Новый ТаблицаЗначений; ПроцессорВывода.УстановитьОбъект(тз); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); КонецПроцедуры Ставлю точку останова в конце процедуры, переменная тз - пустая. Подскажите пожалуйста, почему, и как с этим бороться? |
|||
1
Адский плющ
23.01.14
✎
17:54
|
Группировка в СКД прописана?
|
|||
2
Zhuravlik
23.01.14
✎
17:56
|
(1) Только детальные записи
|
|||
3
Zhuravlik
23.01.14
✎
17:58
|
+ И удаление группировки по детальным записям ничего не дает, что из руководства разработчика и следует "Не поддерживается вывод таблиц, диаграмм и вложенных отчетов в универсальную коллекцию значений" - про дет. записи ничего не сказно
|
|||
4
КРТЩ
23.01.14
✎
18:01
|
(0) ну так ты выполнил компоновку, потом создал новую тз, не заполняя её засунул в процессор вывода с чего она у тя будет заполнена?
|
|||
5
Zhuravlik
23.01.14
✎
18:04
|
(4) В плане, не заполняя? Я думал, что СКД на основе запроса выдаст мне готовую тз с колонками и строками. Выходит, что колонки я сам должен создать? Или что заполнять?
|
|||
6
Zhuravlik
23.01.14
✎
18:05
|
+ Табличный же документ не надо заполнять заранее при програмном формировании
|
|||
7
Zhuravlik
23.01.14
✎
18:07
|
+ Еще, пробовал также вот такой код:
ПроцессорВывода.НачатьВывод(); Пока Истина Цикл Элемент = ПроцессорКомпоновкиДанных.Следующий(); Если Элемент = Неопределено Тогда Прервать; Иначе ПроцессорВывода.Вывести(Элемент); КонецЕсли; КонецЦикла; ПроцессорВывода.ЗакончитьВывод(); Элемент - все время неопределено |
|||
8
Zhuravlik
23.01.14
✎
18:09
|
Блин, что за бред?))))
СтандартнаяОбработка = Ложь; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; тз = Новый ТаблицаЗначений; тз.Колонки.Добавить("ДатаЗаявки"); ПроцессорВывода.УстановитьОбъект(тз); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
|||
9
Zhuravlik
23.01.14
✎
18:10
|
+ Добавил одну колонку, все получилось, но в ТЗ вывелись все поля.
|
|||
10
Zhuravlik
23.01.14
✎
18:10
|
Скажите гуру, это глюк или фича?))
|
|||
11
Zhuravlik
23.01.14
✎
18:21
|
В общем получается спасибо за (4).
Хочу этот момент понять, смотрите: добавил я поле, типа "Дата" - "ДатаЗаявки". При этом вывелись ВСЕ поля из запроса, причем появилось поле ДатаЗаявки1 - пустое. Еще то что вывелось в других полях - вывелось криво, напр. поле "Сотрудник", которое должно иметь тип "СправочникСсылка.ФизическиеЛица" - вывелось как текстовое, и обрезалось до 10 символов. Доавляю все нужные поля в тз. Все заполнилось как надо, но там еще появидись их дубли с постфиксом "1" (ДатаЗаявки1, Сотрудник1 и т.д.) - и все пустые. Что это? Где - нибудь есть описание как правильно нужно с СКД такие вещи делать? |
|||
12
Zhuravlik
23.01.14
✎
18:23
|
+ А еще я заметил что все данные не на своем месте... Пожар( Ткните в сторону литературы, где описание посмотреть?
|
|||
13
Zhuravlik
23.01.14
✎
18:40
|
(4) Не поделитесь примером, как ее заполнять нужно?
|
|||
14
Zhuravlik
23.01.14
✎
18:44
|
Если в коде в (0) заменить Таблицу значений на дерево значений, все отрабатывает, и получаю данные, как по-идее и должно быть.
Что с заполнением тз - так и не понял. И почему так - тоже не понял, если кто знает поделитесь опытом? |
|||
15
Zhuravlik
23.01.14
✎
22:00
|
ап... чем для СКД тз отличается от дерева?... Или это глюк такой?
|
|||
16
sanja26
23.01.14
✎
22:30
|
(15) я обычно колонки прописывыю для ТЗ, в которую гружу скд
|
|||
17
Zhuravlik
24.01.14
✎
21:52
|
(16) А вот попробуй не прописывать. А потом замени тз деревом значений. И попробуй допри, почему так :(
Хоть и понятно, что дерево логичнее подходит под выгрузку из скд, это я про группировки. Но интуитивно рассуждая: тз - для получения "плоской" таблицы, дерево - сгруппированной. Однако же, дерево кажет, тз - нет. Вернее "не так как хотелось бы". |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |