Добавить отбор в динамический список программно 1с

Обновлено: 07.07.2024

Как предоставить возможность быстрого отбора по нескольким полям в списке?

В 1С Предприятии 8.2 формы списка объектов конфигурации построены с помощью динамического списка. Пользователь может самостоятельно задать произвольные отборы в любом списке.

Однако зачастую заранее известно, что в конкретном списке будут часто использоваться отборы лишь по нескольким конкретным полям. И необходимо предоставить возможность простого и быстрого ввода требуемых значений и отбора по ним.

В этом случае можно использовать возможность установки отбора из встроенного языка. Чтобы установить отбор по нескольким реквизитам спиcка, нужно сначала создать группу элементов отбора, а затем добавить в нее собственно сами элементы отбора, которые будут связаны логическим союзом И , ИЛИ , НЕ в зависимости от типа группы.

Рассмотрим пример, когда список номенклатуры отбирается по реквизитам списка, соединенным логическим союзом И .

Допустим, в конфигурации существуют справочники Производители , Поставщики и справочник Номенклатура с реквизитами Производитель (типа СправочникСсылка.Производители ) и Поставщик (типа СправочникСсылка.Поставщики ). Требуется выводить список номенклатуры с отбором по этим реквизитам.

Создадим форму списка номенклатуры. Добавим в форму реквизиты Производитель (типа СправочникСсылка.Производители ) и Поставщик (типа СправочникСсылка.Поставщики ) и поместим их над таблицей списка. В эти поля мы будем вводить значения для отбора.

Создадим команду формы Отфильтровать и поместим ее в командную панель формы. При нажатии этой кнопки будет выполняться отбор в списке в зависимости от значений в полях формы Поставщик и Производитель .


В палитре свойств команды Отфильтровать нажмем кнопку открытия в поле Действие . Обработчик команды в модуле формы заполним следующим образом.

В этом обработчике сначала в цикле обходится коллекция всех элементов и групп элементов отбора для основного реквизита формы Список (типа ДинамическийСписок ). И удаляются все элементы отбора, созданные программно ( Представление = "Программный отбор" ). Затем создается группа элементов отбора ГруппаОтбора для реквизита Список с типом логической связи ГруппаИ . И если в полях Производитель и Поставщик содержится не пустая ссылка на справочник, то эти поля добавляются в элементы отбора, принадлежащие группе отбора.

В результате, задав в полях Производитель и Поставщик нужные значения, мы получим отбор в списке номенклатуры сразу по обоим реквизитам списка Производитель и Поставщик .


При этом закладка Отбор в окне Настройка списка ( Все действия - Настроить список. ) будет выглядеть следующим образом. В пользовательском режиме сюда можно добавлять другие элементы и группы отбора.


Если задано только одно из полей отбора, то отбор в списке будет выполняться только по одному реквизиту ( Производитель или Поставщик ).

Демонстрационный пример находится в каталоге 1CITS/EXE/FAQ/БыстрыйОтборПоНесколькимПолям.dt. Пример выполнен на версии платформы 8.2.9.356.

Для установки отбора в динамическом списке используется свойство Отбор.

Добавление нового элемента отбора осуществляется следующим образом:

Для того чтобы новый отбор начал работать необходимо установить у элемента отбора свойства ЛевоеЗначение, ВидСравнения и ПравоеЗначение, а также установить свойство Использование в Истина.

Кроме простых условий в отборе возможно создание условий по нескольким полям. При чём как по условию "И", так и по условиям "Или" и "Не". Для данной операции используется специальный тип данных ГруппаЭлементовОтбораКомпоновкиДанных.

Разместил: all4cf  Версии: | 8.2 УП | 8.3 |  Дата: 18.10.2015   Прочитано: 60995

Распечатать

Похожие FAQ

Как на управляемой форме разместить список регистра сведений с отбором?  18
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом " ДинамическийСписок" В поле " Основная табли Документ "Корректировка записей регистров" - Как программно создать и заполнить?  8
Документ «Корректировка записей регистров» в типовых конфигурациях 1С предназначен для ручной корректировки записей регистров накопления, зависимых регистров сведений и регистров бухгалтерии. Типичные ситуации, в которых может понадобиться документ « Документ "Операция" - Как программно создать и заполнить?  38
В бухгалтерских подсистемах типовых конфигураций есть всем известный документ «Операция». Бухгалтерам не приходится долго объяснять, как им пользоваться. Все по-бухгалтерски просто и лаконично: счет дебета, счет кредита, субконто, количество, сумма и Посмотреть все результаты поиска похожих

