Режим выбора из списка (обычные формы), очищается поле ввода при открытии сохраненных данных
Статья отражает особенность работы поля выбора с установленным свойством Режим выбора из списка, когда список заполняется программно при открытии уже записанных данных.
- Описание
- Подробнее
Описание
Доброго дня!
Поиском по инету не нашел решения, поэтому решил выложить.
Сегодня опять столкнулся со странным поведением поля выбора, у которого установлен режим выбора из списка. Обычные формы, ничего сложного — при открытии заполняю список выбора разными видами документов. Использую при создании записи в регистре сведений.
Процедура ПриОткрытии()
СписокДокументов = Новый СписокЗначений;
Для каждого МД Из Метаданные.Документы Цикл
СписокДокументов.Добавить(МД.Имя,МД.Синоним);
КонецЦикла;
СписокДокументов.СортироватьПоПредставлению();
ЭлементыФормы.ВидДокумента.СписокВыбора = СписокДокументов;
КонецПроцедурыОткрываю форму записи регистра, выбираю нужный вид документа, записываю. При повторном открытии этой записи — в поле выбора пусто, значение очищено. Что произошло непонятно.
Хорошо, думаю может быть ПередОткрытием нужно заполнить список выбора. Переношу заполнение туда — та же картина, форма открывается — пустое значение. По форумам полазил — не нашел. Причем, нашел такую особенность — при обновлении уже открытой формы (кнопкой Перечитать данные) — значение появляется, чудеса.
Ну и наконец, я решил перенести код формирования списка выбора элемента в сам модуль формы, после всех процедур. Признаюсь, что в модуле формы я очень редко что-то пишу, максимум определяю переменные доступные для всего контекста формы, а уж свойства элементов формы определять — мне казалось совсем дурным тоном.
Но это решило проблему, все заработало. Видимо где-то еще до события "Перед открытием формы" ищется соответствие значения поля и элемента в списке выбора.
Процедура ПриОткрытии()
// не работает
КонецПроцедуры
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
// не работает
КонецПроцедуры
// заполняем список документов для ограничения выбора
// работает
СписокДокументов = Новый СписокЗначений;
Для каждого МД Из Метаданные.Документы Цикл
СписокДокументов.Добавить(МД.Имя,МД.Синоним);
КонецЦикла;
СписокДокументов.СортироватьПоПредставлению();
ЭлементыФормы.ВидДокумента.СписокВыбора = СписокДокументов;Если вы это знали, то хорошо. Если не знали, то еще лучше. Я раньше просто выключал Режим выбора из списка по причине того, что не понимал как работает эта непонятная вещь. Вообще конечно, странно, что в инструкциях этого нет (либо я не умею читать).

