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