В 1С Предприятии 8.2 формы списка объектов конфигурации построены с помощью динамического списка. Пользователь может самостоятельно задать произвольные отборы в любом списке.
Однако зачастую заранее известно, что в конкретном списке будут часто использоваться отборы лишь по нескольким конкретным полям. И необходимо предоставить возможность простого и быстрого ввода требуемых значений и отбора по ним.
В этом случае можно использовать возможность установки отбора из встроенного языка. Чтобы установить отбор по нескольким реквизитам спиcка, нужно сначала создать группу элементов отбора, а затем добавить в нее собственно сами элементы отбора, которые будут связаны логическим союзом И , ИЛИ , НЕ в зависимости от типа группы.
Рассмотрим пример, когда список номенклатуры отбирается по реквизитам списка, соединенным логическим союзом И .
Допустим, в конфигурации существуют справочники Производители , Поставщики и справочник Номенклатура с реквизитами Производитель (типа СправочникСсылка.Производители ) и Поставщик (типа СправочникСсылка.Поставщики ). Требуется выводить список номенклатуры с отбором по этим реквизитам.
Создадим форму списка номенклатуры. Добавим в форму реквизиты Производитель (типа СправочникСсылка.Производители ) и Поставщик (типа СправочникСсылка.Поставщики ) и поместим их над таблицей списка. В эти поля мы будем вводить значения для отбора.
Создадим команду формы Отфильтровать и поместим ее в командную панель формы. При нажатии этой кнопки будет выполняться отбор в списке в зависимости от значений в полях формы Поставщик и Производитель .
В палитре свойств команды Отфильтровать нажмем кнопку открытия в поле Действие . Обработчик команды в модуле формы заполним следующим образом.
В этом обработчике сначала в цикле обходится коллекция всех элементов и групп элементов отбора для основного реквизита формы Список (типа ДинамическийСписок ). И удаляются все элементы отбора, созданные программно ( Представление = «Программный отбор» ). Затем создается группа элементов отбора ГруппаОтбора для реквизита Список с типом логической связи ГруппаИ . И если в полях Производитель и Поставщик содержится не пустая ссылка на справочник, то эти поля добавляются в элементы отбора, принадлежащие группе отбора.
В результате, задав в полях Производитель и Поставщик нужные значения, мы получим отбор в списке номенклатуры сразу по обоим реквизитам списка Производитель и Поставщик .
При этом закладка Отбор в окне Настройка списка ( Все действия — Настроить список. ) будет выглядеть следующим образом. В пользовательском режиме сюда можно добавлять другие элементы и группы отбора.
Если задано только одно из полей отбора, то отбор в списке будет выполняться только по одному реквизиту ( Производитель или Поставщик ).
Демонстрационный пример находится в каталоге 1CITS/EXE/FAQ/БыстрыйОтборПоНесколькимПолям.dt. Пример выполнен на версии платформы 8.2.9.356.
Часто возникают ситуации, когда в 1С 8.3 нужно произвести отбор в таблице определенных строк по определенным критериям. Рассмотрим, как это сделать в динамическом списке и в таблице значений.
Отборы в динамическом списке 1С 8.3
Тут мы имеем два пути: создать отбор на форме списка и установить отбор программно.
Отбор в настройка формы
В конфигураторе добавим динамический список на форму, назначим ему основную таблицу и зайдем в свойства списка. В свойствах есть раздел «Настройка списка», нажмем ссылку «Открыть». Появится такое вот окно:
Здесь мы можем задать любой отбор для динамического списка. Потом этим отбором можно управлять программно.
Установка отбора в динамическом списке 1С программно
Дело в том, что Отбор является свойством динамического списка. Этим мы и воспользуемся. Сначала добавим в свойство отбора новый элемент:
Чтобы отбор заработал, нужно прописать параметры «ЛевоеЗначение», «ВидСравнения» и «ПравоеЗначение». Кроме того необходимо свойство «Использование» установить в «Истина».
Получите 267 видеоуроков по 1С бесплатно:
Таким образом, мы создаем простой отбор. Кроме простого, можно задать условия по нескольким полям. Для этого используем тип данных «ГруппаЭлементовОтбораКомпоновкиДанных»:
Отборы в таблице значений 1С
Тут у нас также имеется несколько вариантов.
- Можно просто перебрать таблицу в цикле и выбрать нужные строки либо скрыть ненужные. Считаю этот способ самым неоптимальным, но для новичков пойдет.
- Второй способ – использовать метод таблицы «НайтиСтроки». Иногда очень хороший способ, но есть серьезный недостаток. Это единственный тип для сравнения – «Равно».
- Третий вариант отбора – мой любимый, так как лишен в итоге всех недостатков. В этом варианте я использую «ПостроительЗапроса». Вот пример:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Потребовалось нам в списке документов «ЗаказКлиента» сделать отбор. Например где у контрагента долг больше 10000р.
Реализуем это
Найдем форму «ФормаСпискаДокументов» документа «заказКлиента».
Откроем настройку списка.
Настроим отбор как показано на рисунке и укажем нужное представление отбора
Все, запускаем 1с и пользуемся нашим отбором.
Если же мы сами хотим выбирать по какому значению долга нам фильтровать то настраиваем отбор так:
и тогда мы сможем сами указывать сумму долга
Отбор на форме динамического списка программно.
Отбор является свойством динамического списка. Добавим в свойство отбора новый элемент:
Чтобы отбор заработал, нужно прописать параметры «ЛевоеЗначение», «ВидСравнения» и «ПравоеЗначение». Кроме того необходимо свойство «Использование» установить в «Истина».
- Главная
- В помощь 1с программисту
- 1С отборы на управляемой форме. 1С отбор в динамическом списке на форме.
Google+