Имя: Пароль:
1C
1С v8
как программно добавлять строки(колонки) в таблицуЗначений?
0 altaykniga
 
13.05.15
18:50
Привет всем, уважаемые. Прошу помочь. Управляемые формы.

Есть реквизит формы ТаблицаЗначений. Колонок у нее нет, будут добавляться программно в зависимости от типа добавляемых данных.

В процедуре формы получаю ТЗзапроса = Запрос.выполнить().выгрузить().

Как теперь мне ТЗзапроса запихать в таблицу значений формы (реквизит формы)?
1 Лодырь
 
13.05.15
18:51
Формы управляемые?
2 1976vas
 
13.05.15
18:57
(1) Да
3 Лодырь
 
13.05.15
19:05
(2) Не узнаю вас в гриме.
ЗначениеВРеквизитФормы или долго и нудно добавлять построчно.
4 1976vas
 
13.05.15
19:07
(3) Это не ТС, просто внимательно прочитал (0) "Привет всем, уважаемые. Прошу помочь. Управляемые формы. " )
5 Лодырь
 
13.05.15
19:08
(4) Ну вы батенька даете! надо же, внимательно читать то, что пишет топикстартер! Так и до чтения документации недалеко )
6 1976vas
 
13.05.15
19:10
(5) И не лодырничать )
7 altaykniga
 
13.05.15
19:12
(3) Сделал так:
ЗначениеВРеквизитФормы(ТЗзапроса, "ТаблицаЗначенийФормы");
В итоге на форме ничего не отображается... или отображается пустая таблица значений, без колонок и строк
8 Drac0
 
13.05.15
19:13
Код условный. Поудалл наспех лишнее:


Процедура ДобавитьКолонки(ТабЗначений, ТаблицаФормы)
        
    НужныйТип     = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,0));
    СтарыеКолонки = Новый Массив;
    НовыеКолонки  = Новый Массив;
    ЖирныйШрифт   = Новый Шрифт(,,Истина);
    
    ТекРеквизитыФормы = ПолучитьРеквизиты(ТаблицаФормы);
    Для каждого ТекРеквизит из ТекРеквизитыФормы Цикл
        Если Лев(ТекРеквизит.Имя, 1) = "_" Тогда
            СтарыеКолонки.Добавить(ТаблицаФормы+"."+ТекРеквизит.Имя);    
        КонецЕсли;    
    КонецЦикла;
    
    ОснГруппаЭлемент = Элементы.грПрограммныйхКОлонок;
    ШиринаКолонки    = 3;
    ПрефиксРек         = "_Рек_";

    
    ТекКуб        = "";
    ТекНом        = 1;
    
    Для Каждого Стр Из ТабЗначений Цикл    
        ИмяРеквизита    = ПрефиксФМ+ТекНомФормата;
        НовыйРеквизитТЧ = Новый РеквизитФормы(ИмяРеквизита, НужныйТип, ТаблицаФормы,, Истина);
        НовыеКолонки.Добавить(НовыйРеквизитТЧ);
    
        ТекНом = ТекНом+1;
    КонецЦикла;
              
    Пока ОснГруппаЭлемент.ПодчиненныеЭлементы.Количество()>0 цикл
        Элементы.Удалить(ОснГруппаЭлемент.ПодчиненныеЭлементы[0]);
    КонецЦикла;
        
    ИзменитьРеквизиты(НовыеКолонки,СтарыеКолонки);

    ТекНом = 1;
    Для Каждого Стр Из Таб Цикл
        ИмяРеквизитаРП   = Стр.ИмяКолонки;    

                                 
        ТекЭлемент = Элементы.Добавить(ИмяРеквизитаРП, Тип("ПолеФормы"),ТекГруппа);
        ТекЭлемент.Вид                     = ВидПоляФормы.ПолеВвода;
        ТекЭлемент.ГоризонтальноеПоложение          = ГоризонтальноеПоложениеЭлемента.Право;
        ТекЭлемент.РастягиватьПоГоризонтали         = Ложь;
        ТекЭлемент.БыстрыйВыбор                     = Истина;
        ТекЭлемент.ТолькоПросмотр                 = Истина;
        ТекЭлемент.ОтображатьВШапке                 = Ложь;
        ТекЭлемент.Заголовок                     = "";
        ТекЭлемент.Шрифт                         = ЖирныйШрифт;
        ТекЭлемент.Ширина                           = ШиринаКолонки;
        ТекЭлемент.ОтображатьВПодвале             = Ложь;
        ТекЭлемент.ПутьКДанным                        = ТаблицаФормы +"."+ИмяРеквизитаРП;
        ТекНом = ТекНом+1;
    КонецЦикла;
    
