Имя: Пароль:
1C
1С v8
Как загрузить таблицу значений в реквизит формы с типом таблица значений ?
0 budnik
 
14.08.13
16:31
Выполняем разные запросы и грузим их  таблицу значений
Проблема в том ,таблица загружаемая меняет структуру и
надо очистить таблицу в которую загружаем перед следущей
загрузкой.

&НаСервере
Процедура ЗагрузкаТЗвТП(ИмяТП,ТЗ)
    
    МассивУдоляемыхРеквизитов = Новый Массив;
    Для Каждого Колонка Из ПолучитьРеквизиты(ИмяТП) Цикл
        Если Колонка.Имя="П" Тогда
        Иначе
           МассивУдоляемыхРеквизитов.Добавить(ИмяТП+"."+Колонка.Имя);    
        КонецЕсли;
    КонецЦикла;
    ИзменитьРеквизиты(,МассивУдоляемыхРеквизитов);
    
    
    
    
    МассивДобавляемыхРеквизитов = Новый Массив;
    
    Для Каждого Колонка Из ТЗ.Колонки Цикл
        РеквизитФормы = Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, ИмяТП, Колонка.Имя);
        МассивДобавляемыхРеквизитов.Добавить(РеквизитФормы);
    КонецЦикла;
    
    // пакетное создание и удаление колонок в РЕКВИЗИТЕ ФОРМЫ "ДанныеТаблицы" (тип Таблица Значений)
    ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
    
    // создаем элементы  
    Для Каждого Колонка Из ТЗ.Колонки Цикл
        Элемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), Элементы[ИмяТП]);
        Элемент.Вид = ВидПоляФормы.ПолеВвода;
        Элемент.ПутьКДанным = ИмяТП+"." + Колонка.Имя;
    КонецЦикла;
    ЭтаФорма[ИмяТП].Загрузить(ТЗ);
    

КонецПроцедуры
1 almar
 
14.08.13
16:35
Ничего не понял, есть же ЗначениеВРеквизитФормы
2 ПТР
 
14.08.13
19:35
(0) Все примерно так, но последняя строка от лукавого.
Ближе к истине: Форма.ЗначениеВРеквизитФормы(ТЗ,ИмяРеквизитаФормы)
3 budnik
 
19.08.13
11:07
(2)
ЭтаФорма[ИмяТП].Загрузить(ТЗ); работает при первой загрузке
ЭтаФорма.ЗначениеВРеквизитФормы(ТЗ,ИмяТП); не работает.
4 Defender aka LINN
 
19.08.13
11:08
(0) У метода "ИзменитьРеквизиты" ДВА параметра, есличо
5 olegves
 
19.08.13
11:15
(0) а разве не быстрее обход результата запроса в цикле и заполнение Таблицы на форме?
6 budnik
 
19.08.13
11:32
(5) со скоростью нет проблем.
Второй раз заполнить табличное поле заполнить не могу.
7 budnik
 
19.08.13
11:36
(5)При повторной загрузке

Ошибка при вызове метода контекста (Добавить)
Элемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), Элементы[ИмяТП]);
по причине:
Недопустимое значение параметров

Ответить «« Действия
8 Defender aka LINN
 
19.08.13
11:45
(6) А удалять добавленное в первый раз кто будет?
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.