![]() |
![]() |
![]() |
|
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
|
В данном случае есть. Делаю универсальный документ по типу документа "Тестирование". Однако тот документ не предоставляет достаточно возможностей для настроек (например, зависимость одних параметров от других: очистка, блокирование для редактирования, подстановка значения) и неудобен для пользователей. Штука получилась бы рульная для кучи контор - диагностика оборудования, осмотры врача и прочее, прочее. С контролем изменения тех или иных параметров во времени, кучей печатных форм на каждый случай и так далее и тому подобное.
Единственное, что меня сейчас стопорит, так это расчет по формулам, если при изменении какого-либо параметра (тип число) другой параметр рассчитывается как, например, сумма значений данного параметра и какого-то другого. Вот тут придумать ничего не могу. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |