Имя: Пароль:
1C
 
1C 8.1 поле ввода, выбор из списка значений, Проблема..
0 Ayne
 
15.02.11
16:52
Здравствуйте еще раз, товарищи.

Версия платформы 8.1.15.14.


Допустим, на форме есть элемент управления - поле ввода. Делаю этому полю ввода список выбора.

ТекСписокВыбора = ТекЭлементФормы.СписокВыбора;
ТекСписокВыбора.Добавить("Первый");
ТекСписокВыбора.Добавить("Второй");
ТекСписокВыбора.Добавить("Третий");

Теперь, внимание, самое главное. Я хочу ограничить выбор значения поля ввода только значениями из заданного списка. Если я в свойствах элемента управления поставлю галочки напротив РежимВыбораИзСписка и КнопкаСпискаВыбора, то все конечно же работает, особенно замечательно, что работает быстрый выбор, если пользователь напишет в этом элементе управления "П" и нажмет [enter], то список выбора автоматом отфильтруется и автоматически открывается с учетом фильтра, что мне как раз и нужно. Однако данный способ мне НЕ ПОДХОДИТ, давайте НЕ БУДЕМ заострять внимание почему. Пытаюсь провернуть то же самое, но программным методом -

ТекЭлементФормы.КнопкаСпискаВыбора = Истина;
ТекЭлементФормы.РежимВыбораИзСписка = Истина;

В результате на форме у данного элемента управления появляется возможность выбора из списка, но НЕТ ограничения на выбранное значение списком выбора, пользователь может вписать в этот элемент управления что угодно и 1С это ему мозволит сделать. Также при том же написании буквы "П" и нажатии на [enter] из примера НЕ происходит фильтрации списка выбора и открытие этого списка выбора, просто значение элемента управления становится равным "П" и тем более никаких сообщений о неправильном значении не появляется.

Что не учел? Поможите, кто чем может. Нужно добиться именно ПРОГРАММНОГО присвоения элементу управления параметров и его адекватной реакции, как и при простом проставлении галочек РежимВыбораИзСписка и КнопкаСпискаВыбора.
1 mosAdm
 
15.02.11
17:05
ТекЭлементФормы.РедактированиеТекста = Ложь;

Наверно это нужно добавить
2 Ayne
 
15.02.11
17:13
Редактирование текста (написали первую букву, и список выбора из десятков значений автоматически отфильтровался до приемлемого уровня) - очень важный пункт здесь, без него фигня получается.

Сравнивал параметры элемента управления при обоих вариантах - в моем программном явно чего-то не хватает, остаются параметры МинимальноеЗначение и МаксимальноеЗначение, остальное один в один. Косяк платформы, нет?
3 mosAdm
 
15.02.11
22:29
А как в синтаксис помощнике не катит?

ПолеВвода.ТипЗначения = Новый ОписаниеТипов();
ПолеВвода.РежимВыбораИзСписка = Истина;
4 Ayne
 
16.02.11
02:06
ПолеВвода.ТипЗначения = Новый ОписаниеТипов();

Не катит, оно только на чтение.

Ну же, юные умы, подможайте!
5 mosAdm
 
16.02.11
08:44
(4)мил человек ты сам себя не пытаешься перехитрить? Если "только на чтение" тогда как ставить букву "П"?
Другое дело если поле связано с данными, тогда не получиться установить ТипЗначения, а нужно событие использовать "АвтоПодборТекста".
6 Ayne
 
16.02.11
09:03
"Другое дело если поле связано с данными" - оно самое, каюсь, сразу не написал. Но что за ерунда, все равно не понимаю. Разницы между проставлением галочек в свойствах элемента управления и проставлением их же в коде быть не должно, ведь по сути делается одно и то же. Тем более, заморачиваться с событиями.
7 mosAdm
 
16.02.11
09:15
(6) РежимВыбораИзСписка  - глянь в синтаксисе там всё достаточно однозначно и выше платформы не прыгнешь
8 kosts
 
16.02.11
09:24
Вот работает

Процедура Кнопка1Нажатие(Элемент)
   
   Сообщить(ЭлементыФормы.ПолеВвода.Значение , СтатусСообщения.Информация);
   
КонецПроцедуры

ПолеВвода = ЭлементыФормы.Добавить(Тип("ПолеВвода"), "ПолеВвода", Истина, );
//эл.Высота = 140;
ПолеВвода.Ширина = 100;
ПолеВвода.Лево = 40;
ПолеВвода.Верх = 40;

СписокВыбора = ПолеВвода.СписокВыбора;
СписокВыбора.Добавить(1, "Первый");
СписокВыбора.Добавить(2, "Второй");
СписокВыбора.Добавить(3, "Третий");

ПолеВвода.КнопкаВыбора = Истина;
ПолеВвода.КнопкаСпискаВыбора = Истина;

ПолеВвода.ТипЗначения = Новый ОписаниеТипов();
ПолеВвода.РежимВыбораИзСписка = Истина;

ПолеВвода.Данные = "";
9 Ayne
 
16.02.11
09:25
По ходу дела, им было лень с этим заморачиваться. Тленово, что сказать еще.
10 Ayne
 
16.02.11
09:37
(8) Вообще, элементы управления, динамически создающиеся в форме - это был бы самый правильный вариант для меня, вот только гемора будет во много раз больше.

(7), (8) - спасибо, считайте, что убедили меня :)
11 kosts
 
16.02.11
09:41
Есть смысл заморачиваться если доделываешь типовые.
12 Ayne
 
16.02.11
10:55
В данном случае есть. Делаю универсальный документ по типу документа "Тестирование". Однако тот документ не предоставляет достаточно возможностей для настроек (например, зависимость одних параметров от других: очистка, блокирование для редактирования, подстановка значения) и неудобен для пользователей. Штука получилась бы рульная для кучи контор - диагностика оборудования, осмотры врача и прочее, прочее. С контролем изменения тех или иных параметров во времени, кучей печатных форм на каждый случай и так далее и тому подобное.
Единственное, что меня сейчас стопорит, так это расчет по формулам, если при изменении какого-либо параметра (тип число) другой параметр рассчитывается как, например, сумма значений данного параметра и какого-то другого. Вот тут придумать ничего не могу.