|
как программно добавить элемент на управляемую форму | ☑ | ||
---|---|---|---|---|
0
LivingStar
27.11.12
✎
13:41
|
например при открытии формы что бы добавлялся элемент типа поле
форма управляемая |
|||
1
sapphire
27.11.12
✎
13:47
|
ДобавляемыеРеквизиты=Новый Массив();
НовыйРеквизит= Новый РеквизитФормы("МойРеквизит"),ОбщегоНазначения.ПолучитьОписаниеТиповСтроки(120),"ТаблицаДокументов",""); ДобавляемыеРеквизиты.Добавить(НовыйРеквизит); ИзменитьРеквизиты(ДобавляемыеРеквизиты); ЭлементМойРеквизит= Элементы.Добавить("МойРеквизит",Тип("ПолеФормы"),Элементы); ЭлементМойРеквизит.Вид = ВидПоляФормы.ПолеВвода; ЭлементМойРеквизит.ПутьКДанным= "МойРеквизит"; ЭлементДолжность.Видимость=Истина; |
|||
2
LivingStar
27.11.12
✎
13:51
|
&НаСервере
Процедура ДобавитьЭлемент() Элемент = ЭтаФорма.Элементы.Добавить("Тестовый", Тип("ПолеФормы"), ЭтаФорма); Элемент.Вид = ВидПоляФормы.ПолеВвода; Элемент.Имя = "Тестовый"; Элемент.ПутьКДанным = "Реквизит1"; КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) ДобавитьЭлемент(); КонецПроцедуры я вот так сделал а как задать ему имя "тестовый реквизит" что то ругается все ((( |
|||
3
Нуф-Нуф
27.11.12
✎
13:52
|
что ругается
|
|||
4
LivingStar
27.11.12
✎
13:52
|
Элемент.ПутьКДанным = "Тестовый";
на это |
|||
5
LivingStar
27.11.12
✎
13:53
|
как ему задать имя на форме произвольное ?
|
|||
6
Нуф-Нуф
27.11.12
✎
13:53
|
что значит ругается
|
|||
7
LivingStar
27.11.12
✎
13:53
|
это принимает Элемент.ПутьКДанным = "Реквизит1";
|
|||
8
LivingStar
27.11.12
✎
13:53
|
а на то ругается не допустимое значение
|
|||
9
LivingStar
27.11.12
✎
13:54
|
интересно как задавать тип, имя
|
|||
10
Нуф-Нуф
27.11.12
✎
13:55
|
среди реквизитов формы есть реквизит с именем "Текстовый"?
|
|||
11
LivingStar
27.11.12
✎
13:55
|
имя задал Элемент.Заголовок = "111";
а как задать тип ему числовой? |
|||
12
LivingStar
27.11.12
✎
13:56
|
(10) я программно его создаю
|
|||
13
LivingStar
27.11.12
✎
13:56
|
при открытии
|
|||
14
Нуф-Нуф
27.11.12
✎
13:56
|
тогда не указывай путь к данным
|
|||
15
LivingStar
27.11.12
✎
13:57
|
так у меня
&НаСервере Процедура ДобавитьЭлемент() Элемент = ЭтаФорма.Элементы.Добавить("Числовой", Тип("ПолеФормы"), ЭтаФорма); Элемент.Вид = ВидПоляФормы.ПолеВвода; Элемент.Заголовок = "Тестовый реквизит"; Элемент.ПутьКДанным = "Реквизит1"; КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) ДобавитьЭлемент(); КонецПроцедуры |
|||
16
LivingStar
27.11.12
✎
13:58
|
если делать так то элемент пропадает
&НаСервере Процедура ДобавитьЭлемент() Элемент = ЭтаФорма.Элементы.Добавить("Числовой", Тип("ПолеФормы"), ЭтаФорма); Элемент.Вид = ВидПоляФормы.ПолеВвода; Элемент.Заголовок = "Тестовый реквизит"; //Элемент.ПутьКДанным = "Реквизит1"; КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) ДобавитьЭлемент(); КонецПроцедуры |
|||
17
MSII
27.11.12
✎
13:58
|
Покажи, как создаешь реквизит с именем Реквизит1.
|
|||
18
LivingStar
27.11.12
✎
13:59
|
(17)
&НаСервере Процедура ДобавитьЭлемент() Элемент = ЭтаФорма.Элементы.Добавить("Числовой", Тип("ПолеФормы"), ЭтаФорма); Элемент.Вид = ВидПоляФормы.ПолеВвода; //Элемент. Элемент.Заголовок = "Тестовый реквизит"; Элемент.ПутьКДанным = "Реквизит1"; КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) ДобавитьЭлемент(); КонецПроцедуры nfr |
|||
19
LivingStar
27.11.12
✎
13:59
|
так
|
|||
20
LivingStar
27.11.12
✎
13:59
|
счас хочу тип сделать ему числовой 15.2
|
|||
21
Нуф-Нуф
27.11.12
✎
13:59
|
Смотри как сделано в типовой УТ 11. добавляются поля по контактной информации на форму:
// Обработчик для события формы ПриСозданииНаСервере Процедура ПриСозданииНаСервере(Форма, Объект, ИмяЭлементаДляРазмещения) Экспорт масРеквизитов = Новый Массив; // Создадим таблицу значений ИмяОписания = "КонтактнаяИнформацияОписаниеДополнительныхРеквизитов"; масРеквизитов.Добавить(Новый РеквизитФормы(ИмяОписания, Новый ОписаниеТипов("ТаблицаЗначений"))); масРеквизитов.Добавить(Новый РеквизитФормы("ИмяРеквизита", Новый ОписаниеТипов("Строка"), ИмяОписания)); масРеквизитов.Добавить(Новый РеквизитФормы("ЗначенияПолей", Новый ОписаниеТипов("СписокЗначений"), ИмяОписания)); масРеквизитов.Добавить(Новый РеквизитФормы("ТолькоРоссийский", Новый ОписаниеТипов("Булево"), ИмяОписания)); масРеквизитов.Добавить(Новый РеквизитФормы("Тип", Новый ОписаниеТипов("ПеречислениеСсылка.ТипыКонтактнойИнформации"), ИмяОписания)); масРеквизитов.Добавить(Новый РеквизитФормы("Вид", Новый ОписаниеТипов("СправочникСсылка.ВидыКонтактнойИнформации"), ИмяОписания)); масРеквизитов.Добавить(Новый РеквизитФормы("ТипНомер", Новый ОписаниеТипов("Число"), ИмяОписания)); // Получим список видов КИ ИмяСправочника = Объект.Ссылка.Метаданные().Имя; ГруппаВидовКИ = Справочники.ВидыКонтактнойИнформации["Справочник" + ИмяСправочника]; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВидыКонтактнойИнформации.Ссылка КАК Вид, | ВидыКонтактнойИнформации.Наименование, | ВидыКонтактнойИнформации.Тип, | ВидыКонтактнойИнформации.РедактированиеТолькоВДиалоге, | ВидыКонтактнойИнформации.АдресТолькоРоссийский, | ВидыКонтактнойИнформации.ПометкаУдаления КАК ПометкаУдаления, | ИСТИНА КАК Использовать |ИЗ | Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации |ГДЕ | ВидыКонтактнойИнформации.Родитель = &ГруппаВидовКИ | |УПОРЯДОЧИТЬ ПО | ПометкаУдаления, | ВидыКонтактнойИнформации.РеквизитДопУпорядочивания"; Запрос.УстановитьПараметр("ГруппаВидовКИ", ГруппаВидовКИ); УстановитьПривилегированныйРежим(Истина); КонтактнаяИнформация = Запрос.Выполнить().Выгрузить(); УстановитьПривилегированныйРежим(Ложь); // Добавим нужные реквизиты Если ТипЗнч(Объект.КонтактнаяИнформация) = Тип("ТаблицаЗначений") Тогда ТабЗн = Объект.КонтактнаяИнформация; Иначе ТабЗн = Объект.КонтактнаяИнформация.Выгрузить(); КонецЕсли; Номер = 0; соотвВидИмя = Новый Соответствие; Для Каждого Стр Из КонтактнаяИнформация Цикл СтрВКИ = ТабЗн.Найти(Стр.Вид, "Вид"); Если СтрВКИ = Неопределено И Стр.ПометкаУдаления Тогда Стр.Использовать = Ложь; Продолжить; КонецЕсли; Номер = Номер + 1; ИмяРеквизита = "КонтактнаяИнформацияПоле" + Номер; масРеквизитов.Добавить(Новый РеквизитФормы(ИмяРеквизита, Новый ОписаниеТипов("Строка"), , Стр.Наименование, Истина)); соотвВидИмя.Вставить(Стр.Вид, ИмяРеквизита); КонецЦикла; // Добавим новые реквизиты Форма.ИзменитьРеквизиты(масРеквизитов); // Создадим элементы на форме и заполним значения реквизитов Родитель = ?(ПустаяСтрока(ИмяЭлементаДляРазмещения), Форма, Форма.Элементы[ИмяЭлементаДляРазмещения]); Для Каждого Стр Из КонтактнаяИнформация Цикл Если Не Стр.Использовать Тогда Продолжить; КонецЕсли; Вид = Стр.Вид; ИмяРеквизита = соотвВидИмя.Получить(Вид); Элемент = Форма.Элементы.Добавить(ИмяРеквизита, Тип("ПолеФормы"), Родитель); Элемент.Вид = ВидПоляФормы.ПолеВвода; Элемент.ПутьКДанным = ИмяРеквизита; Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх; Если Стр.Тип = Перечисления.ТипыКонтактнойИнформации.Другое Тогда Элемент.Высота = 5; Элемент.МногострочныйРежим = Истина; КонецЕсли; Если ДляТипаКонтактнойИнформацииДоступноРедактированиеВДиалоге(Стр.Тип) Тогда Элемент.КнопкаВыбора = Истина; Если Стр.РедактированиеТолькоВДиалоге Тогда Элемент.РедактированиеТекста = Ложь; Элемент.ЦветФона = WebЦвета.Кремовый; КонецЕсли; Элемент.УстановитьДействие("НачалоВыбора", "Подключаемый_КонтактнаяИнформацияНачалоВыбора"); Элемент.УстановитьДействие("ПриИзменении", "Подключаемый_КонтактнаяИнформацияПриИзменении"); КонецЕсли; новСтр = Форма.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов.Добавить(); новСтр.ИмяРеквизита = ИмяРеквизита; новСтр.ТолькоРоссийский = Стр.АдресТолькоРоссийский; новСтр.Вид = Вид; новСтр.Тип = Стр.Тип; новСтр.ТипНомер = ПоТипуКонтактнойИнформацииПолучитьНомер(Стр.Тип); СтрВКИ = ТабЗн.Найти(Стр.Вид, "Вид"); Если СтрВКИ <> Неопределено Тогда Форма[ИмяРеквизита] = СтрВКИ.Представление; новСтр.ЗначенияПолей = ПреобразоватьСтрокуВСписокПолей(СтрВКИ.ЗначенияПолей); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
22
MSII
27.11.12
✎
14:01
|
(19) Т.е. ты не создаешь реквизит формы с именем Реквизит1. Тогда все логично.
|
|||
23
MSII
27.11.12
✎
14:02
|
(19) Делай как в (1). Сперва создавай реквизит(ы) формы, потом элемент(ы).
|
|||
24
LivingStar
27.11.12
✎
14:02
|
а как наддо?
&НаСервере Процедура ДобавитьЭлемент() Элемент = ЭтаФорма.Элементы.Добавить("Реквизит1", Тип("ПолеФормы"), ЭтаФорма); Элемент.Вид = ВидПоляФормы.ПолеВвода; Элемент.Тип = "Числовой"; Элемент.Заголовок = "Тестовый реквизит"; Элемент.ПутьКДанным = "Реквизит1"; КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) ДобавитьЭлемент(); КонецПроцедуры |
|||
25
stonewolf
27.11.12
✎
14:06
|
(24) См (1):
ДобавляемыеРеквизиты=Новый Массив(); НовыйРеквизит= Новый РеквизитФормы("МойРеквизит"),ОбщегоНазначения.ПолучитьОписаниеТиповСтроки(120),"ТаблицаДокументов",""); ДобавляемыеРеквизиты.Добавить(НовыйРеквизит); ИзменитьРеквизиты(ДобавляемыеРеквизиты); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |