Как найти элемент отбора динамического списка

Отбор в динамическом списке

Я
   ildary

17.07.19 — 08:27

Уважаемые специалисты, посоветуйте пожалуйста, как найти в коде место, которое устанавливает отбор в динамическом списке? Конфигурация самописная, форма списка справочника номенклатуры, в ПриСозданииНаСервере() Список.Отбор — пустой, а там же в ПриОткрытии() — уже появляется одна строка отбора. Пробовал ловить через замер производительности — никаких посторонних вызовов с участием отбора. Глобальный поиск по названию поля отбора и проверка всех возможных мест, где его можно поменять — ничего не дал.

   Admin_Net_1C

1 — 17.07.19 — 08:36

У какого то реквизита заполнены «Связи параметров выбора» ?

   catena

2 — 17.07.19 — 08:36

(0)А он точно программный, а не из настроек пользователя?

   SleepyHead

3 — 17.07.19 — 08:39

(0) В форме поставь курсор на список, смотри его свойства — отбор может быть выставлен там. Или пользовательский, как указано в (2).

   ildary

4 — 17.07.19 — 08:42

(2) точно не настройка пользователя, потому что в Настроить список этот отбор не видно.

(3) Через Все действия-Настроить список в отборах пусто (а по факту он есть — список пустой).

   SleepyHead

5 — 17.07.19 — 08:43

(4) открой в режиме 1с-предприятие, кнопка Еще — стандартные настройки, помогает?

   ildary

6 — 17.07.19 — 08:48

(5) Не помогло.

   catena

7 — 17.07.19 — 08:49

(4)А в конфигураторе в настройке формы списка?

   ildary

8 — 17.07.19 — 08:51

(7) в конфигураторе, как и в режиме предприятия — в настройке списка отбор пустой. Он также пустой в ПриСозданииНаСервере(), а вот в ПриОткрытии() там появляется одна строка, и мне надо понять — откуда вообще она? Я конечно могу её программно очищать, но перед этим я очень хочу понять — как она вообще появилась?

   ildary

9 — 17.07.19 — 08:54

(1) Если я правильно понял — эта штука («Связи параметров выбора») появляется у поля-справочника, а поле, по которому делается отбор — булево.

   catena

10 — 17.07.19 — 09:01

(9)Связь параметров выбора появляется у поля выбора. Список откуда открывается?

   ildary

11 — 17.07.19 — 09:07

