Имя: Пароль:
1C
 
Не работает РеквизитФормыВЗначение/ЗначениеВРеквизитФормы ? Колонки ТаблицыЗначений
0 klimbna
 
26.12.17
10:03
Приветствую!
Необходимо использовать ТаблицуЗначений во внешней обработке.
Для этого в Реквизитах обработки завожу реквизит "ТаблицаИзДокумента"
В модуле формы:
//Создаю колонку и записываю одну строку
&НаСервере
Процедура СоздатьТаблицу()
ТаблицаИД = РеквизитФормыВЗначение("Объект.ТаблицаИзДокумента");
ТаблицаИД.Колонки.Добавить("ЧасыЯ1");
СтрокаТИД=ТаблицаИД.Добавить();    
    СтрокаТИД.ЧасыЯ1=8;
    ЗначениеВРеквизитФормы(ТаблицаИД, "Объект.ТаблицаИзДокумента");

//-/Проверяю хранение объекта
&НаСервере
Функция    ПроверитСуществование()
    ТаблицаИД = РеквизитФормыВЗначение("Объект.ТаблицаИзДокумента");
Сообщить("Заполнил "+ТипЗнч(ТаблицаИД)+" колонок "+ТаблицаИД.Колонки.Количество()+" строк "+ТаблицаИД.Количество());    
    Сообщить("Значение "+ТаблицаИД[0].ЧасыЯ1);
КонецФункции

Функция возвращает: Заполнил Таблица значений колонок 0 строк 1
Поле объекта не обнаружено ЧасыЯ1
Получается строки в таблице можно создать - а колонки нет?
У Объект.ТаблицаИзДокумента нет "свойства" Колонки.
Как тогда создать Колонки реквизита Объекта с типом ТаблицаЗначений?

p.s. платформа 8.3.10.2561 Управляемая Форма
1 Buster007
 
26.12.17
10:07
потому что надо создавать колонки реквизита формы, а не таблицы значений
2 Рэйв
 
26.12.17
10:25
(0)>Получается строки в таблице можно создать - а колонки нет?

В реквизите формы ТЗ ты при создании вроде должен добавить фиксированное количество колонок с которыми будешь работать
3 klimbna
 
26.12.17
10:57
(1) Не могу найти как программно создать. И на клиенте?
Элементы.ТабличнаяЧастьТест.Колонки - не на клиенте не на сервере не работает...
4 klimbna
 
26.12.17
11:29
(3) Нашел пример
&НаСервере
Процедура СформироватьКолонкиТаблицы(ТаблицаРезультат)
    // Удалим колонки таблицы перед обновление
    Таблица = РеквизитФормыВЗначение("ДанныеТаблицы");
    МассивРеквизитов = Новый Массив;

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

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

Вопрос можно считать закрытым