Еще в этой же категории

Как обновить динамический список или реквизит на форме клиента?  19
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Динамический список

Как на управляемой форме разместить список регистра сведений с отбором?  18
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом " ДинамическийСписок" В поле " Основная табли Как установить параметр динамического списка?  14
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма

Программное создание таблицы значений с условным оформлением  12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора

Заполнение списка значений в элементе поле выбора на форме  10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип - Произвольный, Использование - Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Посмотреть все в категории Работа с Формой (Диалог) и её элементами

Наряду с возможностью интерактивной установки отбора в динамических списках в 1С Предприятие 8 есть возможность программно устанавливать отбор. Для этого используется свойство Отбор.

Добавление нового элемента отбора осуществляется следующим образом:

ЭлементОтбора = Список . Отбор . Элементы . Добавить ( Тип ( "ЭлементОтбораКомпоновкиДанных" ));

Для того, чтобы новый отбор начал работать, необходимо установить у элемента отбора свойства ЛевоеЗначение , ВидСравнения и ПравоеЗначение , а также установить свойству Использование значение Истина .

ЭлементОтбора . ЛевоеЗначение = Новый ПолеКомпоновкиДанных ( "Поле1" );
ЭлементОтбора . ВидСравнения = ВидСравненияКомпоновкиДанных . Равно ;
ЭлементОтбора . Использование = Истина;
ЭлементОтбора . ПравоеЗначение = Значение1 ;

Кроме простых условий в отборе возможно задавать несколько условий. При чем использовать их можно как по условию И , так и по условиям Или и Не . Для этого используется специальный тип данных ГруппаЭлементовОтбораКомпоновкиДанных .

ГруппаОтбора = Список . Отбор . Элементы . Добавить ( Тип ( "ГруппаЭлементовОтбораКомпоновкиДанных" ));
ГруппаОтбора . ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных . ГруппаИЛИ ;

//далее добавляем первое условие отбора
ЭлементОтбора = Список . Отбор . Элементы . Добавить ( Тип ( "ЭлементОтбораКомпоновкиДанных" ));
ЭлементОтбора . Родитель = ГруппаОтбора ;
ЭлементОтбора . ЛевоеЗначение = Новый ПолеКомпоновкиДанных ( "Поле1" );
ЭлементОтбора . ВидСравнения = ВидСравненияКомпоновкиДанных . Меньше ;
ЭлементОтбора . Использование = Истина;
ЭлементОтбора . ПравоеЗначение = Значение1 ;

//далее добавляем второе условие отбора. У нас вид соединения: или 1 условие или 2 условие
ЭлементОтбора = Список . Отбор . Элементы . Добавить ( Тип ( "ЭлементОтбораКомпоновкиДанных" ));
ЭлементОтбора . Родитель = ГруппаОтбора ;
ЭлементОтбора . ЛевоеЗначение = Новый ПолеКомпоновкиДанных ( "Поле2" );
ЭлементОтбора . ВидСравнения = ВидСравненияКомпоновкиДанных . Больше ;
ЭлементОтбора . Использование = Истина;
ЭлементОтбора . ПравоеЗначение = Значение2 ;

На уроках нашего курса обучения программированию в среде 1С:Предприятие 8.2 мы обязательно рассмотрим на практике использование программного отбора в динамическом списке.



skype: live:di-sem

@programmist_1C

1С отборы на управляемой форме. 1С отбор в динамическом списке на форме.



Потребовалось нам в списке документов "ЗаказКлиента" сделать отбор. Например где у контрагента долг больше 10000р.

Реализуем это
Найдем форму "ФормаСпискаДокументов" документа "заказКлиента".


Откроем настройку списка.


Настроим отбор как показано на рисунке и укажем нужное представление отбора



Все, запускаем 1с и пользуемся нашим отбором.


Если же мы сами хотим выбирать по какому значению долга нам фильтровать то настраиваем отбор так:


и тогда мы сможем сами указывать сумму долга


Отбор на форме динамического списка программно.
Отбор является свойством динамического списка. Добавим в свойство отбора новый элемент:

Чтобы отбор заработал, нужно прописать параметры «ЛевоеЗначение», «ВидСравнения» и «ПравоеЗначение». Кроме того необходимо свойство «Использование» установить в «Истина».

Читайте также: