|
Динамическое программное добавление табличного документа на УФ. | ☑ | ||
---|---|---|---|---|
0
байт
08.06.15
✎
07:23
|
Доброго времени суток, коллеги, с УФ не так часто вожусь в связи с чем такой вопрос динамически формируются табличные документы(печатные формы), они размещаются постранично на форму их может быть 10, 15 и т.д, не удается мне программно это реализовать, на форме уже размещено 10 табличных документов, если их не хватает нужно добавить программно, может кто поможет? Это мои попытки дописки:
Колво = КоллекцияПечатныхФорм.Количество(); Для Сч = 1 По Колво Цикл //Если Сч > Колво Тогда // ЭтаФорма["Таб" + Сч] = Неопределено; // Элементы["Группа" + Сч].Видимость = Ложь; // Элементы["Копии" + Сч].Видимость = Ложь; //Иначе СтрМакета = КоллекцияПечатныхФорм[Сч-1]; //МНач Попытка ЭтаФорма["Таб" + Сч] = СтрМакета.ТабличныйДокумент; Элементы["Группа" + Сч].Видимость = Истина; Элементы["Группа" + Сч].Заголовок = СтрМакета.СинонимМакета; Элементы["Копии" + Сч].Видимость = Истина; Элементы["Копии" + Сч].Заголовок = СтрМакета.СинонимМакета; Если Сч <= КоличествоКопийДляПечати.Количество() Тогда ЭтаФорма["Копии" + Сч] = КоличествоКопийДляПечати[Сч-1]; Иначе ЭтаФорма["Копии" + Сч] = СтрМакета.Экземпляров; КонецЕсли; ЭтаФорма["Таб" + Сч].КоличествоЭкземпляров = ЭтаФорма["Копии" + Сч]; Исключение //НовГруппа = Элементы.Добавить("Группа" + Сч,Тип("ГруппаФормы"),ЭтаФорма.Элементы.Страницы); //НовПоле = Элементы.Добавить("Таб" + Сч,Тип("ПолеФормы"),НовГруппа); //НовТаблФормы = Элементы.Добавить("Таб" + Сч,Тип("таблицаформы")); //НовПоле.ПутьКДанным = НовТаблФормы; //НовТаблФормы = СтрМакета.ТабличныйДокумент; Элементы.Добавить("Группа" + Сч,Тип("ГруппаФормы"),ЭтаФорма.Элементы.Страницы); //Элементы.Добавить("Копии" + Сч,Тип("Число"),ЭтаФорма.Элементы.ГруппаКопии); //ЭтаФорма["Таб" + Сч] = СтрМакета.ТабличныйДокумент; Элементы["Группа" + Сч].Видимость = Истина; Элементы["Группа" + Сч].Заголовок = СтрМакета.СинонимМакета; //Элементы["Копии" + Сч].Видимость = Истина; //Элементы["Копии" + Сч].Заголовок = СтрМакета.СинонимМакета; // //Если Сч <= КоличествоКопийДляПечати.Количество() Тогда // ЭтаФорма["Копии" + Сч] = КоличествоКопийДляПечати[Сч-1]; //Иначе // ЭтаФорма["Копии" + Сч] = СтрМакета.Экземпляров; //КонецЕсли; //ЭтаФорма["Таб" + Сч].КоличествоЭкземпляров = ЭтаФорма["Копии" + Сч]; КонецПопытки; //МКон ИменаТабДокументов.Добавить(Сч, СтрМакета.СинонимМакета); Если НЕ ПустаяСтрока(СтрМакета.ПолныйПутьКМакету) Тогда МакетыПечатныхФорм.Добавить(СтрМакета.ПолныйПутьКМакету); КонецЕсли; //КонецЕсли; КонецЦикла; не могу я пока совладать с УФ формами)) |
|||
1
байт
08.06.15
✎
08:12
|
подниму )
|
|||
2
байт
08.06.15
✎
08:24
|
хотел просто для теста чтобы появились хотя бы закладки, но он и их не выводит что делаю не так?
НовГруппа = Элементы.Добавить("Группа" + Сч,Тип("ГруппаФормы"),Элементы.Страницы); НовПоле = Элементы.Добавить("Таб" + Сч,Тип("ПолеФормы"),НовГруппа); НовПоле.Вид = ВидПоляФормы.ПолеТабличногоДокумента; Элементы["Группа" + Сч].Заголовок = СтрМакета.СинонимМакета; |
|||
3
butterbean
08.06.15
✎
08:26
|
(0) УФ не показывает пустые элементы, т.е. группы без вложенных элементов, элементы не привязанные к данным и т.п.
у тебя поле формы не связано с данными, поэтому ничего нет |
|||
4
байт
08.06.15
✎
08:27
|
(3) хорошо как связать?
|
|||
5
SeraFim
08.06.15
✎
08:27
|
А вид группы разве не надо задавать?
Что-то типа: НовГруппа.Вид = ВидГруппыФормы.Страница; |
|||
6
байт
08.06.15
✎
08:29
|
(5) добавил не помогло.
|
|||
7
YurAnt
08.06.15
✎
08:29
|
Могу ошибаться... но как насчет Выполнить(Код) ?
рисуешь в макете строку, формируешь динамически столько раз сколько нужно "они размещаются постранично на форму их может быть 10, 15 и т.д," пихаешь всё в "Код" исполняешь, выводишь |
|||
8
YurAnt
08.06.15
✎
08:30
|
самый простой вариант - взглянуть как это реализовано в типовых варинатах
|
|||
9
байт
08.06.15
✎
08:36
|
(7) не вкурил???
|
|||
10
байт
08.06.15
✎
08:37
|
у меня уже сформированы табличные документы их осталось только вывести на эту Управляемую форму??
|
|||
11
DmitrO
08.06.15
✎
08:49
|
Поле формы на УФ никогда не отобразится пока не задашь путь к данным:
НовПоле.ПутьКДанным = ... |
|||
12
YurAnt
08.06.15
✎
08:54
|
посмотри в гугле "программно добавить элемент формы" 2я ссылка
там про кнопку и поле ввода, но суть надо полагать одна и та же |
|||
13
байт
08.06.15
✎
09:07
|
(11) да ты прав, подсунул туда таб10, теперь как туда запихнуть мою таблицу, в данном случае я сослался на реквизит формы попытался присваивать значение в цикле к реквизиту не взлетело?
НовГруппа = Элементы.Добавить("Группа" + Сч,Тип("ГруппаФормы"),Элементы.Страницы); НовГруппа.Вид = ВидГруппыФормы.Страница; НовГруппа.Заголовок = СокрЛП(СтрМакета.СинонимМакета); НовПоле = Элементы.Добавить("Таб" + Сч,Тип("ПолеФормы"),НовГруппа); НовПоле.Вид = ВидПоляФормы.ПолеТабличногоДокумента; Таб10 = СтрМакета.ТабличныйДокумент; НовПоле.ПутьКДанным ="Таб10"; |
|||
14
SeraFim
08.06.15
✎
09:08
|
Нужно создавать реквизиты формы =)
|
|||
15
DmitrO
08.06.15
✎
09:11
|
(14) ну не обязательно создавать, может он уже есть )
|
|||
16
байт
08.06.15
✎
09:12
|
(14)реквизит = Новый РеквизитФормы так чтоли?
|
|||
17
DmitrO
08.06.15
✎
09:14
|
(16)или, например так:
НовПоле.ПутьКДанным ="СписокЗначенийСЭмыкселинами[0].Значение"; |
|||
18
байт
08.06.15
✎
09:15
|
(15) на форме есть 10 реквизитов Таб1, Таб2,....,(тип ТабличныйДокумент) я просто хочу взять любой из них присвоить туда макет и вывести как выше но не взлетело.
|
|||
19
SeraFim
08.06.15
✎
09:43
|
"Динамическое программное добавление табличного документа на УФ." <> "на форме есть 10 реквизитов Таб1, Таб2,....,(тип ТабличныйДокумент)"
Или 1. у тебя 10 реквизитов Таб1, Таб2... и 10 страниц с уже созданными полями табличного документов. Тогда просто загружаешь данные в Таб1, Таб2... и не паришься. Но 11-ый ТабДок ты уже не выведешь. Или 2. У тебя нету ни реквизитов, ни страниц с полями табличного документов. Тогда ты каждый раз программно создаешь реквизиты Таб1, Таб2... и создаешь страницы с полями табличного документов. И тогда ты сможешь выводить сколько угодно ТабДоков. |
|||
20
байт
08.06.15
✎
09:45
|
(18) а совместить эти варианты разве нельзя?
|
|||
21
SeraFim
08.06.15
✎
09:46
|
а все... Дошло. У тебя 10 реквизитов, но страниц с полями табличного документов у тебя нет.
|
|||
22
байт
08.06.15
✎
09:48
|
(21) есть нарисованные 10 страниц и 10 табДоков к ней, в случае если не хватает создаю программно и вывожу.
|
|||
23
байт
08.06.15
✎
09:56
|
(17) делаю так выводит просто имя табличныйДокумент вместо макета что делаю не так?
НовГруппа = Элементы.Добавить("Группа" + Сч,Тип("ГруппаФормы"),Элементы.Страницы); НовГруппа.Вид = ВидГруппыФормы.Страница; НовГруппа.Заголовок = СокрЛП(СтрМакета.СинонимМакета); НовПоле = Элементы.Добавить("Таб" + Сч,Тип("ПолеФормы"),НовГруппа); НовПоле.Вид = ВидПоляФормы.ПолеТабличногоДокумента; НовПоле.ПутьКДанным ="ИменаТабДокументов["+СокрЛП(сч-1)+"].Значение"; |
|||
24
байт
08.06.15
✎
09:57
|
Хотя в отладке табличный документ.
|
|||
25
байт
08.06.15
✎
10:42
|
реквизит = Новый РеквизитФормы("Таб" + Сч,новый ОписаниеТипов("ТабличныйДокумент"));
//реквизит.СохраняемыеДанные НовГруппа = Элементы.Добавить("Группа" + Сч,Тип("ГруппаФормы"),Элементы.Страницы); НовГруппа.Вид = ВидГруппыФормы.Страница; НовГруппа.Заголовок = СокрЛП(СтрМакета.СинонимМакета); НовПоле = Элементы.Добавить("Таб" + Сч,Тип("ПолеФормы"),НовГруппа); НовПоле.Вид = ВидПоляФормы.ПолеТабличногоДокумента; НовПоле.ПутьКДанным = "Таб" + Сч; вываливается ошибка {ОбщаяФорма.ПечатьДокументов.Форма(90)}: Ошибка при установке значения атрибута контекста (ПутьКДанным) НовПоле.ПутьКДанным = "Таб" + Сч; по причине: Недопустимое значение Недопустимое значение |
|||
26
байт
08.06.15
✎
10:43
|
реквизит создается.
|
|||
27
байт
08.06.15
✎
10:59
|
Честно говоря до конца не пойму программное создание реквизита как это вообще работает?
|
|||
28
DmitrO
08.06.15
✎
11:03
|
(25)это потому что сначала надо вызвать у формы ИзменитьРеквизиты(), а потом уже назначать путь полям формы.
|
|||
29
байт
08.06.15
✎
11:19
|
(28) спасибо очень помог)))
|
|||
30
байт
08.06.15
✎
11:23
|
вот Итог работающего кода может кому пригодится, @DmitroO еще раз спасибо:
ИменаТабДокументов.Добавить(СтрМакета.ТабличныйДокумент,СтрМакета.СинонимМакета); Попытка ЭтаФорма["Таб" + Сч] = СтрМакета.ТабличныйДокумент; Элементы["Группа" + Сч].Видимость = Истина; Элементы["Группа" + Сч].Заголовок = СтрМакета.СинонимМакета; Элементы["Копии" + Сч].Видимость = Истина; Элементы["Копии" + Сч].Заголовок = СтрМакета.СинонимМакета; Если Сч <= КоличествоКопийДляПечати.Количество() Тогда ЭтаФорма["Копии" + Сч] = КоличествоКопийДляПечати[Сч-1]; Иначе ЭтаФорма["Копии" + Сч] = СтрМакета.Экземпляров; КонецЕсли; ЭтаФорма["Таб" + Сч].КоличествоЭкземпляров = ЭтаФорма["Копии" + Сч]; Исключение реквизит = Новый РеквизитФормы("Таб" + Сч,новый ОписаниеТипов("ТабличныйДокумент")); МассивРекв = Новый Массив; МассивРекв.Добавить(реквизит); ЭтаФорма.ИзменитьРеквизиты(МассивРекв); НовГруппа = Элементы.Добавить("Группа" + Сч,Тип("ГруппаФормы"),Элементы.Страницы); НовГруппа.Вид = ВидГруппыФормы.Страница; НовГруппа.Заголовок = СокрЛП(СтрМакета.СинонимМакета); НовПоле = Элементы.Добавить("Таб" + Сч,Тип("ПолеФормы"),НовГруппа); НовПоле.Вид = ВидПоляФормы.ПолеТабличногоДокумента; НовПоле.ПутьКДанным = "Таб" + Сч; ЭтаФорма["Таб" + Сч] = СтрМакета.ТабличныйДокумент; КонецПопытки; //МКон |
|||
31
байт
08.06.15
✎
11:26
|
кстати что перед ником поставить чтобы он выделился что-то забыл?))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |