Влияние "РежимВыбораИзСписка" на отображение данных в форме

1. Rokky78 41 13.11.15 10:05 Сейчас в теме
Приветствую всех.

Есть форма записи РС в которой есть поле типа "Справочник.Помещения". По задаче нужно организовать выбор из списка в это поле. С этим проблем не возникло. Поставил флаг "РежимВыбораИзСписка". В обработчике "НачалоВыбора" написал заполнение списка выбора. Все работает. Данные из списка выбираются, при записи сохраняются в РС.

Позже заметил такой момент. Если открыть существующую запись РС с заполненными данными в этом поле, то данные на форме не отображаются. Влияет именно флаг "РежимВыбораИзСписка". Если его убрать то при открытии формы данные отображаются.

Подскажите, в чем дело?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dj_serega 393 13.11.15 10:14 Сейчас в теме
(1) Rokky78, Платформа какая? Режим совместимости какой?
4. Rokky78 41 13.11.15 11:10 Сейчас в теме
(2) dj_serega, 8.3.5.1460 Режим совместимости не используется.
(3) vugluskr74, похоже так и есть. Я вчера тоже об этом думал, только под конец дня уже туго соображал.

Тогда связанный вопрос. Дело в том, что на форме 2 поля этого справочника. Справочник иерархический. и во второе поле должны попадать элементы родитель которого в 1-м поле. Поэтому в ПриСозданииНаСервере я перенести заполнение списка не могу.
Раньше открывал формы выбора с отбором. Все было хорошо. Но заказчик просит "список".
Установил быстрый выбор "Да". Установил отбор по реквизиту "ВидПомещения". В этой форме нужно выбрать только предопределенные элементы. Не получается установить отбор по предопределенным. Если убрать БыстрыйВыбор то оба отбора срабатывают и открывается обычная форма выбора. Если ставим быстрый выбор - "Да" тогда ругается "Неправильное условие отбора".
3. vugluskr74 13.11.15 10:24 Сейчас в теме
(1) Rokky78,
РежимВыбораИзСписка (ListChoiceMode)
Использование:


Чтение и запись.
Описание:

Тип: Булево.
Свойство регулирует работу поля ввода. Если значение свойства - Истина, то поле ввода работает как поле выбора и может хранить одно из значений произвольного типа, имеющихся в списке.

Обратите внимание: "имеющихся в списке", а ваш список пустой и заполняется только при начале выбора. Перенесите заполнение списка в обработчик ПриСозданииНаСервере.
YODDHA; igor63; +2 Ответить
13. YODDHA 50 09.04.24 16:26 Сейчас в теме
(3)Отличный ответ! так и есть, если список пуст, то значение не отображается.
15. scarl1n 23.05.24 11:27 Сейчас в теме
(3)Еще советую добавлять проверку на заполненность реквизита и наличие его текущего значения в списке выбора. Т.е условно вы выбрали организацию Х, а из списка выбора она по какой-то причине исчезла, и там остались организации Y и Z. В этом случае необходимо добавить организацию X в список после его полного заполнения, чтобы реквизит отображался как заполненный.
8. GresOfBase 25.06.19 09:36 Сейчас в теме
(1)"РежимВыбораИзСписка" у поля ввода очень полезная штука!
Расскажу как им пользоваться.
1. Само название режима предполагает, что значение в поле ввода должно попадать из списка значений. Список значений должен выпадать когда нажимаем кнопку выбора из списка в этом поле ввода. Значит в режиме конфигуратора для элемента формы «СписокВыбора» выставляем свойство «КнопкаСпискаВыбора» в истину.
2. Теперь нам необходимо создать список выбора, который будет ассоциирован с этим элементом формы. Поскольку у ПоляВвода нет свойства "СписокВыбора", поэтому создаем его программно в любом подходящем месте модуля формы, и "прикручиваем" его к ПолюВвода:
	сзСписок = Новый СписокЗначений;
	сзСписок.Очистить();
	сзСписок.Добавить(1, "Значение1");
	сзСписок.Добавить(2, "Значение2");
	ЭлементыФормы.ПолеВвода1.СписокВыбора = сзСписок;

3. Запустим на исполнение нашу форму. Видим, что поле ввода отлично справляется с выбором значений из своего выпадающего списка.
Замечание1. При выборе значения из выпадающего списка значением элемента формы "ПолеВвода" становится значение выбранного элемента списка, а не то представление, которое отображается в выпадающем списке и, после выбора, в самом поле ввода.
Замечание 2 (следствие из пред.) Если в свойстве "Данные" этого поля ввода прописать переменную, то после выбора значения из списка значением указанной переменной будет значение элемента списка. Переменную необходимо создавать в реквизитах формы с типом "Произвольный".
Для нашего примера создадим реквизит формы ЗначениеСписка. Тогда после выбора первого элемента значение реквизита будет число 1.
Замечание 3. При использовании поля ввода в таком качестве исчезает возможность ручного редактирования отображаемого в поле текста.
Всё очень просто!

Итак, если есть необходимость использовать именно поле ввода и именно в качестве поля выбора, то этот метод подходит. Особо ничего и кодировать не надо.
Merkalov; +1 Ответить
5. Rokky78 41 13.11.15 14:06 Сейчас в теме
Нашел такую информацию:

