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