|
v8: Как спозиционировать список значений на определенное значение перед выбором? Ø |
☑ | ||
|---|---|---|---|---|
|
0
Андрюха1
03.11.05
✎
08:43
|
Итак, как спозиционировать список значений на определенное значение перед выбором? Т.е. при открытии элемента справочника заполняю для реквизита Год список выбора:
Для Сч = 1980 По 2030 Цикл СтрДата = Формат(Сч, "ЧГ=0"); // чтобы небыло пробела ЭлементыФормы.Год.СписокВыбора.Добавить(СтрДата); КонецЦикла; По хорошему, после того как пользователь нажмет на кнопку списка выбора реквизита Год, надо бы спозиционировать список годов на текущий. Но как? |
|||
|
1
Macleod
03.11.05
✎
09:25
|
ЭлементыФормы.Год.НайтиПоЗначению(2005);
Вроде так. Или так: ЭлементыФормы.Год.СписокВыбора.НайтиПоЗначению(2005); |
|||
|
2
Андрюха1
03.11.05
✎
09:30
|
(1) Не канает. НайтиПоЗначению() возвращает найденый элемент списка значений, а не позиционирует на нем :(
|
|||
|
3
Macleod
03.11.05
✎
09:34
|
Блин, чёта полистал ЖКК. Там не нашел ТекущаяСтрока() как в 7.7.
Щас еще покопаюсь. Где-то очень просто должно быть. |
|||
|
4
Fynjy
03.11.05
✎
09:44
|
ПолеСписка (ListBox)
ТекущаяСтрока (CurrentRow) Использование: Чтение и запись. Описание: Тип: ЭлементСпискаЗначений. Содержит текущую строку поля списка. См. также: ЭлементСпискаЗначений |
|||
|
5
Winter
03.11.05
✎
09:55
|
Ответ тут:
http://itland.ru/forum/index.php?showtopic=835&hl=Список+значений |
|||
|
6
Андрюха1
03.11.05
✎
10:31
|
(4) Разговор идет не о ListBox, а о ChoiceBox, т.е. СписокВыбора.
(5) Данный пример позволяет установить значение для поля ввода, но не позиционирует список (т.е. список один фиг начинается с 1980 года) |
|||
|
7
A
03.11.05
✎
10:33
|
А чем "ВыбратьЭлемент(<Заголовок>, <Элемент>)" не устраивает?
|
|||
|
8
Андрюха1
03.11.05
✎
10:34
|
(4) Извиняюсь, вопрос задан не корректно, в связи с тем, что я сам в процессе поиска понял что это не СписокЗначений, а СписокВыбора. Сорри.
|
|||
|
9
Андрюха1
03.11.05
✎
10:36
|
(7) Метод "ВыбратьЭлемент" показывает диалоговое окно выбора на экране, а выбор из СпискаВыбора - цивильной менюшкой под полем ввода.
|
|||
|
10
A
03.11.05
✎
10:42
|
(9) Если не секрет, а для чего всё это?.... Это реквизит формы или объекта?....
|
|||
|
11
Андрюха1
03.11.05
✎
10:48
|
(10) Конечно не серет. У справочника "АвтотранспортныеСредства" присутствует реквизит "ГодВыпуска", который представляет из себя на форме поле ввода с кнопочкой списка выбора, при нажатии на которую, должен выпадать список годов СПОЗИЦИОНИРОВАННЫЙ на текущем 2005 году.
|
|||
|
12
Андрюха1
03.11.05
✎
10:50
|
(10) Тут еще важно отметить, что пользователь после (или до) выбора года должен иметь возможность подкорректировать цифру ручками - по этому этот реквизит - поле ввода.
|
|||
|
13
Filin
03.11.05
✎
11:00
|
(11) А почему бы это поле сразу не заполнять нужным значением (и пользователь будет выбирать уже только если нужно другое значение)?
ЭлементыФормы.ГодВыпуска.Значение=ЭлементыФормы.ГодВыпуска.СписокВыбора.НайтиПоЗначению("2005").Значение; |
|||
|
14
Андрюха1
03.11.05
✎
11:05
|
(13) Конечно можно, так я сейчас и делаю, но было бы ГОРАЗДО УДОБНЕЕ, если бы список при открытии был бы уже спозиционирован на текущем значении, а то приходится "крутить" его аж 1980 года. Во-первых неудобно, а во-вторых должно же быть решение. Как вариант можно открывать диалог через "ВыбратьЭлемент" - там и позиционируется без проблем, но ИМХО удобнее было бы поционировать <b>СписокВыбора</b>.
|
|||
|
15
A
03.11.05
✎
11:10
|
(14) А если просто число?........
|
|||
|
16
Андрюха1
03.11.05
✎
11:17
|
(15) Да можно и число, конечно, только тётки ошибок набьют - факт. Справочник большой. Или просто "98" вместо "1998", или еще чего...
Конечно можно обработку вставить для проверки набранного числа, но это уже не гуд. Еще один нюанс - если год не известен, то значение поля должно быть "не известно", т.е. тут уже кроме цифр еще и буквы допускаются, а значит оператор может по ошибке еще чего-нить напечатать. Но мы уже обсуждаем как обойти проблему, а не решить ее. Я то может и обойдусь, а если еще кому-нибудь понадобится решить подобную проблему? В поиске напечатает человек вопрос, а ему - раз и готовое решение. Удобно! |
|||
|
17
Андрюха1
03.11.05
✎
11:51
|
Господа! Решение найдено. Итак, кому интересно слушайте:
1. Объявляем в модуле переменную СписокГодВыпуска. 2. В методе формы ПриОткрытии инициализируем переменную и забиваем значениями годов: СписокГодаВыпуска = Новый СписокЗначений; Для Сч = 1980 По 2010 Цикл СтрДата = Формат(Сч, "ЧГ=0"); СписокГодаВыпуска.Добавить(СтрДата); КонецЦикла; 3. Пишем процедуру для обработки события "Начало выбора из списка" поля ввода "ГодВыпуска": Процедура ПриНачалеВыбора(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Выбор = ВыбратьИзСписка(СписокГодаВыпуска, Элемент, СписокГодаВыпуска.НайтиПоЗначению(Элемент.Значение)); Если Выбор <> Неопределено Тогда Элемент.Значение = Выбор.Значение; КонецЕсли; КонецПроцедуры Всем откликнувшимся большое спасибо! |
|||
|
18
mricoscom
03.11.05
✎
12:23
|
Ну мне кажется здесь все просто, или я просто не понял вопроса:
ЭлементыФормы.ВидСортировки.СписокВыбора.Добавить("Теплоход","По теплоходам"); ЭлементыФормы.ВидСортировки.СписокВыбора.Добавить("Дата","По датам"); ВидСортировки="Теплоход"; |
|||
|
19
Андрюха1
03.11.05
✎
12:35
|
(18) Ну не знаю даже... Если ты думаешь что так будет правильно... А может ты действительно не понял вопроса? :0)
|
|||
|
20
Filin
03.11.05
✎
12:51
|
Хорошо, конечно, что решение найдено (хотя ВыбратьИзСписка немного не по теме озвученного в (0) и ниже).
:-)) |
|||
|
21
mricoscom
03.11.05
✎
13:07
|
(19) А ты попробуй. :-)
Перечитал вопрос. Кажется именно то, что нужно |
|||
|
22
Андрюха1
03.11.05
✎
13:11
|
Пробую
|
|||
|
23
Андрюха2
03.11.05
✎
13:28
|
(21) Да не. Это не то. Видишь, получается что в реквизите (у нас - поле ввода) будет написано "Теплоход", но это список выбора на "Теплоход" не спозиционирует (хотя в твоём случае - да, т.к. у тебя "Теплоход" стоит первым).
Попробуй загнать в СписокВыбора года с 1980 по 2030 и увидишь, что что бы мы не присваивали полю ввода, а выпадающий список будет один фиг начинаться с "1980" (т.е. с первого значения). А вот в решении (17) с участием "ВыбратьИзСписка" (хоть это немного и не отвечает вопросу) результат такой, какой надо, т.е.: 1. Выпадающий список начинается с текущего значения. 2. Текущее значение можно подредактировать "ручками". В любом случае, извини за сарказм. Я не хотел никого обидеть, просто подумал, что ты в другую тему хотел написать, просто окна перепутал. |
|||
|
24
Андрюха2
03.11.05
✎
14:02
|
(21) А может быть я не так тебя понял? Ты напиши кусок кода.
|
|||
|
25
Sheridan
03.11.05
✎
16:14
|
Процедура ИсточникНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь; СписокВыбора = Элемент.СписокВыбора; Выбор = ВыбратьИзСписка(СписокВыбора, Элемент, СписокВыбора.НайтиПоЗначению(Элемент.Значение)); Если Выбор <> Неопределено Тогда Элемент.Значение = Выбор.Значение; КонецЕсли; КонецПроцедуры :) |
|||
|
26
Filin
03.11.05
✎
17:20
|
(25) Пункт 3 поста 17 читаем внимательно!
и делаем вывод: читать надо внимательно!!! :-))) |
|||
|
27
Андрюха1
04.11.05
✎
05:27
|
(25) Но все-равно огромное спасибо. Чувствую, что без поддержки, в случае чего, не останусь!
Спасибо вам, люди! |
|||
|
28
Sheridan
04.11.05
✎
18:04
|
Я посмотрел начало, дальше не стал смотреть и привел пример :)
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |