понедельник, 13 февраля 2017 г.

Переопределение события ввода по строке

Чтобы использовать ввод по строке в документах нужно на уровне справочника указать поля по которым будет использоваться ввод по строке. По умолчанию это предопределенные реквизиты "Наименование" и "Код".
1.jpg
Для переопределения события ввода по строке в модуле  менеджера документа (в котором собственно и будем творить бардак) создаем событие 

ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
В этом модуле можно определить новый массив для данных выбора
"Параметры" - Содержит параметры выбора.
Их можно дополнительно настроить в обработчике события.
Структура, в которой обязательно должны содержаться следующие ключи:
Пример дублирования типового поведения:
Листинг процедуры ОбработкаПолученияДанныхВыбора:
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
Запрос = Новый Запрос("ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Наименование ПОДОБНО &Наименование");
Запрос.УстановитьПараметр("Наименование", "%" + Параметры.СтрокаПоиска + "%");
// Конструкция "%" + Параметры.СтрокаПоиска + "%" показывает что в начале и в конце строки
//может быть неопределенное количество символов
Таблица = Запрос.Выполнить().Выгрузить();
//Выгружаем таблицу в массив чтобы потом загрузить ее в данные выбора
Массив = Таблица.ВыгрузитьКолонку("Ссылка");
ДанныеВыбора = Новый СписокЗначений; // Переопределяем данные выбора т.к. по
//умолчанию они имею тип - "неопределено"
ДанныеВыбора.ЗагрузитьЗначения(Массив);
СтандартнаяОбработка = Ложь; //ключевое вырожение отлючает стандартное выполнение
//и позволяет рабртать новому алгоритму
КонецПроцедуры
 
2.jpg

Комментариев нет:

Отправить комментарий