У реквизита в параметрах выбора стоит:

Отбор.Предопределенный(Истина)

При вводе 1-ой буквы в поле выбора вылазит ошибка:
"Неправильное условие отбора"

Платформа 8.3.5.1119

Проявляется в режимах совместимости 8.3.3, 8.3.4 и Не использовать


Проверил на облегченной копии информацию - подтвердилось. При установке в режим совместимости 8.3.2 ошибка пропадает и отображается корректный список.
На боевой конфигурации режим совместимости поменять не получится. Будем решать вопрос по другому.

Спасибо откликнувшимся!
6. topasha 23 16.10.16 19:54 Сейчас в теме
РежимВыбораИзСписка - глючное свойство. Аналогичную ситуацию я победил программной установкой режима выбора из списка в процедуре ПриСозданииНаСервере. Просто добавил строку типа

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

Заметил ещё один глюк. Есть документ, в котором в палитре свойств элемента формы флажок РежимВыбораИзСписка установлен. При создании нового документа или элемента справочника, если в процедуре ПриСозданииНаСервере() перед этим присваивалось значение. То оно так же не отображается. При этот, в Объект.МойЭлемент это значение есть.
7. user1152670 15.02.19 08:31 Сейчас в теме
В настоящее время тоже сижу и бьюсь над подобным вопросом. В одном месте нашел решение, правда при выборе значения в выпадающем списке значение в поле формы не отображается. И как ее решить пока не знаю. Привожу код:

&НаСервере
Функция Наименование();
        
    Запрос = Новый Запрос;
    
        Запрос.Текст =
        
            "ВЫБРАТЬ
            |   Подразделения.Наименование КАК Наименование,
            |   Подразделения.ЭтоГруппа,
            |   Подразделения.Родитель
            |ИЗ
            |   Справочник.Подразделения КАК Подразделения
            |ГДЕ
            |   Подразделения.ЭтоГруппа = Ложь
            |   И Подразделения.Родитель = &Родитель";
            
        Запрос.УстановитьПараметр("Родитель", Справочники.Подразделения.НайтиПоНаименованию("Наименование"));
        
        РезультатЗапроса = Запрос.Выполнить();
    
    
    Список = Новый СписокЗначений;    
    Список.ЗагрузитьЗначения(РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Наименование"));
    Возврат Список;
    
КонецФункции
 
&НаКлиенте
Процедура НаименованиеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    Объект.Наименование=ВыбратьИзСписка(Наименование(), Элементы.Наименование);
КонецПроцедуры
Показать
9. vvh74 02.06.21 11:11 Сейчас в теме
Некропостинг, конечно, но нашел решение по аналогичной проблеме (отображение значения после выбора из списка).
Помогает метод ОповеститьОбИзменении():
	МассивКлиентов = НайтиКлиента(НомерТелефона);
	Элементы.Клиент.СписокВыбора.Очистить();
	Если МассивКлиентов.Количество() > 0 Тогда
		Элементы.Клиент.РежимВыбораИзСписка = Истина;
		Элементы.Клиент.СписокВыбора.ЗагрузитьЗначения(МассивКлиентов);
		Объект.Клиент = МассивКлиентов[0];
	Иначе
		Объект.Клиент = ПредопределенноеЗначение("Справочник.Партнеры.ПустаяСсылка");
	КонецЕсли;
	ОповеститьОбИзменении(Объект.Клиент);
Показать
10. MiniGrad2014 15.09.21 09:58 Сейчас в теме
(9)
ОповеститьОбИзменении(Объект.Клиент);

У меня подобная проблема так и не решилась.
При выборе из списка в элементе формы выбранное значение отображается, после записи при открытии формы элемента справочника с заполненным реквизитом этот элемент формы пустой.
При открытии формы элемента справочника список выбора элемента формы программно заполняю.
После вызова формы РазблокированиеРеквизитов - значение начинает отображаться, даже если в этом окне отказался от открытия реквизитов для редактирования (как будто после снятия режима БлокироватьОкноВладельца окном РазблокированиеРеквизитов произошло какое-то перезаполнение данных).
Что не так делаю? Подскажите, пожалуйста
11. FatPanzer 15.09.21 10:11 Сейчас в теме
(10)
Что не так делаю? Подскажите, пожалуйста
Список выбора для элемента должен быть сформирован ДО открытия формы.
12. MiniGrad2014 16.09.21 14:24 Сейчас в теме
(11) Спасибо!!!
Разместил формирование в само тело модуля формы элемента и всё заработало.
Может можно было в обработку какого-нибудь события поместить или нет?
14. user1490444 23.05.24 09:52 Сейчас в теме
Тема старая, но может кому-то поможет. Почитав 1С ИТС увидел, в описании, что
Поскольку поле ввода и поле выбора связаны с одним и тем же реквизитом формы, при изменении значения в поле ввода оно устанавливается в поле выбора и наоборот.
, а в нашем случае поле выбора и поле вводе это одно поле. Поэтому просто при открытии, после формирования списка выбора я подставил
Если ЗначениеЗаполнено(Объект.Реквизит) Тогда 
Объект.Реквизит = Объект.Реквизит; 
КонецЕсли
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот