Имя: Пароль:
1C
1С v8
Это вообще можно?
0 zakidonoff
 
23.04.12
13:12
Хочу динамически менять тип в поле формы.
По умолчанию стоит текст.
Мне нужно по событию изменить тип поля на Тип("СправочникСсылка.Контрагенты")
Делаю так:

Массив = Новый Массив;
Массив.Добавить(Тип("СправочникСсылка.Контрагенты"));
ЭлементыФормы.ПолеПоиска.Данные = Неопределено;
ЭлементыФормы.ПолеПоиска.ТипЗначения = Новый ОписаниеТипов(Массив);
ЭлементыФормы.ПолеПоиска.Данные = ПолеПоиска;
ПолеПоиска = Новый (Массив[0]);

Ессно, не работает, ибо сам реквизит ПолеПоиска по-прежнему имеет текстовый тип.
Поскольку данные ПолеПоиска являются реквизитом самой формы, задался вопросом, а к описанию типов самого реквизита формы вообще можно как-нибудь докопаться? И изменить динамически в коде? Али нет.
1 Wobland
 
23.04.12
13:12
не вчитывался. присвоить данным пустое значение нужного типа уже пробовал?
2 Ненавижу 1С
 
гуру
23.04.12
13:13
сделай тип составным
3 Ranger_83
 
23.04.12
13:13
Связь по типу не предлагать?
4 ShoGUN
 
23.04.12
13:17
(0) У реквизита формы можно вообще установить тип "Произвольный", тогда можно менять текущий тип тупо присваивая значение.
5 zakidonoff
 
23.04.12
13:27
(1) Для этого нужно, чтобы поле содержало тип присваиваемого пустого значения.
(2) Как вариант можно. Но тогда придется менять ещё пару существующих процедур, дабы не смущать юзверя диалогами о выборе типа данных. В общем-то, если ответ на вопрос будет "нет", так и сделаю.
(3) Вообще дебри =)
(4) У реквизита установить произвольный тип, а у элемента формы - нужный?
И что, проканает? =)
Ща попробую...
6 zakidonoff
 
23.04.12
13:30
(4) Работает почти как надо.
Спб =)
Понедельник, бессонные ночи выходных =)
7 alexhtn
 
23.04.12
13:31
У элементов формы есть свойство "ОграничениеТипа"
8 zakidonoff
 
23.04.12
13:41
(7) Никогда его не использовал раньше.
Суть,как я понимаю, в том, чтобы установив у реквизита произвольный тип, манипулировать в коде этим свойством, просто "закидывая" туда нужные в данном месте?
9 alexhtn
 
23.04.12
13:54
Еще необходимо привести значение

ЭлементыФормы.ДокументПередачи.Значение = ЭлементыФормы.ДокументПередачи.ОграничениеТипа.ПривестиЗначение(ДокументПередачи);
10 zakidonoff
 
23.04.12
14:48
(9) О сенкс. А то-то я смотрю - не работает =)
11 hhhh
 
23.04.12
14:51
(10) вы просто перепутали Данные и Значение
12 zakidonoff
 
23.04.12
15:23
Полетело. Всем спасибо.
Ограничение типа сокращает код процентов на тридцать.
alexhtn, отдельно благодарствую =)