Имя: Пароль:
1C
1С v8
Программное добавление нескольких табличных полей
0 Dmitrith
 
26.11.13
13:43
Совсем уже запутался:

    СписокВкладок = ВернутьСписокВкладок(); // тут у меня получается имена список вкладок формы
    
    Эл = ЭтаФорма.Панель.Страницы;
    ЭтаФорма.Панель.ОтображениеЗакладок = ОтображениеЗакладок.Сверху;
    Для Каждого Стр из СписокВкладок Цикл
        ТаблицаВкладок = ВернутьТЗ_рст(Стр.Значение); // это у меня тз, которая должна вывестись на текущей вкладке. Структура ТЗ может быть разная
        Эл.Добавить(Стр.Значение,Стр.Значение);
        ТабПоле = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"),"тп"+Стр.Значение,Истина,ЭтаФорма.Панель);
        ТабПоле.Лево           = 6;
        ТабПоле.Верх           = 6;
        ТабПоле.Ширина         = 1000;
        ТабПоле.Высота         = 1000;
        //ТабПоле.Данные = ********* что писть сюда??????
    КонецЦикла;
1 vicof
 
26.11.13
13:45
А у тебя табличное поле с данными вообще связано?
2 Ерепень
 
26.11.13
13:45
строку
3 Dmitrith
 
26.11.13
13:46
(1) Вообще не связано
У меня есть ТаблицаЗначений из запроса. мне ее надо вывести. Если не в Данные то куда?
4 Dmitrith
 
26.11.13
13:46
(2) Кэп )
5 dj_serega
 
26.11.13
13:47
В УП элементы отображаются на форме когда они связаны с реквизитами.

v8: Программное создание реквизитов формы
6 vicof
 
26.11.13
13:54
(3) Данные - это связь либо с реквизитом объекта либо с реквизитом формы, которые и хранят твои данные.
7 vicof
 
26.11.13
13:55
Соответственно, создавай реквизиты формы с типом таблицазначений и прописывай их в данные
8 Dmitrith
 
26.11.13
14:14
(5)(6) Эм... Не сказал сразу - это для управляемых форм. А у меня обычная. Насколько я понял необходимо работать через .Значение. Как то так:

        ТабПоле = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"),"тп"+Стр.Значение,Истина,ЭтаФорма.Панель);
        ТабПоле.Лево           = 6;
        ТабПоле.Верх           = 6;
        ТабПоле.Ширина         = 1000;
        ТабПоле.Высота         = 1000;
        //ТабПоле.Данные = "тп"+Стр.Значение;
        ТабПоле.Значение       = ТаблицаВкладок; // данные в Значении нужного мне табличного поля лежат.
        НовКолонка1 = ТабПоле.Колонки.Добавить("Стр1");
        НовКолонка1.Данные = "Стр1"; // т.е. вот сюда пихать еще что-то надо или что?
9 vicof
 
26.11.13
14:20
(8) Капец.Элемент формы - отображает данные. Связанные с ним или не связанные.
Если связанные, тогда ,если ты поменяешь что-нибудь в табличном поле - изменятся данные. Если не связанные - на твои изменения всем пофиг.
10 Dmitrith
 
26.11.13
14:59
Хорошо. Еще раз. Есть Список вкладок обычной формы, есть таблицы значений для каждой вкладки. Данные естественно связать ни с чем не можем. Вот уже исправленный кусок. По идее все должно работать. Колонки в ТабличноеПоле копируются. Строки нет. Почему?
    СписокВкладок = ВернутьСписокВкладок();
    Эл = ЭтаФорма.Панель.Страницы;
    ЭтаФорма.Панель.ОтображениеЗакладок = ОтображениеЗакладок.Сверху;
    Для Каждого Стр из СписокВкладок Цикл
        Эл.Добавить(Стр.Значение,Стр.Значение);
        ТабПоле = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"),"тп"+Стр.Значение,Истина,ЭтаФорма.Панель);
        ТабПоле.Лево           = 6;
        ТабПоле.Верх           = 6;
        ТабПоле.Ширина         = 1000;
        ТабТекВкладки = ВернутьТЗ_рст(Стр.Значение);
        ТабПоле.Значение = ТабТекВкладки;
        ЭлементыФормы["тп"+Стр.Значение].СоздатьКолонки();

    КонецЦикла;
11 mzelensky
 
26.11.13
15:03
(0) а собственно вопрос - зачем так изголяться и динамически создавать элементы??? От чего зависит их количество?
12 Dmitrith
 
26.11.13
15:04
(11) оно того стоит )
13 mzelensky
 
26.11.13
15:10
(12) Хорошее обоснование :)
14 mzelensky
 
26.11.13
15:11
(10) "Колонки в ТабличноеПоле копируются. Строки нет. Почему?"

ТЫ о какой "строке" вообще говоришь?
15 mzelensky
 
26.11.13
15:13
(14) Если ты про это:

ТабТекВкладки = ВернутьТЗ_рст(Стр.Значение);
ТабПоле.Значение = ТабТекВкладки;

И "ТабТекВкладки" - это таблица значений, то хочу тебя огорчить, так ТЗ не передается. Так передается ССЫЛКА на ТЗ. Именно поэтмоу у ТЗ есть метод "Скопировать"
16 Dmitrith
 
26.11.13
15:23
(14) Строки табличной части из ТабТекВкладки
(15)
        ТабТекВкладки = ВернутьТЗ_рст(Стр.Значение);
        ТабПоле.Значение = ТабТекВкладки.Скопировать();
        ЭлементыФормы["тп"+Стр.Значение].СоздатьКолонки();

Тот же результат:
http://clip2net.com/s/6fUGNW
Создаются на всех вкладках ТабличныеПоля, но не заполняются данные. Хотя в ТабПоле.Значение лежит корректная таблицаЗначений:
http://clip2net.com/s/6fUNa0
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн