Каталог решений - Режим выбора из списка (обычные формы), очищается поле ввода при открытии сохраненных данных

Режим выбора из списка (обычные формы), очищается поле ввода при открытии сохраненных данных

Режим выбора из списка (обычные формы), очищается поле ввода при открытии сохраненных данных

В наличии

Статья отражает особенность работы поля выбора с установленным свойством Режим выбора из списка, когда список заполняется программно при открытии уже записанных данных.

Категория:

Описание

Доброго дня!

Поиском по инету не нашел решения, поэтому решил выложить.

Сегодня опять столкнулся со странным поведением поля выбора, у которого установлен режим выбора из списка. Обычные формы, ничего сложного — при открытии заполняю список выбора разными видами документов. Использую при создании записи в регистре сведений.

Процедура ПриОткрытии()
    СписокДокументов = Новый СписокЗначений;
    Для каждого МД Из Метаданные.Документы Цикл
        СписокДокументов.Добавить(МД.Имя,МД.Синоним);
    КонецЦикла; 
    СписокДокументов.СортироватьПоПредставлению();
    ЭлементыФормы.ВидДокумента.СписокВыбора = СписокДокументов;
КонецПроцедуры

Открываю форму записи регистра, выбираю нужный вид документа, записываю. При повторном открытии этой записи — в поле выбора пусто, значение очищено. Что произошло непонятно.

Хорошо, думаю может быть ПередОткрытием нужно заполнить список выбора. Переношу заполнение туда — та же картина, форма открывается — пустое значение. По форумам полазил — не нашел. Причем, нашел такую особенность — при обновлении уже открытой формы (кнопкой Перечитать данные) — значение появляется, чудеса.
Ну и наконец, я решил перенести код формирования списка выбора элемента в сам модуль формы, после всех процедур. Признаюсь, что в модуле формы я очень редко что-то пишу, максимум определяю переменные доступные для всего контекста формы, а уж свойства элементов формы определять — мне казалось совсем дурным тоном.
Но это решило проблему, все заработало. Видимо где-то еще до события "Перед открытием формы" ищется соответствие значения поля и элемента в списке выбора.
 

Процедура ПриОткрытии()
	// не работает	
КонецПроцедуры

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
	// не работает
КонецПроцедуры

// заполняем список документов для ограничения выбора
// работает
СписокДокументов = Новый СписокЗначений;
Для каждого МД Из Метаданные.Документы Цикл
	СписокДокументов.Добавить(МД.Имя,МД.Синоним);
КонецЦикла; 
СписокДокументов.СортироватьПоПредставлению();
ЭлементыФормы.ВидДокумента.СписокВыбора = СписокДокументов;

Если вы это знали, то хорошо. Если не знали, то еще лучше. Я раньше просто выключал Режим выбора из списка по причине того, что не понимал как работает эта непонятная вещь. Вообще конечно, странно, что в инструкциях этого нет (либо я не умею читать).

has been added to your cart:
Оформление заказа