Имя: Пароль:
1C
1С v8
УФ. Как загрузить таблицу значений в реквизит формы с типом таблица значений?
,
0 мистер игрек
 
12.04.13
14:05
Есть у отчета реквизит формы с типом "ТбалицаЗначений". Его надо заполнит данными из таблицы значений и отображат в управляемой форме.
Как можно?
1 scanduta
 
12.04.13
14:07
На сервер передать и там заполнить ...Не?
2 scanduta
 
12.04.13
14:08
И обновить отображение данных
3 мистер игрек
 
12.04.13
14:09
(1) Так заполнил

ЗначениеВРеквизитФормы(ТЗ,"СписокДокументов");


но как обновить? у реквизита нету колонок, он должен создавать колонки из таблицы значений
4 scanduta
 
12.04.13
14:14
ОбновитьОтображениеДанных() на клиенте
5 НЕА123
 
12.04.13
14:15
(3)
как-то так.

   
       ОписаниеТиповЧислоСтрока0 = Новый ОписаниеТипов("Строка, Число, Дата, NULL",
                                              Новый КвалификаторыЧисла(64, 32, ДопустимыйЗнак.Любой),
                                              Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная));

   
   Массив = Новый Массив;
   
   МассивУдаляемыхКолонокТЗ = Новый Массив;
   
   Для Каждого Эл Из Элементы.ТЗ1.ПодчиненныеЭлементы Цикл
       МассивУдаляемыхКолонокТЗ.Добавить(Эл);
   КонецЦикла;
   
   Для Каждого Эл Из МассивУдаляемыхКолонокТЗ Цикл
       Элементы.Удалить(Эл);
   КонецЦикла;
   
   Для Каждого Колонка Из ТЗ.Колонки Цикл
       Массив.Добавить(Новый РеквизитФормы(Колонка.Имя, ОписаниеТиповЧислоСтрока0,"ТЗ1"));
   КонецЦикла;
   
   
   МассивУд = Новый Массив;
   Для Каждого Реквизит Из ПолучитьРеквизиты("ТЗ1") Цикл
       МассивУд.Добавить(Реквизит.Путь + "." + Реквизит.Имя);
   КонецЦикла;    
   ИзменитьРеквизиты(Массив, МассивУд);
   
   Для Каждого Реквизит Из Массив Цикл
       Эл = Элементы.Добавить(Реквизит.Имя, Тип("ПолеФормы"), Элементы.ТЗ1);
       Эл.вид = ВидПоляФормы.ПолеВвода;
       Эл.доступныеТипы = Новый ОписаниеТипов(Колонка.ТипЗначения);
       Эл.ПутьКДанным = "ТЗ1."+Эл.Имя;
       Эл.Формат = "ЧГ=0";
   КонецЦикла;
   
   ЗначениеВРеквизитФормы(ТЗ,  "ТЗ1");
6 sanja26
 
12.04.13
14:18
создай колонки
7 SherifSP
 
12.04.13
14:19
Скопировать не предлагать?
8 SherifSP
 
12.04.13
14:20
Процедура КнопкаВыполнитьНажатие(Кнопка)
   
   ТЗ = ЗаполнитьТЗ().Скопировать();

КонецПроцедуры

Функция ЗаполнитьТЗ()
   
   ТекстЗапроса = "ВЫБРАТЬ
                  |    ЗаказПокупателя.Дата,
                  |    ЗаказПокупателя.Ссылка КАК Документ
                  |ИЗ
                  |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
                  |ГДЕ
                  |    ЗаказПокупателя.Дата МЕЖДУ &ДатаНач И &ДатаКон
                  |    И ЗаказПокупателя.ПометкаУдаления = ЛОЖЬ";
                 
   Запрос = Новый Запрос;
   Запрос.Текст = ТекстЗапроса;
   Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
   Запрос.УстановитьПараметр("ДатаКон",ДатаКон);
   Возврат Запрос.Выполнить().Выгрузить();
   
КонецФункции
9 мистер игрек
 
12.04.13
14:25
(8) а ТЗ что такое?
10 Любопытная
 
12.04.13
14:26
ТаблицаЗначений
11 мистер игрек
 
12.04.13
14:27
(10) ээээййй,  ни нада нини :)
12 мистер игрек
 
12.04.13
14:30
(8)

{Форма.Форма.Форма(76)}: Ошибка при установке значения атрибута контекста (СписокДокументов)
   СписокДокументов = ФормироватьСписокДокументов().Скопировать();
по причине:
Нельзя изменять поле, содержащее объект данных формы
13 Любопытная
 
12.04.13
14:37
Традиционно.
Что такое СписокДокументов? Это ДанныеФормыКоллекция, а не ТаблицаЗначений
14 мистер игрек
 
12.04.13
14:39
и что можно делать?
15 Любопытная
 
12.04.13
14:40
Можно сделать СписокДокументов.Загрузить(ФормироватьСписокДокументов())
16 Любопытная
 
12.04.13
14:40
только на сервере