Возникает на сервере перед стандартным формированием списка при вводе по строке, автоподборе текста и быстром выборе, а также при выполнении метода ПолучитьДанныеВыбора.
Синтаксис
ОбработкаПолученияДанныхВыбора(<ДанныеВыбора>, <Параметры>, <СтандартнаяОбработка>)Полное описание, параметры и ограничения
ПланВидовРасчетаМенеджер.<Имя плана видов расчета>.ОбработкаПолученияДанныхВыбора (ChartOfCalculationTypesManager.<Chart of calculation types name>.ChoiceDataGetProcessing)
ПланВидовРасчетаМенеджер.<Имя плана видов расчета> (ChartOfCalculationTypesManager.<Chart of calculation types name>)
ОбработкаПолученияДанныхВыбора (ChoiceDataGetProcessing)
Доступен, начиная с версии 8.2.
Синтаксис:
ОбработкаПолученияДанныхВыбора(<ДанныеВыбора>, <Параметры>, <СтандартнаяОбработка>)
Параметры:
<ДанныеВыбора>
Тип: СписокЗначений.
В обработчике можно сформировать и передать в этом параметре данные для выбора. При этом параметр <СтандартнаяОбработка> должен быть установлен в Ложь.
В элемент списка значений можно помещать не только конкретное значение, но и структуру.
Анализ значения на предмет того, является ли она структурой или просто значением, используется полем ввода формы клиентского приложения в случаях:
Выбора из списков, возвращаемых событиями поля ввода;
Выбора из списка в поле ввода, содержащегося в свойстве СписокВыбора.
В случае, если в значение элемента списка значений используется Структура, она должна иметь следующий состав свойств:
Значение (Value) – собственно значение (обязательный элемент структуры);
ПометкаУдаления (DeletionMark) – (Булево) содержит признак пометки значения на удаление. Если Истина, то при выборе такого элемента из списка значений выдаст стандартное предупреждение;
Предупреждение (Warning) – (Строка) содержит текст предупреждения, которое будет показано при выборе элемента из списка значений.
<Параметры>
Тип: Структура.
Содержит параметры выбора.
Их можно дополнительно настроить в обработчике события.
Структура, в которой обязательно должны содержаться следующие ключи:
СтрокаПоиска (SearchString) - строка, используемая при поиске данных, Неопределено - осуществляется быстрый выбор;
Отбор (Filter) - отбор, используемый при поиске данных;
ВыборГруппИЭлементов (ChoiceFoldersAndItems) - указывается использование групп и элементов (только для иерархических данных); тип ИспользованиеГруппИЭлементов; параметр может отсутствовать;
СпособПоискаСтроки (StringSearchMode) - указывается способ поиска при вводе по строке; тип СпособПоискаСтрокиПриВводеПоСтроке; параметр может отсутствовать;
ПолнотекстовыйПоиск (FullTextSearch) - указывается необходимость использования полнотекстового поиска при вводе по строке; тип - ПолнотекстовыйПоискПриВводеПоСтроке; параметр может отсутствовать.
<СтандартнаяОбработка>
Тип: Булево.
В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет.
Значение по умолчанию: Истина.
Описание:
Возникает на сервере перед стандартным формированием списка при вводе по строке, автоподборе текста и быстром выборе, а также при выполнении метода ПолучитьДанныеВыбора.
Доступность:
Сервер.
Замечание:
Безопасный режим на время исполнения данного обработчика будет отключен. Данное замечание не относится к обработчикам событий, расположенным в расширении конфигурации.
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Сформировать список выбора УчебныеВидыРасчета
Список формируется из собственных сохранённых ссылок либо настоящих значений своего перечисления. Подпись и выбираемое значение хранятся раздельно.
Где и как запускать
Модуль менеджера собственного объекта, серверный платформенный обработчик. Проверочный код отдельно выполняется на сервере своей учебной базы.
Подготовка
Работайте только в собственной пустой учебной конфигурации. В Конфигураторе создайте ПланВидовРасчета УчебныеВидыРасчета; не добавляйте эти учебные объекты в рабочую базу.
Код — строковый длиной 10, наименование длиной 100. Для справочника, плана обмена и плана видов характеристик включите автонумерацию. Для счетов и видов расчёта код назначается явно в примере.
Для плана видов расчёта не включайте зависимость от базового периода и действие по периоду. Регистры расчёта в этом уроке не нужны.
Добавьте реквизиты Комментарий (Строка 100), Лимит (Число 15.2 с разрешённым отрицательным знаком), ЗапретУдаления (Булево). Не делайте их автоматически обязательными: дополнительные правила описаны отдельными обработчиками.
Основной обработчик разместите в модуле менеджера УчебныеВидыРасчета, без клиентских директив. Он вызывается платформой; его не надо вызывать вручную.
Обновите учебную базу и выполните проверочный блок в теле серверной процедуры своей учебной обработки. Обязательные ключи Отбор и СтрокаПоиска передаются явно; Неопределено означает быстрый выбор, не текстовый поиск.
Обработчик переопределяет только показанный частный режим. Строковый поиск, иной состав отбора и явно запрошенный выбор групп остаются стандартными. Это не универсальный поисковый алгоритм и не настройка прав доступа.
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
Если Параметры.СтрокаПоиска <> Неопределено Или Параметры.Отбор.Количество() <> 1 Тогда
Возврат;
КонецЕсли;
Если Не Параметры.Отбор.Свойство("Комментарий", Комментарий) Или Комментарий <> "Учебный пример" Тогда
Возврат;
КонецЕсли;
Если Параметры.Свойство("ВыборГруппИЭлементов", РежимВыбора) И РежимВыбора <> ИспользованиеГруппИЭлементов.Элементы Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 20 Данные.Ссылка, ПРЕДСТАВЛЕНИЕ(Данные.Ссылка) КАК Подпись
|ИЗ ПланВидовРасчета.УчебныеВидыРасчета КАК Данные
|ГДЕ Данные.Комментарий = &Комментарий И НЕ Данные.ПометкаУдаления
|УПОРЯДОЧИТЬ ПО Подпись";
Запрос.УстановитьПараметр("Комментарий", Комментарий);
ДанныеВыбора = Новый СписокЗначений;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ДанныеВыбора.Добавить(Выборка.Ссылка, Выборка.Подпись);
КонецЦикла;
СтандартнаяОбработка = Ложь;
КонецПроцедурыСерверная процедура: собственный источник и настоящий вызов менеджера
Объект = ПланыВидовРасчета.УчебныеВидыРасчета.СоздатьВидРасчета();
Объект.Наименование = "Учебная карточка";
Объект.Код = Лев(Строка(Новый УникальныйИдентификатор), 8);
Объект.Лимит = 100;
Объект.Комментарий = "Учебный пример";
Объект.Записать();
Отбор = Новый Структура("Комментарий", "Учебный пример");
Параметры = Новый Структура("Отбор,СтрокаПоиска", Отбор, Неопределено);
Варианты = ПланыВидовРасчета.УчебныеВидыРасчета.ПолучитьДанныеВыбора(Параметры);
Для Каждого Вариант Из Варианты Цикл
Сообщить(Вариант.Представление + ": " + Строка(Вариант.Значение));
КонецЦикла;Разбор по шагам
Сначала проверяется узкий режим быстрого выбора и допустимый состав отбора. В остальных случаях обработчик возвращает управление, не отключая стандартную обработку.
СписокЗначений содержит реальные выбираемые значения и их представления; у ссылочных объектов значения читаются запросом из подготовленных своих данных.
Только после формирования списка СтандартнаяОбработка = Ложь запрещает повторное стандартное заполнение.
Как проверить результат
После подготовки сохранённого собственного объекта список содержит его ссылку и представление. Повторные запуски могут добавить новые свои карточки; список ограничен 20 строками, не обещает ровно одну.
Передайте непустую СтрокаПоиска или иной отбор: собственная ветка не выполняется. Результат стандартного поиска зависит от обычных настроек ввода по строке.
Ожидаемый результат
Реальный вызов ПолучитьДанныеВыбора запускает платформенный обработчик собственного менеджера.
На что обратить внимание
Не заменяйте ссылки строками наименований: представление не является идентификатором объекта.
Дополнительные условия отбора не отбрасываются молча: при отличающемся составе работает стандартная обработка.
Создание и запись учебных объектов показаны в подготовке / дополнительном коде и не выполняются браузером справочника.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.