Имя: Пароль:
1C
1С v8
Управляемая форма. Нет данных реквизита.
,
0 kiabs
 
11.02.14
14:09
Есть обработка, у обработки реквизит - таблица значений.
На управляемой форме размещаю элемент формы (ПутьКДанным = Объект.МояТаблица). При нажатии кнопки на форме процедура обращается к процедуре модуля обработки где циклом происходит заполнение Реквизита МояТаблица. Смотрю под отладчиком, он заполнен как мне надо, но элемент формы пустой!! Тоесть под отладчиком я вижу, что в Объект.МояТаблица содержит значения, а на форме ничего не отображается. Как побороть? PS^ только начал осваивать УФ.
1 kiabs
 
11.02.14
14:20
Такою ощущение, что реквизит формы и реквизит объекта живут отдельно.
2 Maxus43
 
11.02.14
14:22
без кода тут не понять
3 GROOVY
 
11.02.14
14:23
Колонки надо программно нарисовать.
4 kiabs
 
11.02.14
14:24
Модуль формы

&НаКлиенте
Процедура НачатьЗаполнениеАнкеты(Команда)
    ПолучитьВопросыАнкеты();  
КонецПроцедуры

&НаСервере
Процедура ПолучитьВопросыАнкеты()
    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    ОбработкаОбъект.ПолучитьВопросы();    
КонецПроцедуры
5 GROOVY
 
11.02.14
14:24
И "сформироватьКолонки()" тут не прокатит.
6 andreymongol82
 
11.02.14
14:24
(1) Совершенно верно.
Надо в УФ сделать что-то вроде

МойОБъект = РеквизитФормыВЗначение("Объект","ТутТип")
ТЗ = мойОбъект.СформироватьЧтоТОТам()
ЗначениеВРеквизитФормы(ля-ля-ля)
7 GROOVY
 
11.02.14
14:24
(4) Нафига тут конвертация данных формы?
8 kiabs
 
11.02.14
14:24
модуль объекта

Вопросы.Очистить();
    Пока Выборка.Следующий() Цикл
        нСтр = Вопросы.Добавить();
        нСтр.Вопрос = Выборка.Вопрос;
    КонецЦикла;
9 kiabs
 
11.02.14
14:25
(7) Что бы обратится к экспортной процедуре объекта.
10 Maxus43
 
11.02.14
14:25
(8) динамический список не катит? надо именно свою левую ТЗ?
11 kiabs
 
11.02.14
14:26
(10) Именно ее, там долбанутые запрос от сторонних разработчиков.
12 GROOVY
 
11.02.14
14:26
(9) А зачем это в модуле объекта описывать? Хотя, ладно. Вам нужно колонки нарисовать...
13 kiabs
 
11.02.14
14:27
(12) Так колонки уже сами обавились, когда я реквизит объекта на форму перетащил.
14 GROOVY
 
11.02.14
14:31
(13) А с данными они как-то связаны?
15 kiabs
 
11.02.14
14:32
(14) Да, путьКданным указан правильно.
16 andreymongol82
 
11.02.14
14:33
(13) Да елки...
Модульную процедуру переделываем в функцию. Возвращаем ТЗ. ТЗ Загружаем или вообще значениеВРеквизитФормы, если колонки совпадают.
17 kiabs
 
11.02.14
14:35
(6)(16) Спасибо!!! Взлетело!

ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
ОбработкаОбъект.ПолучитьВопросы();    
ЗначениеВРеквизитФормы(ОбработкаОбъект.Вопросы, Объект.Вопросы");
18 kiabs
 
11.02.14
14:35
Опечатка

ЗначениеВРеквизитФормы(ОбработкаОбъект.Вопросы, "Объект.Вопросы");
19 andreymongol82
 
11.02.14
14:36
(17) Ну или так. Развели тут ))). Обычная ошибка при начале работы с УФ )))
20 Morales
 
11.02.14
14:56
Или так, уже было на форуме:

// ПРИМЕЧАНИЕ:
//        Эту процедуру можно разместить в общем модуле, для дальнейшего вызова из любого места
//        Для отображения таблицы необходиом чтобы на форме предварительно был создан реквизит типа "таблица значений",
//        и чтобы он был размещен среди элементов формы (по аналогии, как в этой форме)
//
// ОПИСАНИЕ:
//         Создает и отображает на управляемой форме (8.2) таблицу значений, переданную в качестве параметра
//         Дополнительно может подключить обработчики событий для таблицы
//
// ПАРАМЕТРЫ:
//        УФ - управляемая форма, на которую нужно вывести ТЗ
//        ТЗ - таблица значений, которую нужно отобразить на форме
//        ТЗОбработчиковСобытий - таблица со структурой данных, описывающих обработчики событий. Не обязательна.
//        Процедура обработки события должна именоваться как <ИмяЭлемента + ИмяСобытия>
&НаСервере
Процедура ВывестиТаблицуНаФорму(УФ, ИмяТЗНаФорме, Знач ТЗ, ТЗОбработчиковСобытий = Неопределено) Экспорт
    
    // СОЗДАНИЕ РЕКВИЗИТОВ ФОРМЫ

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

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

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