--- 
    title: ОбработкаПолученияДанныхВыбора
---

## 📌 Назначение
Обработчик `ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)` позволяет:
- Влиять на формирование списка выбора.
- Модифицировать параметры отбора.
- Полностью формировать список выбора вручную.

---

## 🔧 Параметры обработчика

- `ДанныеВыбора`: переменная для возврата кастомного списка.
- `Параметры`: структура параметров, включая отборы и строку поиска.
- `СтандартнаяОбработка`:
  - `Истина`: платформа формирует список выбора.
  - `Ложь`: список задаётся вручную через `ДанныеВыбора`.

---

## 🔹 Пример 1: Модификация параметров отбора

**Задача:** Выводить товары только от указанного поставщика и не услуги.

### Решение:
1. В `Параметры.Отбор` добавить:
```1C
Параметры.Отбор.Вставить("ВидТовара", Перечисления.ВидыТоваров.Товар);
```
2. Оставить `СтандартнаяОбработка = Истина`.

---

## 🔹 Пример 2: Полное переопределение — простой список

**Задача:** Предлагать склады, не являющиеся розничными.

### Пример кода:
```1C
СтандартнаяОбработка = Ложь;

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Склады.Ссылка ИЗ Справочник.Склады КАК Склады
               ГДЕ Склады.Розничный = ЛОЖЬ 
               И Склады.Наименование ПОДОБНО &СтрокаПоиска";

Запрос.УстановитьПараметр("СтрокаПоиска", "%" + Параметры.СтрокаПоиска + "%");

Результат = Запрос.Выполнить();
Список = Новый СписокЗначений;

Пока Результат.Выбрать().Следующий() Цикл
    Список.Добавить(Выборка.Ссылка);
КонецЦикла;

ДанныеВыбора = Список;
```

---

## 🔹 Пример 3: Полное переопределение — сложный список

**Задача:** Выводить поставщиков с пометкой удаления и предупреждением о ненадёжности.

### Пример кода:
```1C
СтандартнаяОбработка = Ложь;

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Поставщики.Ссылка, Поставщики.ПометкаУдаления, Поставщики.Ненадежный 
               ИЗ Справочник.Поставщики КАК Поставщики 
               ГДЕ Поставщики.Наименование ПОДОБНО &СтрокаПоиска";

Запрос.УстановитьПараметр("СтрокаПоиска", "%" + Параметры.СтрокаПоиска + "%");

Результат = Запрос.Выполнить();
Список = Новый СписокЗначений;

Пока Результат.Выбрать().Следующий() Цикл
    Структура = Новый Структура;
    Структура.Вставить("Значение", Выборка.Ссылка);
    Структура.Вставить("ПометкаУдаления", Выборка.ПометкаУдаления);

    Если Выборка.Ненадежный Тогда
        Структура.Вставить("Предупреждение", "Это ненадежный поставщик...");
    КонецЕсли;

    Список.Добавить(Структура);
КонецЦикла;

ДанныеВыбора = Список;
```

---

## ⚠️ Особенности производительности

Обработчик вызывается:
- При автоподборе.
- При потере фокуса поля ввода.
- При быстром выборе.

**Рекомендация:** тщательно оптимизировать запросы и код обработчика.