(10) список открывается автоматически из отчета на СКД (в отчете можно задать отбор по номенклатуре и для этого открывается форма Номенклатура.СписокВыбора. В самом отчёте СКД поля отбора генерируются автоматически, я на всякий случай поискал там по названию поля — ничего нет.

   catena

12 — 17.07.19 — 09:22

(11)В настройке схемы СКД у номенклатуры проверяй в полях набора данных -> Параметры редактирования и в Параметрах -> так же, Параметры редактирования.

   ildary

13 — 17.07.19 — 09:41

Я нашёл, что где-то в отчёте на СКД происходит обращение к полю ДоступныйПараметрКомпоновкиДанных.ПолучитьПараметрыВыбора() — откуда и берётся несчастный отбор. Осталось понять, как он туда попал.

   catena

14 — 17.07.19 — 09:51

   ildary

15 — 17.07.19 — 10:01

(14) там пусто, проверял в первую очередь.

   sqr4

16 — 17.07.19 — 10:04

(0) как открываешь форму списка?

   sqr4

17 — 17.07.19 — 10:06

(11) Прям строчку открытия формы покажи

   ildary

18 — 17.07.19 — 10:12

(17) нет такой строки, форма списка открывается из отчета на СКД, на отчёте есть поле отбора, типа Справочник.Номенклатура.

Вот код, который гадит, но я понятия не имею, как туда попали эти данные, помогите люди добрые, зря я Хрусталёву не дочитал…

ПользовательскиеНастройкиКД = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки;

НастройкиКД                 = Отчет.КомпоновщикНастроек.Настройки;

ПользовательскаяНастройка = ПользовательскиеНастройкиКД.Элементы[3]; //для упрощения понимания

Идентификатор = ПользовательскаяНастройка.ИдентификаторПользовательскойНастройки;

ОбщаяНастройка = НастройкиКД.Отбор.Элементы[0];

ДоступнаяНастройка = НастройкиКД.ДоступныеПоляОтбора.Элементы[9];

ПлохойСписокСОтбором = ДоступнаяНастройка.ПолучитьПараметрыВыбора(); //как в этот список попадают данные?

   ildary

19 — 17.07.19 — 10:14

Код выше можно сократить до:

НастройкиКД = Отчет.КомпоновщикНастроек.Настройки;

ДоступнаяНастройка = НастройкиКД.ДоступныеПоляОтбора.Элементы[9];

ПлохойСписокСОтбором = ДоступнаяНастройка.ПолучитьПараметрыВыбора();//как в этот список попадают данные?

   catena

20 — 17.07.19 — 10:42

(19)»Описание:

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

»

Пусто и в полях и в параметрах?

   ildary

21 — 17.07.19 — 10:49

   ildary

22 — 17.07.19 — 10:51

(20) а в параметрах где вообще можно поменять? Там только левое значение, правое, вид сравнения, режим отображения и представление (плюс показ в быстрых настройках)?

   DrWatson

23 — 17.07.19 — 10:55

(19) ДоступнаяНастройка.Поле — это точно Номенклатура. Может сбилось уже и он берет параметры другого поля.

(22) В схеме закладка Параметры.

   ildary

24 — 17.07.19 — 10:57

(23) в параметрах нет номенклатуры. Она есть в отборах.

   DrWatson

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. Фильтр применяется по любому доступному к выбору полю. Чтобы выполнить это действие, нужно перейти по кнопке «Еще» (в правом верхнем углу формы) – «Настроить список»:

1s konfiguracija 3.0.png

Документы продажи: накладная в 1С 8

на вкладку отбор в 1С 8:

1s konfiguracija.png

Отбор в 1С 8

Здесь из левой колонки пользователю нужно перенести вправо те поля, по которым ему требуется отфильтровать данные. Также обязательно нужно установить флажок в первой колонке, и указать значение своего фильтра. После выбора нужных полей эта информация будет отображаться на первой вкладке формы настройки списка в 1С:

forma spiska spravochnika.png

Настройка списка в 1С

Установленный флажок указывает, используется ли в данный момент этот отбор. Если флажок отключить, то действие выбранного фильтра прекращается до его последующего включения.

Для того чтобы управлять отборами непосредственно из основной формы без помощи вспомогательной формы, их можно вывести в шапку первичной формы. Для этого в форме настройки списка в 1С после нажатия кнопок «Еще» – Свойства элемента Пользовательских настроек в 1С, откроется форма: Пользовательские настройки элемента в 1С:

forma spiska spravochnika v 1s.png


Свойства элемента пользовательских настроек в 1С 

5 nastrojka spiska v 1s.png

Пользовательские настройки в 1С

В этом окне устанавливаем верхний флажок и в поле «Режим редактирования» выбираем значение «Быстрый доступ». Далее нажимаем кнопку «Ок» и завершаем настройки редактирования.

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

6 nastrojka spiska.png

Накладные в 1С 8   

2.     Отборы в динамическом списке 1С 8 программно

Теперь рассмотрим возможности программной установки отборов в динамическом списке в 1С 8.

В типовых конфигурациях 8.3 для этих целей используют процедуры и функции общего модуля ОбщегоНазначенияКлиентСервер. Доступ к этому модулю будет как на стороне клиента, так и на стороне сервера. В этом модуле содержаться экспортные процедуры в 1С и функции, с помощью которых выполняется добавление, создание, изменение, установка, поиск или удаление элементов/группы отбора динамического списка в 1С 8:

— НайтиЭлементыИГруппыОтбора;

— СоздатьГруппуЭлементовОтбора;

— ДобавитьЭлементКомпоновки;

— ИзменитьЭлементыОтбора;

— УдалитьЭлементыГруппыОтбора;

— УстановитьЭлементОтбора;

— УстановитьЭлементОтбораДинамическогоСписка;

— УдалитьЭлементыГруппыОтбораДинамическогоСписка;

Пример использования процедур этого модуля:

7 nastrojka spiska 1s.png

Функции общего модуля

Здесь идет установка фильтров по полям «Менеджер», «Статус» и «Вариант оформления» в форме списка документа: Реализация товаров и услуг в 1С.

8 spisok v 1s.png

Реализация товаров и услуг в 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

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти энциклопедию в игре реальная рыбалка
  • Как найти катет по противоположному углу
  • Как найти на сколько процентов изменилось число
  • Как будет по итальянски как тебя найти
  • Как найти работу студенту выпускнику

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии