База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как установить отбор в динамическом списке 1С программно?
- В этой теме 1 ответ, 2 участника, последнее обновление 2 минуты назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
7 августа 2026 в 14:45 #38343
Как програмно установить значение отбора в динамическом списке?
-
7 августа 2026 в 14:45 #38344
Чтобы программно установить значение отбора в динамическом списке на управляемой форме 1С, нужно работать с объектом динамического списка и его параметрами отбора. Основной способ — через объект Параметры динамического списка и метод УстановитьЗначениеПараметра().
Пример пошагово:
1. В форме должен быть элемент типа «Динамический список» (DynamicList), у которого в настройках стоит «Произвольный запрос» с параметрами отбора.
2. В событии формы на сервере (обычно ПриСозданииНаСервере или ПриОткрытииНаСервере) пишем код, который задаёт значение параметра отбора.
3. Для этого обращаемся к элементу динамического списка, к его свойству Параметры и вызываем метод УстановитьЗначениеПараметра(«ИмяПараметра», Значение).
4. После установки параметра нужно обновить список, чтобы отбор применился.
Пример кода:
|&НаСервере
|Процедура ПриСозданииНаСервере(Отказ)
| // Устанавливаем значение параметра отбора «Клиент»
| Элементы.ДинамическийСписок.Параметры.УстановитьЗначениеПараметра(«Клиент», Справочники.Клиенты.НайтиПоНаименованию(«Иванов Иван»));
|КонецПроцедурыЕсли нужно изменить отбор в процессе работы формы (например, по нажатию кнопки), то:
|&НаКлиенте
|Процедура КнопкаУстановитьОтборНажатие(Кнопка)
| // Передаём значение параметра на сервер
| Знач Клиент = Справочники.Клиенты.НайтиПоНаименованию(«Петров Петр»);
| // Вызываем серверную процедуру для установки параметра
| ВыполнитьОбработку(«УстановитьОтбор», Клиент);
| // Обновляем динамический список
| Элементы.ДинамическийСписок.Обновить();
|КонецПроцедуры
|
|&НаСервере
|Процедура УстановитьОтбор(Клиент)
| Элементы.ДинамическийСписок.Параметры.УстановитьЗначениеПараметра(«Клиент», Клиент);
|КонецПроцедурыЕсли в запросе динамического списка в условии отбора используется параметр с именем «Клиент», то при установке этого параметра динамический список отфильтрует данные по этому значению.
—
Если нужно программно установить отбор не через параметры, а через объект ЭлементыОтбораКомпоновкиДанных, то можно так:
|&НаСервере
|Процедура ПриСозданииНаСервере(Отказ)
| Отбор = Элементы.ДинамическийСписок.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Отбор;
| Если Отбор.Свойство(«Клиент») Тогда
| Отбор.Клиент.Значение = Справочники.Клиенты.НайтиПоНаименованию(«Иванов Иван»);
| Отбор.Клиент.ТипСравнения = ТипСравненияКомпоновкиДанных.Равно;
| КонецЕсли;
|КонецПроцедурыНо чаще и удобнее работать именно с параметрами динамического списка.
—
Рекомендую посмотреть здесь, там подробно про параметры динамического списка и отборы:
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.