Отбор в динамическом списке |
Я |
17.07.19 — 08:27
Уважаемые специалисты, посоветуйте пожалуйста, как найти в коде место, которое устанавливает отбор в динамическом списке? Конфигурация самописная, форма списка справочника номенклатуры, в ПриСозданииНаСервере() Список.Отбор — пустой, а там же в ПриОткрытии() — уже появляется одна строка отбора. Пробовал ловить через замер производительности — никаких посторонних вызовов с участием отбора. Глобальный поиск по названию поля отбора и проверка всех возможных мест, где его можно поменять — ничего не дал.
1 — 17.07.19 — 08:36
У какого то реквизита заполнены «Связи параметров выбора» ?
2 — 17.07.19 — 08:36
(0)А он точно программный, а не из настроек пользователя?
3 — 17.07.19 — 08:39
(0) В форме поставь курсор на список, смотри его свойства — отбор может быть выставлен там. Или пользовательский, как указано в (2).
4 — 17.07.19 — 08:42
(2) точно не настройка пользователя, потому что в Настроить список этот отбор не видно.
(3) Через Все действия-Настроить список в отборах пусто (а по факту он есть — список пустой).
5 — 17.07.19 — 08:43
(4) открой в режиме 1с-предприятие, кнопка Еще — стандартные настройки, помогает?
6 — 17.07.19 — 08:48
(5) Не помогло.
7 — 17.07.19 — 08:49
(4)А в конфигураторе в настройке формы списка?
8 — 17.07.19 — 08:51
(7) в конфигураторе, как и в режиме предприятия — в настройке списка отбор пустой. Он также пустой в ПриСозданииНаСервере(), а вот в ПриОткрытии() там появляется одна строка, и мне надо понять — откуда вообще она? Я конечно могу её программно очищать, но перед этим я очень хочу понять — как она вообще появилась?
9 — 17.07.19 — 08:54
(1) Если я правильно понял — эта штука («Связи параметров выбора») появляется у поля-справочника, а поле, по которому делается отбор — булево.
10 — 17.07.19 — 09:01
(9)Связь параметров выбора появляется у поля выбора. Список откуда открывается?
11 — 17.07.19 — 09:07
(10) список открывается автоматически из отчета на СКД (в отчете можно задать отбор по номенклатуре и для этого открывается форма Номенклатура.СписокВыбора. В самом отчёте СКД поля отбора генерируются автоматически, я на всякий случай поискал там по названию поля — ничего нет.
12 — 17.07.19 — 09:22
(11)В настройке схемы СКД у номенклатуры проверяй в полях набора данных -> Параметры редактирования и в Параметрах -> так же, Параметры редактирования.
13 — 17.07.19 — 09:41
Я нашёл, что где-то в отчёте на СКД происходит обращение к полю ДоступныйПараметрКомпоновкиДанных.ПолучитьПараметрыВыбора() — откуда и берётся несчастный отбор. Осталось понять, как он туда попал.
14 — 17.07.19 — 09:51
15 — 17.07.19 — 10:01
(14) там пусто, проверял в первую очередь.
16 — 17.07.19 — 10:04
(0) как открываешь форму списка?
17 — 17.07.19 — 10:06
(11) Прям строчку открытия формы покажи
18 — 17.07.19 — 10:12
(17) нет такой строки, форма списка открывается из отчета на СКД, на отчёте есть поле отбора, типа Справочник.Номенклатура.
Вот код, который гадит, но я понятия не имею, как туда попали эти данные, помогите люди добрые, зря я Хрусталёву не дочитал…
ПользовательскиеНастройкиКД = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки;
НастройкиКД = Отчет.КомпоновщикНастроек.Настройки;
ПользовательскаяНастройка = ПользовательскиеНастройкиКД.Элементы[3]; //для упрощения понимания
Идентификатор = ПользовательскаяНастройка.ИдентификаторПользовательскойНастройки;
ОбщаяНастройка = НастройкиКД.Отбор.Элементы[0];
ДоступнаяНастройка = НастройкиКД.ДоступныеПоляОтбора.Элементы[9];
ПлохойСписокСОтбором = ДоступнаяНастройка.ПолучитьПараметрыВыбора(); //как в этот список попадают данные?
19 — 17.07.19 — 10:14
Код выше можно сократить до:
НастройкиКД = Отчет.КомпоновщикНастроек.Настройки;
ДоступнаяНастройка = НастройкиКД.ДоступныеПоляОтбора.Элементы[9];
ПлохойСписокСОтбором = ДоступнаяНастройка.ПолучитьПараметрыВыбора();//как в этот список попадают данные?
20 — 17.07.19 — 10:42
(19)»Описание:
Получает параметры выбора, которые используются для выбора значения поля или параметра.
»
Пусто и в полях и в параметрах?
21 — 17.07.19 — 10:49
22 — 17.07.19 — 10:51
(20) а в параметрах где вообще можно поменять? Там только левое значение, правое, вид сравнения, режим отображения и представление (плюс показ в быстрых настройках)?
23 — 17.07.19 — 10:55
(19) ДоступнаяНастройка.Поле — это точно Номенклатура. Может сбилось уже и он берет параметры другого поля.
(22) В схеме закладка Параметры.
24 — 17.07.19 — 10:57
(23) в параметрах нет номенклатуры. Она есть в отборах.
25 — 17.07.19 — 11:01
(24) Ты зачем мне это пишешь? Спросил где посмотреть параметры выбора для параметров, я ответил.
ildary
26 — 17.07.19 — 11:02
(25) простите, неправильно вас понял.
1С: Предприятие 8.3.13 . Документация
Руководство разработчика
Глава 7 . Формы, Раздел 7.9.5
В данном разделе приведены примеры выполнения некоторых операций по работе с динамическим списком, размещенным в форме.
ПРИМЕЧАНИЕ. Примеры, приведенные ниже, не являются законченным. Они предназначены для демонстрации различных механизмов работы с динамическим списком.
7.9.5.1. Параметр запроса динамического списка
В данном разделе приведен пример установки параметра запроса динамического списка.
Предположим, что для динамического списка указан следующий запрос к данным:
ВЫБРАТЬ Товары.Код КАК Код, Товары.Наименование КАК Наименование, Товары.Артикул КАК Артикул, ТоварныеЗапасыОстатки.КоличествоОстаток КАК Количество, ЦеныТоваровСрезПоследних.Цена КАК Цена, Товары.ЭтоГруппа ИЗ Справочник.Товары КАК Товары ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварныеЗапасы.Остатки(, Склад = &Склад) КАК ТоварныеЗапасыОстатки ПО (ТоварныеЗапасыОстатки.Товар = Товары.Ссылка) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныТоваров.СрезПоследних(, ВидЦен = &ВидЦен) КАК ЦеныТоваровСрезПоследних ПО Товары.Ссылка = ЦеныТоваровСрезПоследних.Товар
Тогда для установки параметров данного запроса (в обработчике ПриСозданииНаСервере()) нужно указать параметры Склад и ВидЦен следующим образом.
// СписокТоваров - реквизит формы типа ДинамическийСписок // Параметры.Склад и Параметры.ВидЦен - параметры формы соответствующих типов &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) СписокТоваров.Параметры.УстановитьЗначениеПараметра("Склад", Параметры.Склад); СписокТоваров.Параметры.УстановитьЗначениеПараметра("ВидЦен", Параметры.ВидЦен); КонецПроцедуры
7.9.5.2. Отбор
В данном разделе приведены примеры установки и удаления отбора в динамическом списке.
Установить
Функция добавляет отбор в динамический список и возвращает созданный элемент отбора.
Функция ДобавитьОтбор(СписокОтборов, ИмяПоля, Значение, ВидСравнения = Неопределено, Использование = Истина) НовыйЭлемент = СписокОтборов.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовыйЭлемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля); НовыйЭлемент.ВидСравнения = ?(ВидСравнения = Неопределено, ВидСравненияКомпоновкиДанных.Равно, ВидСравнения); НовыйЭлемент.ПравоеЗначение = Значение; НовыйЭлемент.Использование = Использование; Возврат НовыйЭлемент; КонецФункции
Пример использования:
// ДинамическийСписок - реквизит формы типа "ДинамическийСписок" // В списке должна быть колонка "Контрагент" // // Выполняется установка отбора по полю "Контрагент", значение // отбора находится в переменной "КонтрагентСсылка", отбор включен, // условие отбора - равно. ДобавитьОтбор(ДинамическийСписок.КомпоновщикНастроек.ФиксированныеНастройки.Отбор, "Контрагент", КонтрагентСсылка);
Удалить
Процедура удаляет отбор динамического списка и возвращает результат удаления. Если имя поля с удаляемым отбором не указано, выполняется очистка списка отборов.
Функция УдалитьОтбор(СписокОтборов, ИмяПоля = "") Если ПустаяСтрока(ИмяПоля) Тогда СписокОтборов.Элементы.Очистить(); Возврат Истина; КонецЕсли; Поле = Новый ПолеКомпоновкиДанных(ИмяПоля); ОтборУдален = Ложь; Для каждого ЭлементОтбора Из СписокОтборов.Элементы Цикл Если ЭлементОтбора.Использование И ЭлементОтбора.ЛевоеЗначение = Поле Тогда СписокОтборов.Элементы.Удалить(ЭлементОтбора); ОтборУдален = Истина; КонецЕсли; КонецЦикла; Возврат ОтборУдален; КонецФункции
Пример использования:
// ДинамическийСписок - реквизит формы типа "ДинамическийСписок" // В списке должна быть колонка "Контрагент" // Выполняется удаление отбора по полю "Контрагент". Результат = УдалитьОтбор(ДинамическийСписок.КомпоновщикНастроек.ФиксированныеНастройки.Отбор, "Контрагент");
7.9.5.3. Группировка
В данном разделе приведены примеры установки и удаления группировки в динамическом списке.
Установка
Функция добавляет группировку в динамический список и возвращает созданный элемент группировки.
Функция ДобавитьГруппировку(СписокГруппировок, ИмяПоля, Использование = Истина, ТипГруппировки = Неопределено) Поле = Новый ПолеКомпоновкиДанных(ИмяПоля); НовыйЭлемент = СписокГруппировок.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); НовыйЭлемент.Использование = Использование; НовыйЭлемент.Поле = Поле; НовыйЭлемент.ТипГруппировки = ?(ТипГруппировки = Неопределено, ТипГруппировкиКомпоновкиДанных.Элементы, ТипГруппировки); Возврат НовыйЭлемент; КонецФункции
Пример использования:
// ДинамическийСписок - реквизит формы типа "ДинамическийСписок" // В списке должна быть колонка "Контрагент" // // Выполняется создание группировки по полю "Контрагент", созданная // группировка будет использоваться, тип группировки - только элементы Группировка = Список.КомпоновщикНастроек.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ДобавитьГруппировку(Группировка.ПоляГруппировки, "Контрагент");
Удаление
Процедура удаляет группировку динамического списка и возвращает результат удаления. Если имя поля с удаляемой группировкой не указано, выполняется очистка списка группировок.
Функция УдалитьГруппировку(СписокГруппировок, ИмяПоля = "") Если ПустаяСтрока(ИмяПоля) Тогда СписокГруппировок.Элементы.Очистить(); Возврат Истина; КонецЕсли; Поле = Новый ПолеКомпоновкиДанных(ИмяПоля); ГруппировкаУдалена = Ложь; МассивЭлементовДляУдаления = Новый Массив; Для каждого ЭлементГруппировки из СписокГруппировок.Элементы Цикл Если ЭлементГруппировки.Поле = Поле тогда МассивЭлементовДляУдаления.Добавить(ЭлементГруппировки); КонецЕсли; КонецЦикла; Для каждого УдаляемыйЭлемент из МассивЭлементовДляУдаления Цикл СписокГруппировок.Элементы.Удалить(УдаляемыйЭлемент); ГруппировкаУдалена = Истина; КонецЦикла; Возврат ГруппировкаУдалена; КонецФункции
Пример использования:
// ДинамическийСписок - реквизит формы типа "ДинамическийСписок" // // Выполняется удаление всех группировок в динамическом списке Результат = УдалитьГруппировку(ДинамическийСписок.КомпоновщикНастроек.ФиксированныеНастройки.Группировка);
7.9.5.4. Порядок (сортировка)
В данном разделе приведены примеры установки и удаления упорядочивания динамического списка.
Установка
Функция добавляет поле сортировки в динамический список и возвращает созданный элемент порядка.
Функция ДобавитьПорядок(СписокПорядков, ИмяПоля, Использование = Истина, ТипУпорядочивания = Неопределено) Поле = Новый ПолеКомпоновкиДанных(Поле); НовыйЭлемент = СписокПорядков.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); НовыйЭлемент.Использование = Использование; НовыйЭлемент.Поле = Поле; НовыйЭлемент.ТипУпорядочивания = ?(ТипУпорядочивания = Неопределено, НаправлениеСортировкиКомпоновкиДанных.Возр, ТипУпорядочивания); Возврат НовыйЭлемент; КонецФункции
Пример использования:
// ДинамическийСписок - реквизит формы типа "ДинамическийСписок" // В списке должна быть колонка "Наименование" // // Выполняется установка сортировки по полю "Наименование", // направление сортировки - по убыванию, сортировка используется ДобавитьПорядок(ДинамическийСписок.КомпоновщикНастроек.Настройки.Порядок, "Наименование", Истина, НаправлениеСортировкиКомпоновкиДанных.Убыв);
Удаление
Процедура удаляет сортировку динамического списка и возвращает результат удаления. Если имя поля упорядочивания не указано, выполняется очистка списка упорядочивания.
&НаКлиенте Функция УдалитьПорядок(СписокПорядков, ИмяПоля = "") Если ПустаяСтрока(ИмяПоля) Тогда СписокПорядков.Элементы.Очистить(); Возврат Истина; КонецЕсли; Поле = Новый ПолеКомпоновкиДанных(ИмяПоля); ПорядокУдален = Ложь; МассивЭлементовДляУдаления = Новый Массив; Для каждого ЭлементПорядка из СписокПорядков.Элементы Цикл Если ЭлементПорядка.Поле = Поле тогда МассивЭлементовДляУдаления.Добавить(ЭлементПорядка); КонецЕсли; КонецЦикла; Для каждого УдаляемыйЭлемент из МассивЭлементовДляУдаления Цикл СписокПорядков.Элементы.Удалить(УдаляемыйЭлемент); ПорядокУдален = Истина; КонецЦикла; Возврат ПорядокУдален; КонецФункции
Пример использования:
// ДинамическийСписок - реквизит формы типа "ДинамическийСписок" // // Выполняется удаление (не отключение) порядка по полю "Наименование" Результат = УдалитьПорядок(ДинамическийСписок.КомпоновщикНастроек.ФиксированныеНастройки.Порядок, "Наименование");
7.9.5.5. Условное оформление
В данном разделе приведены примеры задания условного оформления динамического списка. В условном оформлении используется динамический список Список, в котором есть поля Организация и Сумма (типа Число). В примере задаются три элемента условного оформления:
● если значение поля Сумма меньше 500, то текст полей Организация и Сумма оформляется красным цветом;
● если значение поля Сумма больше 500, но меньше 10 000, то для всех полей строки текст оформляется синим цветом;
● если значение поля Сумма больше 10 000, то текст полей Организация и Сумма оформляется зеленым цветом.
Также в примере используется функция установки отбора (см. здесь).
Функция УстановитьУсловноеОформление(СписокОформления, ИменаОформляемыхПолей, СтруктураОформление, Использование = Истина) Экспорт НовыйЭлемент = СписокОформления.Элементы.Добавить(); НовыйЭлемент.Использование = Использование; // Зададим оформляемые поля, заданные массивом с именами полей Для каждого ИмяПоля Из ИменаОформляемыхПолей Цикл ОформляемоеПоле = НовыйЭлемент.Поля.Элементы.Добавить(); ОформляемоеПоле.Использование = Истина; ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяПоля); КонецЦикла; // Зададим оформление, заданное структурой, // в которой - Ключ: имя параметра оформления, // а Значение - значение параметра оформления Для каждого ЭлементОформления Из СтруктураОформление Цикл НовыйЭлемент.Оформление.УстановитьЗначениеПараметра(ЭлементОформления.Ключ, ЭлементОформления.Значение); КонецЦикла; Возврат НовыйЭлемент; КонецФункции
Пример задания условного оформления:
ЭлементыУсловногоОформления = Список.КомпоновщикНастроек.ФиксированныеНастройки.УсловноеОформление; ОформляемыеПоля = Новый Массив; ОформляемыеПоля.Добавить("Сумма"); ОформляемыеПоля.Добавить("Организация"); // ***** Установка красного цвета для суммы менее 500 Оформление = Новый Структура; Оформление.Вставить("ЦветТекста", Новый Цвет(128,0,0)); НовыйЭлемент = УстановитьУсловноеОформление(ЭлементыУсловногоОформления, ОформляемыеПоля, Оформление); // Зададим условие оформления: Сумма < 500 ДобавитьОтбор(НовыйЭлемент.Отбор, "Сумма", 500, ВидСравненияКомпоновкиДанных.Меньше); // ***** Установка зеленого цвета для суммы более 10 000 Оформление = Новый Структура; Оформление.Вставить("ЦветТекста", Новый Цвет(0,128,0)); НовыйЭлемент = УстановитьУсловноеОформление(ЭлементыУсловногоОформления, ОформляемыеПоля, Оформление); Зададим условие оформления: Сумма > 10 000 ДобавитьОтбор(НовыйЭлемент.Отбор, "Сумма", 10000, ВидСравненияКомпоновкиДанных.Больше); // установка синего цвета, если сумма в интервале от 500 до 10 000 Оформление = Новый Структура; Оформление.Вставить("ЦветТекста", Новый Цвет(0,0,128)); // Передача пустого массива в качестве списка оформляемых полей // означает оформление всех полей строки НовыйЭлемент = УстановитьУсловноеОформление(ЭлементыУсловногоОформления, Новый Массив, Оформление); // Cоздадим группу условий "И" ГруппаОтборов = НовыйЭлемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтборов.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; // Зададим условие оформления: Сумма > 500 И Сумма < 10 000 ДобавитьОтбор(ГруппаОтборов, "Сумма", 500, ВидСравненияКомпоновкиДанных.Больше); ДобавитьОтбор(ГруппаОтборов, "Сумма", 10000, ВидСравненияКомпоновкиДанных.Меньше);
Содержание:
1. Отборы в динамическом списке в пользовательском режиме 1С
2. Отборы в динамическом списке 1С 8.3 программно
1. Отборы в динамическом списке в пользовательском режиме 1С
Динамический список в 1С 8 – это реквизит управляемой формы, в котором отображаются данные, собранные посредством запроса к текущей конфигурации базы данных. Его чаще всего используют в формах списка справочников, документов, а также в обработках, где необходимо вывести массив данных в 1С построчно в виде таблицы. Помимо отборов в таком списке есть возможность указать условное оформление данных, группировки данных и порядок сортировки.
Любой пользователь может добавить необходимые ему отборы в любой форме, где используется динамический список в 1С 8. Фильтр применяется по любому доступному к выбору полю. Чтобы выполнить это действие, нужно перейти по кнопке «Еще» (в правом верхнем углу формы) – «Настроить список»:
Документы продажи: накладная в 1С 8
на вкладку отбор в 1С 8:
Отбор в 1С 8
Здесь из левой колонки пользователю нужно перенести вправо те поля, по которым ему требуется отфильтровать данные. Также обязательно нужно установить флажок в первой колонке, и указать значение своего фильтра. После выбора нужных полей эта информация будет отображаться на первой вкладке формы настройки списка в 1С:
Настройка списка в 1С
Установленный флажок указывает, используется ли в данный момент этот отбор. Если флажок отключить, то действие выбранного фильтра прекращается до его последующего включения.
Для того чтобы управлять отборами непосредственно из основной формы без помощи вспомогательной формы, их можно вывести в шапку первичной формы. Для этого в форме настройки списка в 1С после нажатия кнопок «Еще» – Свойства элемента Пользовательских настроек в 1С, откроется форма: Пользовательские настройки элемента в 1С:
Свойства элемента пользовательских настроек в 1С
Пользовательские настройки в 1С
В этом окне устанавливаем верхний флажок и в поле «Режим редактирования» выбираем значение «Быстрый доступ». Далее нажимаем кнопку «Ок» и завершаем настройки редактирования.
После этого мы видим, что выбранные фильтры доступны сразу в форме списка, где есть возможность их включать/отключать и менять значение:
Накладные в 1С 8
2. Отборы в динамическом списке 1С 8 программно
Теперь рассмотрим возможности программной установки отборов в динамическом списке в 1С 8.
В типовых конфигурациях 8.3 для этих целей используют процедуры и функции общего модуля ОбщегоНазначенияКлиентСервер. Доступ к этому модулю будет как на стороне клиента, так и на стороне сервера. В этом модуле содержаться экспортные процедуры в 1С и функции, с помощью которых выполняется добавление, создание, изменение, установка, поиск или удаление элементов/группы отбора динамического списка в 1С 8:
— НайтиЭлементыИГруппыОтбора;
— СоздатьГруппуЭлементовОтбора;
— ДобавитьЭлементКомпоновки;
— ИзменитьЭлементыОтбора;
— УдалитьЭлементыГруппыОтбора;
— УстановитьЭлементОтбора;
— УстановитьЭлементОтбораДинамическогоСписка;
— УдалитьЭлементыГруппыОтбораДинамическогоСписка;
Пример использования процедур этого модуля:
Функции общего модуля
Здесь идет установка фильтров по полям «Менеджер», «Статус» и «Вариант оформления» в форме списка документа: Реализация товаров и услуг в 1С.
Реализация товаров и услуг в 1С
В этом месте идет установка фильтра по полю периода в динамическом списке в 1С 8 на форме обработки.
Другие примеры использования процедур и функций по работе с отбором динамического списка в 1С 8 модуля ОбщегоНазначенияКлиентСервер можно найти в типовых конфигурациях 1С 8.3 и применять их в своих доработках, так как хорошим тоном программирования считается использование именно типовых процедур и функций, а не самостоятельно написанных.
Специалист компании «Кодерлайн»
Дарья Губернаторова
+2
1С 8.3 : Динамический список ~ отбор в динамическом списке программно
Для установки отбора в динамическом списке используется свойство Отбор.
Добавление нового элемента отбора осуществляется следующим образом:
Код 1C v 8.2 УП
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Для того чтобы новый отбор начал работать необходимо установить у элемента отбора свойства ЛевоеЗначение, ВидСравнения и ПравоеЗначение, а также установить свойство Использование в Истина.
Код 1C v 8.2 УП
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Поле1");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = Значение1;
Кроме простых условий в отборе возможно создание условий по нескольким полям. При чём как по условию «И», так и по условиям «Или» и «Не». Для данной операции используется специальный тип данных ГруппаЭлементовОтбораКомпоновкиДанных.
Код 1C v 8.2 УП
ГруппаОтбора = Список.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Родитель = ГруппаОтбора;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Поле1");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = Значение1;
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Родитель = ГруппаОтбора;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Поле2");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = Значение2;
Программный отбор в динамических списках
Наряду с возможностью интерактивной установки отбора в динамических списках в 1С Предприятие 8 есть возможность программно устанавливать отбор. Для этого используется свойство Отбор.
Добавление нового элемента отбора осуществляется следующим образом:
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
Для того, чтобы новый отбор начал работать, необходимо установить у элемента отбора свойства ЛевоеЗначение, ВидСравнения и ПравоеЗначение, а также установить свойству Использование значение Истина.
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«Поле1»);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = Значение1;
Кроме простых условий в отборе возможно задавать несколько условий. При чем использовать их можно как по условию И, так и по условиям Или и Не. Для этого используется специальный тип данных ГруппаЭлементовОтбораКомпоновкиДанных.
ГруппаОтбора = Список.Отбор.Элементы.Добавить(Тип(«ГруппаЭлементовОтбораКомпоновкиДанных»));
ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
//далее добавляем первое условие отбора
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ЭлементОтбора.Родитель = ГруппаОтбора;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«Поле1»);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = Значение1;
//далее добавляем второе условие отбора. У нас вид соединения: или 1 условие или 2 условие
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ЭлементОтбора.Родитель = ГруппаОтбора;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«Поле2»);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = Значение2;
На уроках нашего курса обучения программированию в среде 1С:Предприятие 8.2 мы обязательно рассмотрим на практике использование программного отбора в динамическом списке.
Количество просмотров: 119663