![]() |
|
УФ (Управляемые формы) построить СКД на основе ТЗ (Таблицы значений) | ☑ | ||
---|---|---|---|---|
0
Dvait
09.09.14
✎
09:55
|
Появилась задача сделать отчёт на СКД на основе данных Таблицы значений. Отчёт внешний. Раньше на обычных формах всё решалось просто: в модуле отчета делаем процедуру ПриКомпоновкеРезультата и в ней переносим данные из ТЗ в СКД. Но в Управляемых так не получается - не удаётся добраться до ТЗ формы или ТЗ реквизита внешнего отчета. Тоже самое с Хранилищем Значений - не удается передать в процедуру идентификатор.
Может быть есть другой, более правильный способ? В поиске находится куча примеров для обычных форм и ни одного для управляемых. |
|||
1
mastodont
09.09.14
✎
09:58
|
Что значит "не удаётся добраться до ТЗ формы"?
|
|||
2
Бешеная Нога
09.09.14
✎
10:00
|
у отчета добавляешь реквизит. в форме отчета суешь туда значение. в модуле отчета при компоновке получешь значение этого реквизита и суешь в СКД.
профит |
|||
3
Лодырь
09.09.14
✎
10:01
|
(1) +1 присоединюсь к вопросу
|
|||
4
Dvait
10.09.14
✎
11:07
|
Ну в смысле, до реквизита я добираюсь, но в нём пусто. Т.е. там пустая ТЗ, хотя в самой форме я её заполняю.
Вот пример отчёта при открытии в форме ТЗ заполняется строчка, а при нажатии кнопки "Сформировать" в переменной уже пусто. http://webfile.ru/8f8edc65d8b91e33238ca1fca07a4b02 |
|||
5
Dvait
10.09.14
✎
11:39
|
А вот второй вариант тут уже ТЗ - ТаблицаЗначенийФорма - реквизит формы, а вот как добраться до этого реквизита из ПриКомпоновкеРезультата не представляю.
http://webfile.ru/1a19782f5f9189f51b7a8552fc79fa5d |
|||
6
mastodont
15.09.14
✎
16:05
|
(4)(5)
Когда ты делаешь: ЭтотОтчет = РеквизитФормыВЗначение("Отчет"); Описание: Преобразует указанный реквизит формы в объект прикладного типа. создается переменная ЭтотОтчет, и туда передается преобразованная копия... т.е. это не ссылка. и дальше ты делаешь ЭтотОтчет.ТаблицаЗначенийРеквизиты.Колонки.Добавить("Тест"); НоваяСтрока = ЭтотОтчет.ТаблицаЗначенийРеквизиты.Добавить(); НоваяСтрока.Тест = "123"; Сообщить("Кол-во строк ТЗ в Форме: " + ЭтотОтчет.ТаблицаЗначенийРеквизиты.Количество()); все это делается не с реквизитом отчета, а просто с переменной. |
|||
7
mastodont
15.09.14
✎
16:12
|
можно сделать вот так:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ЭтотОтчет = РеквизитФормыВЗначение("Отчет"); ЭтотОтчет.ТаблицаЗначенийРеквизиты.Колонки.Добавить("Тест"); НоваяСтрока = ЭтотОтчет.ТаблицаЗначенийРеквизиты.Добавить(); НоваяСтрока.Тест = "123"; Сообщить("Кол-во строк ТЗ в Форме: " + ЭтотОтчет.ТаблицаЗначенийРеквизиты.Количество()); ЗначениеВРеквизитФормы(ЭтотОтчет, "Отчет"); КонецПроцедуры |
|||
8
mastodont
15.09.14
✎
16:12
|
(7) возможно есть более правильный способ, но я его не нашел.
|
|||
9
mastodont
15.09.14
✎
16:16
|
вот нашел подробное описание:
http://nastroy-ka.ru/ent1c812/130-2012-08-14-08-15-56.html |
|||
10
Dvait
08.10.14
✎
09:16
|
Огромное спасибо, всё упиралось как обычно в одну строчку.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |