Есть форма записи РС в которой есть поле типа "Справочник.Помещения". По задаче нужно организовать выбор из списка в это поле. С этим проблем не возникло. Поставил флаг "РежимВыбораИзСписка". В обработчике "НачалоВыбора" написал заполнение списка выбора. Все работает. Данные из списка выбираются, при записи сохраняются в РС.
Позже заметил такой момент. Если открыть существующую запись РС с заполненными данными в этом поле, то данные на форме не отображаются. Влияет именно флаг "РежимВыбораИзСписка". Если его убрать то при открытии формы данные отображаются.
(2) dj_serega, 8.3.5.1460 Режим совместимости не используется.
(3) vugluskr74, похоже так и есть. Я вчера тоже об этом думал, только под конец дня уже туго соображал.
Тогда связанный вопрос. Дело в том, что на форме 2 поля этого справочника. Справочник иерархический. и во второе поле должны попадать элементы родитель которого в 1-м поле. Поэтому в ПриСозданииНаСервере я перенести заполнение списка не могу.
Раньше открывал формы выбора с отбором. Все было хорошо. Но заказчик просит "список".
Установил быстрый выбор "Да". Установил отбор по реквизиту "ВидПомещения". В этой форме нужно выбрать только предопределенные элементы. Не получается установить отбор по предопределенным. Если убрать БыстрыйВыбор то оба отбора срабатывают и открывается обычная форма выбора. Если ставим быстрый выбор - "Да" тогда ругается "Неправильное условие отбора".
Тип: Булево.
Свойство регулирует работу поля ввода. Если значение свойства - Истина, то поле ввода работает как поле выбора и может хранить одно из значений произвольного типа, имеющихся в списке.
Обратите внимание: "имеющихся в списке", а ваш список пустой и заполняется только при начале выбора. Перенесите заполнение списка в обработчик ПриСозданииНаСервере.
(3)Еще советую добавлять проверку на заполненность реквизита и наличие его текущего значения в списке выбора. Т.е условно вы выбрали организацию Х, а из списка выбора она по какой-то причине исчезла, и там остались организации Y и Z. В этом случае необходимо добавить организацию X в список после его полного заполнения, чтобы реквизит отображался как заполненный.
(1)"РежимВыбораИзСписка" у поля ввода очень полезная штука!
Расскажу как им пользоваться.
1. Само название режима предполагает, что значение в поле ввода должно попадать из списка значений. Список значений должен выпадать когда нажимаем кнопку выбора из списка в этом поле ввода. Значит в режиме конфигуратора для элемента формы «СписокВыбора» выставляем свойство «КнопкаСпискаВыбора» в истину.
2. Теперь нам необходимо создать список выбора, который будет ассоциирован с этим элементом формы. Поскольку у ПоляВвода нет свойства "СписокВыбора", поэтому создаем его программно в любом подходящем месте модуля формы, и "прикручиваем" его к ПолюВвода:
3. Запустим на исполнение нашу форму. Видим, что поле ввода отлично справляется с выбором значений из своего выпадающего списка.
Замечание1. При выборе значения из выпадающего списка значением элемента формы "ПолеВвода" становится значение выбранного элемента списка, а не то представление, которое отображается в выпадающем списке и, после выбора, в самом поле ввода.
Замечание 2(следствие из пред.) Если в свойстве "Данные" этого поля ввода прописать переменную, то после выбора значения из списка значением указанной переменной будет значение элемента списка. Переменную необходимо создавать в реквизитах формы с типом "Произвольный".
Для нашего примера создадим реквизит формы ЗначениеСписка. Тогда после выбора первого элемента значение реквизита будет число 1.
Замечание 3. При использовании поля ввода в таком качестве исчезает возможность ручного редактирования отображаемого в поле текста.
Всё очень просто!
Итак, если есть необходимость использовать именно поле ввода и именно в качестве поля выбора, то этот метод подходит. Особо ничего и кодировать не надо.
При вводе 1-ой буквы в поле выбора вылазит ошибка:
"Неправильное условие отбора"
Платформа 8.3.5.1119
Проявляется в режимах совместимости 8.3.3, 8.3.4 и Не использовать
Проверил на облегченной копии информацию - подтвердилось. При установке в режим совместимости 8.3.2 ошибка пропадает и отображается корректный список.
На боевой конфигурации режим совместимости поменять не получится. Будем решать вопрос по другому.
РежимВыбораИзСписка - глючное свойство. Аналогичную ситуацию я победил программной установкой режима выбора из списка в процедуре ПриСозданииНаСервере. Просто добавил строку типа
Элементы.МойЭлемент.РежимВыбораИзСписка = Истина;
Заметил ещё один глюк. Есть документ, в котором в палитре свойств элемента формы флажок РежимВыбораИзСписка установлен. При создании нового документа или элемента справочника, если в процедуре ПриСозданииНаСервере() перед этим присваивалось значение. То оно так же не отображается. При этот, в Объект.МойЭлемент это значение есть.
В настоящее время тоже сижу и бьюсь над подобным вопросом. В одном месте нашел решение, правда при выборе значения в выпадающем списке значение в поле формы не отображается. И как ее решить пока не знаю. Привожу код:
&НаСервере
Функция Наименование();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Подразделения.Наименование КАК Наименование,
| Подразделения.ЭтоГруппа,
| Подразделения.Родитель
|ИЗ
| Справочник.Подразделения КАК Подразделения
|ГДЕ
| Подразделения.ЭтоГруппа = Ложь
| И Подразделения.Родитель = &Родитель";
Запрос.УстановитьПараметр("Родитель", Справочники.Подразделения.НайтиПоНаименованию("Наименование"));
РезультатЗапроса = Запрос.Выполнить();
Список = Новый СписокЗначений;
Список.ЗагрузитьЗначения(РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Наименование"));
Возврат Список;
КонецФункции
&НаКлиенте
Процедура НаименованиеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Объект.Наименование=ВыбратьИзСписка(Наименование(), Элементы.Наименование);
КонецПроцедуры
У меня подобная проблема так и не решилась.
При выборе из списка в элементе формы выбранное значение отображается, после записи при открытии формы элемента справочника с заполненным реквизитом этот элемент формы пустой.
При открытии формы элемента справочника список выбора элемента формы программно заполняю.
После вызова формы РазблокированиеРеквизитов - значение начинает отображаться, даже если в этом окне отказался от открытия реквизитов для редактирования (как будто после снятия режима БлокироватьОкноВладельца окном РазблокированиеРеквизитов произошло какое-то перезаполнение данных).
Что не так делаю? Подскажите, пожалуйста
(11) Спасибо!!!
Разместил формирование в само тело модуля формы элемента и всё заработало.
Может можно было в обработку какого-нибудь события поместить или нет?
Тема старая, но может кому-то поможет. Почитав 1С ИТС увидел, в описании, что
Поскольку поле ввода и поле выбора связаны с одним и тем же реквизитом формы, при изменении значения в поле ввода оно устанавливается в поле выбора и наоборот.
, а в нашем случае поле выбора и поле вводе это одно поле. Поэтому просто при открытии, после формирования списка выбора я подставил
Если ЗначениеЗаполнено(Объект.Реквизит) Тогда
Объект.Реквизит = Объект.Реквизит;
КонецЕсли
(14) после норм языков - долго не мог понять, что за нафиг происходит.
были мысли похожие, но казались бредом.
но после этого совета - всё заработало.
жесть