1С:Предприятие 8
Система программ

Не могу найти функцию Выбрать(), которая была в платформе 7.7 у документов, справочников и счетов

08.06.2012

Для того чтобы предоставить пользователю возможность интерактивного выбора некоторого значения, следует воспользоваться функцией ВвестиЗначение().

Например, для того чтобы выбрать элемент справочника Номенклатура, можно использовать следующий вариант вызова этой функции:

// Переменная, в которой будет сохранено выбранное пользователем значение.
Перем Справ;
ВвестиЗначение(Справ, "Текст подсказки", "СправочникСсылка.Номенклатура");

Если перед вызовом функции задать переменной Справ некоторое значение, то оно будет использовано в диалоге выбора как значение по умолчанию, на котором будет установлен курсор. В этом случае не требуется явного задания выбираемого типа - он будет определен по типу переменной, в которую принимается выбираемое значение:

&НаКлиенте
Процедура Пример(Команда)
   Справ = ПолучитьСсылкуНаЭлементСправочника();
   ВвестиЗначение(Справ);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьСсылкуНаЭлементСправочника()
   СсылкаНаЭлемент = Справочники.Номенклатура.НайтиПоКоду("000000001");
   Возврат СсылкаНаЭлемент;
КонецФункции

В качестве третьего параметра этой функции может быть передан объект ОписаниеТипов. Его использование позволяет выбирать значения составного типа:

// Переменная, в которой будет сохранено выбранное пользователем значение.
Перем Справ;
Массив = Новый Массив;
Массив.Добавить(Тип("СправочникСсылка.ФизическиеЛица"));
Массив.Добавить(Тип("СправочникСсылка.ЮридическиеЛица"));
НовоеОписание = Новый ОписаниеТипов(Массив);
ВвестиЗначение(Справ, ,НовоеОписание);

Аналогичные действия можно выполнить и без использования функции ВвестиЗначение(). В этом случае появляются разнообразные возможности по управлению формой выбора. Например, можно задать владельца при выборе из формы подчиненного справочника.

Приведенный ниже код исполняется в форме списка справочника Контрагенты. Ему подчинен справочник ДоговорыВзаиморасчетов. В качестве владельца указывается текущий контрагент, на котором установлен курсор в списке (Элементы.Список.ТекущаяСтрока):  

ЗначениеОтбора = Новый Структура("Владелец", Элементы.Список.ТекущаяСтрока); 

ПараметрыФормы = Новый Структура("Отбор", ЗначениеОтбора);

ВыбранныйДоговор = ОткрытьФормуМодально("Справочник.ДоговорыВзаиморасчетов.ФормаВыбора", ПараметрыФормы);