Имя: Пароль:
1C
1С v8
Вопрос по управляемой форме
0 Маленький Вопросик
 
05.07.12
13:36
не могу разместить на управляемой форме реквизит формы (таблица значений), которая не содержит колонок...

это правильно???

цель: хочу на управляемой форме автоматически формировать колонки в таблице значений.
1 izekia
 
05.07.12
13:36
(0) она размещается, просто ее не видно
2 Маленький Вопросик
 
05.07.12
13:37
(1) да, не видно
3 izekia
 
05.07.12
13:37
+ проблема в том, что если ты после формирования на сервере будешь колонки формировать, то это будет затратно
4 ОбычныйЧеловек
 
05.07.12
13:37
(0) Создай любую колонку, потом программно создашь какие те нужно, какие не нужно уберешь... Маразм конечно, но вот такая реализация...
5 izekia
 
05.07.12
13:40
(4) форма разве пересобираться не будет?
6 ОбычныйЧеловек
 
05.07.12
13:40
(5) Не понял вопроса...
7 Маленький Вопросик
 
05.07.12
13:42
щас поясню что я хочу сделать:

http://infostart.ru/public/89298/ - писал я такую штуку когда-то

вот хочу теперь ее на управляемую форму перевести.... пока не получается
8 Маленький Вопросик
 
05.07.12
14:13
нуууу
9 punkforever
 
05.07.12
14:27
(0)Можно создать программно реквизит формы, затем элемент формы.
10 Маленький Вопросик
 
05.07.12
14:30
короче надо мне почитать... много вопросов....
11 ОбычныйЧеловек
 
05.07.12
14:33
(10) ТЗ на форме со своими колонками в упр.форме создавать ужасно неудобно.
12 RomaH
 
naïve
05.07.12
14:35
(11) почему?
13 Маленький Вопросик
 
05.07.12
14:36
(11) неудобно или невозможно? примерчик бы...
14 Goggy
 
05.07.12
14:38
да все просто. делаешь ТЗ и динамический список. вот тебе и своя табличка
15 Маленький Вопросик
 
05.07.12
14:38
Функция DBFвТаблицу(ПутьКDBF, Кодировка)   //вер.2.0
   
   ТаблицаДанных = Новый ТаблицаЗначений();
   ФайлDBF=Новый XBase;
   ФайлDBF.ОткрытьФайл(ПутьКDBF,,Истина);
 
   Если Кодировка = "ANSI" Тогда
       ФайлDBF.Кодировка = КодировкаXBase.ANSI;
   Иначе
       ФайлDBF.Кодировка = КодировкаXBase.OEM;
   КонецЕсли;    
   
   НомерКолонки=0;
   
   Для Каждого ПолеDBF Из ФайлDBF.Поля Цикл
       НомерКолонки=НомерКолонки+1;
       ТаблицаДанных.Колонки.Добавить(ПолеDBF.Имя,,ПолеDBF.Имя);
   КонецЦикла;
   
   ФайлDBF.Первая();
   Пока НЕ ФайлDBF.ВКонце() Цикл
       НоваяСтрока=ТаблицаДанных.Добавить();
           ЗаполнитьЗначенияСвойств(НоваяСтрока,ФайлDBF);
       ФайлDBF.Следующая();
   КонецЦикла;        
   ФайлDBF.ЗакрытьФайл();

   Возврат ТаблицаДанных;
   
КонецФункции


вот так сделано у меня
16 RomaH
 
naïve
05.07.12
14:39
МНР = Новый Массив
НРТ = Новый РеквизитФормы()
МНР.Добавить(НРТ)
ИзменитьРеквизиты(МНР)

НП = ЭлементыДобавить()
НП.ПутьКДанным =

...
17 Goggy
 
05.07.12
14:40
вот теперь запросом из этой ТЗ в динамический список на форму пуляй
18 RomaH
 
naïve
05.07.12
14:40
(14) а поподробнее?
19 RomaH
 
naïve
05.07.12
14:41
Запрос из тз как бы понятно, но как его в дин список засунть?
20 Goggy
 
05.07.12
14:42
(19) создаёшь дин. список -> открываешь свойства -> "Произвольный запрос" -> рисуешь запрос
21 Goggy
 
05.07.12
14:43
+(20) параметр не забудь установить :)
22 ОбычныйЧеловек
 
05.07.12
14:46
(13) Именно неудобно...
23 ОбычныйЧеловек
 
05.07.12
14:47
(12) Потому, что - то что в обычных формах пишется в одну строчку кода - тут приходится ....
24 Mort
 
05.07.12
14:47
Неудобно это когда соседские дети на тебя похожи, а это просто требует пары строк кода.
25 Goggy
 
05.07.12
14:48
(23) нажать ещё одну галочку :)
26 RomaH
 
naïve
05.07.12
14:49
(21) ну написал я запрос в дин список, а как туда ТЗ положить?
там вроде временные таблицы использовать никак
27 RomaH
 
naïve
05.07.12
14:51
(21) это теория, или есть практическая реализация?
28 PiVa123
 
05.07.12
14:51

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

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

ПриСозданииНаСервере

Список.Параметры.УстановитьЗначениеПараметра("ИмяПараметра", Параметр);


Или вот например в (28) тож вариант.
30 RomaH
 
naïve
05.07.12
15:27
(29) b xt - ye pflfk ns gfhfvtnh - xnj c ybv lfkmit ltkfnm&
31 izekia
 
05.07.12
15:27
(29) про временные таблицы не дочитал?
32 Goggy
 
05.07.12
15:36
(31) Это намёк что менеджер временных таблиц не робит в дин списках?
33 RomaH
 
naïve
05.07.12
15:45
это намек на то, что ты говоришь о том чего не знаешь
34 izekia
 
05.07.12
15:46
(32) это вопрос
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.