--- title: ОбработкаПолученияДанныхВыбора --- ## 📌 Назначение Обработчик `ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)` позволяет: - Влиять на формирование списка выбора. - Модифицировать параметры отбора. - Полностью формировать список выбора вручную. --- ## 🔧 Параметры обработчика - `ДанныеВыбора`: переменная для возврата кастомного списка. - `Параметры`: структура параметров, включая отборы и строку поиска. - `СтандартнаяОбработка`: - `Истина`: платформа формирует список выбора. - `Ложь`: список задаётся вручную через `ДанныеВыбора`. --- ## 🔹 Пример 1: Модификация параметров отбора **Задача:** Выводить товары только от указанного поставщика и не услуги. ### Решение: 1. В `Параметры.Отбор` добавить: ```1C Параметры.Отбор.Вставить("ВидТовара", Перечисления.ВидыТоваров.Товар); ``` 2. Оставить `СтандартнаяОбработка = Истина`. --- ## 🔹 Пример 2: Полное переопределение — простой список **Задача:** Предлагать склады, не являющиеся розничными. ### Пример кода: ```1C СтандартнаяОбработка = Ложь; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ Склады.Ссылка ИЗ Справочник.Склады КАК Склады ГДЕ Склады.Розничный = ЛОЖЬ И Склады.Наименование ПОДОБНО &СтрокаПоиска"; Запрос.УстановитьПараметр("СтрокаПоиска", "%" + Параметры.СтрокаПоиска + "%"); Результат = Запрос.Выполнить(); Список = Новый СписокЗначений; Пока Результат.Выбрать().Следующий() Цикл Список.Добавить(Выборка.Ссылка); КонецЦикла; ДанныеВыбора = Список; ``` --- ## 🔹 Пример 3: Полное переопределение — сложный список **Задача:** Выводить поставщиков с пометкой удаления и предупреждением о ненадёжности. ### Пример кода: ```1C СтандартнаяОбработка = Ложь; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ Поставщики.Ссылка, Поставщики.ПометкаУдаления, Поставщики.Ненадежный ИЗ Справочник.Поставщики КАК Поставщики ГДЕ Поставщики.Наименование ПОДОБНО &СтрокаПоиска"; Запрос.УстановитьПараметр("СтрокаПоиска", "%" + Параметры.СтрокаПоиска + "%"); Результат = Запрос.Выполнить(); Список = Новый СписокЗначений; Пока Результат.Выбрать().Следующий() Цикл Структура = Новый Структура; Структура.Вставить("Значение", Выборка.Ссылка); Структура.Вставить("ПометкаУдаления", Выборка.ПометкаУдаления); Если Выборка.Ненадежный Тогда Структура.Вставить("Предупреждение", "Это ненадежный поставщик..."); КонецЕсли; Список.Добавить(Структура); КонецЦикла; ДанныеВыбора = Список; ``` --- ## ⚠️ Особенности производительности Обработчик вызывается: - При автоподборе. - При потере фокуса поля ввода. - При быстром выборе. **Рекомендация:** тщательно оптимизировать запросы и код обработчика.