1С отборы в форме выбора
Форма выбора открывается при нажатии на кнопку выбора у элемента формы. Если требуется наложить отборы на выбираемые значения или открыть другую форму, то необходимо использовать событие элемента формы НачалоВыбора.
Процедура для обычного приложения
Процедуры для управляемого приложения
Настройка отборов с использованием объекта НастройкиКомпоновкиДанных. Есть возможность задать вид сравнения, доступность элементов отбора для редактирования и т.д.
Настройка отборов с использованием структуры. Это более простой вариант открытия формы выбора с установленными отборами. В этом варианте некоторые настройки недоступны.
Комментарии (0)
Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться
Как программно открыть форму выбора с отбором?
Для открытия формы выбора (справочника, документа и т.п.) необходимо воспользоваться параметрами открываемой формы.
Обязательным условием является наличие в открываемой форме динамического списка, который назначен основным реквизитом формы. В качестве полей отбора можно воспользоваться любым полем, настроенным в динамическом списке.
Давайте рассмотрим работу механизма на примере: в документе «Поступление товаров» при выборе контрагента необходимо выбирать только поставщиков (отбор будем производить по реквизиту Поставщик типа Булево справочника «Контрагенты»).
Для начала, проверим наличие поля отбора «Поставщик» в настройках отбора динамического списка. Для этого откроем форму выбора справочника «Контрагенты» и перейдем к настройкам динамического списка:
Мы видим, что поле Поставщик есть среди полей отбора. Значит, наш отбор работать будет (на самом деле, мы можем добавить дополнительные поля в динамический список и использовать их для отбора):
Теперь нам осталось написать только код процедуры, который будет вызывать форму выбора:
Как видите, ничего сложного нет: мы создаем структуру, имитирующую отбор (ключ структуры — имя поля отбора, а значение — значение отбора), и включаем его в параметры открываемой формы.
1С 8.3 Открываем форму выбора с отбором — Программист 1С Минск. Автоматизация бизнеса.

Отбор = НастройкКД . Отбор . Элементы . Добавить ( Тип ( «ЭлементОтбораКомпоновкиДанных» ));
Отбор . ЛевоеЗначение = Новый ПолеКомпоновкиДанных ( «Ссылка» );
Отбор . ВидСравнения = ВидСравненияКомпоновкиДанных . ВСписке ;
Отбор . ПравоеЗначение = ПолучитьСписокЗначенийНаСервере ( Элементы . ИмяТаблЧасти . ТекущиеДанные . Реквизит1 );
Отбор . Использование = Истина;
Отбор . РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных . Недоступный ;
ПарФормы = Новый Структура ;
ПарФормы . Вставить ( «ФиксированныеНастройки» , НастройкКД );
ОткрытьФорму ( «Справочник.Контрагенты.ФормаВыбора» , ПарФормы , Элемент );
&НаСервере
Функция ПолучитьСписокЗначенийНаСервере ( РеквизитТЧ )
// Пишем нужный запрос с отбором по реквизиту табличной части
СписокОтбора = Новый СписокЗначений ;
Запрос = Новый Запрос ;
Запрос . Текст = «ВЫБРАТЬ
| Страны.Ссылка
|ИЗ
| Справочник.Страны КАК Страны
|ГДЕ
| Страны.ЧастьСвета = &Европа» ;
Запрос . УстановитьПараметр ( «Европа» , РеквизитТЧ );
Выборка = Запрос . Выполнить (). Выбрать ();
Пока Выборка . Следующий () Цикл
СписокОтбора . Добавить ( Выборка . Ссылка );
КонецЦикла;
Как открыть форму выбора с определенным отбором в 1С 8.3 ?
Часто требуется дополнить условия выбора объекта на форме. Для этого существует обработчик события «НачалоВыбора». В примере приведен случай когда при выборе договора нужен отбор по реквизиту Контрагент, заданного на форме. Для элемента управления «Договор» формируем обработчик события «ДоговорНачалоВыбора», в котором пишем следующий код:
&НаКлиенте
Процедура ДоговорНачалоВыбора ( Элемент , ДанныеВыбора , СтандартнаяОбработка )
СтандартнаяОбработка = Ложь;
ЗначениеОтбора = Новый Структура ( «Контрагент» , Объект . Контрагент );
ПараметрыВыбора = Новый Структура ( «Отбор» , ЗначениеОтбора );
ОткрытьФорму ( «Справочник.ДоговорыКонтрагентов.ФормаВыбора» , ПараметрыВыбора , Элемент );