Исходная задача: нужно выбрать автомобиль из списка автомобилей, но не из всего большого перечня имеющихся в справочнике автомобилей элементов, а из двух-трех десятков автомобилей, уже отобранных в список значений.
Для этого, необходимо открыть справочник с предустановленным отобором по списку значений. Исходный список значений имеется на форме обработки, по команде открытия другой формы этой же обработки нужно чтобы при выборе одного из реквизитов открываемой формы открывалась форма выбора справочника с уже определенным списком значений для выбора, а не все содержимое справочника, при этом выбор должен осуществляться не из списка выбора (с использованием свойства "СписокВыбора") а из "полноценного" перечня элементов справочника, чтобы пользователь мог видеть значения нескольких реквизитов элемента справочника и осуществлять удобный и осознанный выбор.
Последовательность реализации такая:
1. В исходной форме обработки в команде открытия другой формы обработки указываем:
ОткрытьФормуМодально("Обработка.ПрокатАвто.Форма.ФормаРедактированияСтатусаАвто", Новый Структура("СписокАвтомобилей", СписокАвтомобилей.ВыгрузитьЗначения()), ЭтаФорма);
Таким образом передаем в открываемую форму массив значений выгруженный из списка значений ("СписокАвтомобилей") расположенного на исходной форме обработки.
2. В открываемой форме обработки (куда передается список значений в виде массива) должны быть: реквизит формы с типом значения "СписокЗначений" и параметр с типом значения "Произвольный", при этом имя параметра должно быть таким как указано в параметрах открытия формы (в нашем примере это "СписокАвтомобилей").
3. В открываемой форме должен быть такой код:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СписокАвтомобилей = Неопределено;
Параметры.Свойство("СписокАвтомобилей", СписокАвтомобилей);
РеквизитСписокАвтомобилей.ЗагрузитьЗначения(СписокАвтомобилей);
КонецПроцедуры
&НаКлиенте
Процедура АвтомобильНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ФормаВыбора = Справочники.РеестрТС.ПолучитьФормуВыбора();
ФормаВыбора.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
ФормаВыбора.Отбор.Ссылка.Использование = Истина;
ФормаВыбора.Отбор.Ссылка.Значение = РеквизитСписокАвтомобилей;
ЭтотОбъект.Автомобиль = ФормаВыбора.ОткрытьМодально();
КонецПроцедуры
В процедуре "ПриСозданииНаСервере" мы получаем значения из параметра "СписокАвтомобилей" и загружаем их в реквизит "РеквизитСписокАвтомобилей" в момент открытия формы обработки.
В процедуре "АвтомобильНачалоВыбора" программно устанавливается требуемый вариант отбора и модально открывается форма выбора справочника с подстановкой выбранного значения в реквизит открытой формы обработки.