2025-05-14 08:57:53 +05:00

107 lines
4.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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