КонецПроцедуры
9 Лодырь
 
13.05.15
19:13
(7) Так вам на форме отображается или залить данные в таблицу - реквизит формы? Это знаете ли, разные задачи.
10 Drac0
 
13.05.15
19:15
(8) суть простая: сначала создаешь реквизиты формы программно, потом создаешь элементы формы по ним. Можно еще условное оформление создавать по желанию.
11 altaykniga
 
14.05.15
17:19
(9) вообще мне нужно отобразить на форме полученную ТЗзапроса, затем пользователь выберет нужную строку и программа начнет обрабатывать введенные пользователем данные дальше
12 altaykniga
 
14.05.15
17:20
(11) я полагал, чтобы отобразить на форме таблицу значений с некоторыми данными, то сначала эти данные (ТЗзапроса) нужно залить в таблицуЗначений-реквизит формы.
13 Drac0
 
14.05.15
17:21
(12) Тебе уже пример дал, чего не хватает для реализации?
14 altaykniga
 
14.05.15
18:00
(12)
ТЗзапроса = Запрос.Выполнить().Выгрузить(); тут одна колонка ФизЛицо.

    НужныйТип     = Новый ОписаниеТипов("СправочникСсылка.ФизическиеЛица");
    НовыеКолонки = Новый Массив;

    НовыйРеквизитТЧ = Новый РеквизитФормы("ФизЛицо", НужныйТип, ТаблицаЗначенийФормы,, Истина);
    НовыеКолонки.Добавить(НовыйРеквизитТЧ);    

ИзменитьРеквизиты(НовыеКолонки);

после этого кода выходит ошибка:
Ошибка при вызове метода контекста (ИзменитьРеквизиты)
    ИзменитьРеквизиты(НовыеКолонки);
по причине:
Недопустимый путь к реквизиту. Путь: "ДанныеФормыКоллекция"
15 Гёдза
 
14.05.15
18:01
ТаблицаЗначенийФормы -  в кавычках нужно
16 altaykniga
 
14.05.15
18:06
(15). исправил. Теперь создается на форме новый реквизит с заголовком "ФизЛицо", тип = "ПолеВвода". А мне нужно в реквизит формы "ТаблицаЗначенийФормы" добавить новый реквизит(колонку) "ФизЛицо", заполнить ее значениями из строк ТЗзапроса и отобразить на форме
17 Drac0
 
14.05.15
18:13
(16) значит, где то ошибка. В моем примере происходит именно создание колонок таблицы.
18 altaykniga
 
14.05.15
19:23
делаю так:
ТЗзапроса = Запрос.Выполнить().Выгрузить();
ЗначениеВРеквизитФормы(ТЗЗапроса , "ТаблицаЗначенийФормы");

после этого ТаблицаЗначенийФормы.Количепство()=4, т.е. из ТЗЗапроса данные загрузились вроде как... Осталось как-то к этим данным обратиться и вывести их на форму. Как?
19 altaykniga
 
14.05.15
20:20
таблицу значений на форму вывел. А как ее вывести не после всех элементов, а в определенную группу на форме?
20 hhhh
 
14.05.15
20:42
(19) если одна колонка, то тупо ее создать у реквизита, не программно.
21 altaykniga
 
14.05.15
20:44
(20) колонок будет несколько
22 hhhh
 
14.05.15
20:46
если имена заранее известны, тупо все создайте и не парьтесь.
23 altaykniga
 
14.05.15
20:50
(22) не известны имена заранее
24 Drac0
 
14.05.15
21:15
(19) саму таблицу размести на форме заранее. К новым реквизитам создавай элементы формы в этом элементе таблицы.