Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут!

Отборы в 1С 8.3 (Управляемые формы)

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

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

Тут мы имеем два пути: создать отбор на форме списка и установить отбор программно.

Отбор в настройка формы

В конфигураторе добавим динамический список на форму, назначим ему основную таблицу и зайдем в свойства списка. В свойствах есть раздел «Настройка списка», нажмем ссылку «Открыть». Появится такое вот окно:

отборы в динамических списках 1с

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

Установка отбора в динамическом списке 1С программно

Дело в том, что Отбор является свойством динамического списка. Этим мы и воспользуемся. Сначала добавим в свойство отбора новый элемент:

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

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

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

НовЭлементОтбора.Использование = Истина;

НовЭлементОтбора.ПравоеЗначение = Знач_1;

Получите 267 видеоуроков по 1С бесплатно:

Таким образом, мы создаем простой отбор. Кроме простого, можно задать условия по нескольким полям. Для этого используем тип данных «ГруппаЭлементовОтбораКомпоновкиДанных»:

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

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

НовЭлементОтбора.ПравоеЗначение = Знач_1;

Отборы в таблице значений 1С

Тут у нас также имеется несколько вариантов.

  • Можно просто перебрать таблицу в цикле и выбрать нужные строки либо скрыть ненужные. Считаю этот способ самым неоптимальным, но для новичков пойдет.
  • Второй способ – использовать метод таблицы «НайтиСтроки». Иногда очень хороший способ, но есть серьезный недостаток. Это единственный тип для сравнения – «Равно».
  • Третий вариант отбора – мой любимый, так как лишен в итоге всех недостатков. В этом варианте я использую «ПостроительЗапроса». Вот пример:
&НаСервере

Процедура ОтборВТЗНаСервере()

   ПостроительЗапр = Новый ПостроительЗапроса;

   ПостроительЗапр.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабЗнач);

   т_Отбор = ПостроительЗапр.Отбор.Добавить("Кол_1");

   т_Отбор.ВидСравнения = ВидСравнения.Больше;

   т_Отбор.Значение = 1000;

   т_Отбор.Использование = Истина;

   ПостроительЗапр.Выполнить();

   ТабРезультат = Построитель.Результат.Выгрузить();

КонецПроцедуры

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

P.S. Наша компания предоставляет услуги по настройке, доработке и комплексному внедрению 1С. Закажите бесплатный расчет стоимости вашей задачи на странице Услуги 1С или по телефону +7 (499) 350 29 00.

Остались вопросы?

СПРОСИТЕ в комментариях!

Добавить комментарий: