Имя: Пароль:
1C
1С v8
Создание элемента формы программно
0 Мисти
 
30.01.15
16:36
Элемент = ЭтаФорма.Элементы.Добавить("Кос_ВыборЭтажа", Тип("ПолеФормы"),ГруппаЭлементы);
        Элемент.Заголовок = "Этаж";
        Элемент.ПутьКДанным = "Объект.Кос_Площадка";
        Элемент.Вид = ВидПоляФормы.ПолеВвода;
        Элемент.УстановитьДействие("ПриИзменении","Кос_ВыборЭтажаОбработкаВыбора");
        Элемент.УстановитьДействие("ОбработкаВыбора","Кос_ВыборЭтажаОбработкаВыбора");
1 vicof
 
30.01.15
16:37
Похвалить или поругать?
2 EugeniaK
 
30.01.15
16:38
(0) Нафига один обработчик на 2 события7
3 Мисти
 
30.01.15
16:38
Проблема вот в чем!
Если не прописать путь к данным, то элемент и не создается! (опытным путем вычислено)
А по сути там данных быть не должно!
При открытии происходит вот что:

    ЭтаФорма.Элементы.Кос_ВыборПлощадки.СписокВыбора.ЗагрузитьЗначения(ПолучитьСписокПлощадок());
ЭтаФорма.Элементы.Кос_ВыборПлощадки.Значение =  Объект.Кос_Площадка;

А если это уже реквизит шапки, то какое уж там значение?
4 Мисти
 
30.01.15
16:39
(2) Описка! Исправлю, спасибо.
5 GANR
 
30.01.15
16:39
6 Мисти
 
30.01.15
16:47
Проверила еще раз, если путь к данным не прописать, то и реквизит не создается.
(5) По-моему, это не то.
Тип("ПолеВыбора") спасет?
7 Мисти
 
30.01.15
16:49
Не-а, говорит, вообще такого типа нет.
8 mikecool
 
30.01.15
16:50
(6) пропиши путь к данным реквизита формы объекта и будет тебе щастье
9 mikecool
 
30.01.15
16:51
+8 а так - все правильно не создается
10 Мисти
 
30.01.15
16:52
(8) Вот! И я к этому пришла, но это будет "нечестно". У меня условие - форму не трогать. Условие не от заказчика, так что в крайнем случае можно и нарушить, но неужели нет другого способа?
11 vicof
 
30.01.15
16:54
(10) 1сники вообще нечестные люди, так что можешь смело трогать
12 EugeniaK
 
30.01.15
16:54
(0) Что ты хочешь сделать?
13 mikecool
 
30.01.15
16:54
(10) да мне лично было бы пох на условие от заказчика, если его хотелку иначе не реализовать
14 EugeniaK
 
30.01.15
16:55
(3) Конечно не создается. Элемент Тип("ПолеФормы") без привязки к данным не имеет смысла.
15 Deon
 
30.01.15
16:57
(10) Реквизит формы создай сначала тоже программно. Потом используй его в программном создании элемента.
16 Мисти
 
30.01.15
16:58
Может, тип другой сделать? Какой? Мне нужно поле, в которое загружается список для выбора, потому что если обращаться непосредственно к справочнику, то там очень долго рассчитываются отборы, а показывать всё - запрещено.
17 Мисти
 
30.01.15
16:59
(15) Как?
18 mikecool
 
30.01.15
16:59
(16) создавай реквизит формы точка
19 Deon
 
30.01.15
17:02
(17) Как на картинке в (5) не получилось?
20 mikecool
 
30.01.15
17:05
(17) как то так

    ГруппаКоэффициентов = Элементы.Найти("ТЗДанныеПодбораГруппаКоэффициенты");
    Если Не ГруппаКоэффициентов = Неопределено Тогда
        Элементы.Удалить(ГруппаКоэффициентов);
    КонецЕсли;
    
//создание реквизитов формы
    МассивРеквизитов = Новый Массив;
    Для Каждого СтрокаМодели Из МоделиТС Цикл
        ИмяРеквизита = "_" + МоделиТС.Индекс(СтрокаМодели);
        Если СписокДобавленныхКолонокКоэффициентов.НайтиПоЗначению(ИмяРеквизита) = Неопределено Тогда
            СписокДобавленныхКолонокКоэффициентов.Добавить(ИмяРеквизита);
            КолонкаТЗ = Новый РеквизитФормы(ИмяРеквизита, Новый ОписаниеТипов("Число"), "ТЗДанныеПодбора", "");
            МассивРеквизитов.Добавить(КолонкаТЗ);
        КонецЕсли;
    КонецЦикла;
    Если Не МассивРеквизитов.Количество() = 0 Тогда
        ИзменитьРеквизиты(МассивРеквизитов);
    КонецЕсли;
//привязка к реквизитам формы
    ГруппаКоэффициентов = Элементы.Добавить("ТЗДанныеПодбораГруппаКоэффициенты", Тип("ГруппаФормы"), Элементы.ТЗДанныеПодбора);
    ГруппаКоэффициентов.Группировка = ГруппировкаКолонок.Горизонтальная;
    Для Каждого СтрокаМодели Из МоделиТС Цикл
        Колонка = Элементы.Добавить("_" + МоделиТС.Индекс(СтрокаМодели), Тип("ПолеФормы"), ГруппаКоэффициентов);
        Колонка.ПутьКДанным = "ТЗДанныеПодбора._" + МоделиТС.Индекс(СтрокаМодели);
        Колонка.Заголовок = СтрокаМодели.МодельТС;
    КонецЦикла;
21 Мисти
 
30.01.15
17:09
Спасибо, следующим этапом попробую!
Пока просто добавила реквизиты.
Поле объекта недоступно для записи (Кос_ВыборПлощадки)
    ЭтаФорма.Элементы.Кос_ВыборПлощадки =  Объект.Кос_Площадка;
А если написать
ЭтаФорма.Элементы.Кос_ВыборПлощадки.Значение - тоже ругается, Мол, нет значения.
А вот этот фокус -
    ЭтаФорма.Элементы.Кос_ВыборПлощадки.СписокВыбора.ЗагрузитьЗначения(ПолучитьСписокПлощадок());
прекрасно отработал!
22 Мисти
 
30.01.15
17:16
У меня есть реквизит документа - Кос_Площадка, в документе я хочу показать "поле для выбора" при открытии в нем должно быть сохраненное значение реквизита документа и список выбора. Список выбора попадает, а значение как туда запихнуть?
23 Мисти
 
30.01.15
17:26
Как значение-то засунуть?
24 Мисти
 
30.01.15
17:32
Эх, ну последний вопрос! (на сегодня)
25 SUA
 
30.01.15
17:46
ЭтаФорма.Кос_ВыборПлощадки
26 SUA
 
30.01.15
17:47
или проще даже
Кос_ВыборПлощадки
27 Мисти
 
30.01.15
17:51
Вау!