1с как работает отбор

Обновлено: 07.07.2024

Видеоролик выполнен в программе «1С:Бухгалтерия 8» версия 3.0.64.42.

Стандартные отчеты предназначены для получения данных бухгалтерского и налогового учета по остаткам и оборотам счетов, по объектам аналитического учета (субконто), а также для формирования списка корреспонденций счетов.

В верхней части любого стандартного отчета находится командная панель. С помощью настроек панели можно изменить параметры отчета: установить другой период, организацию и др.

По кнопке Показать настройки (Скрыть настройки) открывается (скрывается) панель настройки. В панели настройки на закладке Отбор можно выбрать параметр или реквизит, по которому будет произведен отбор в отчете, а также задать вид сравнения.

Параметр или реквизит, доступный для настройки отбора, указывается в графе Поле. Конкретное значение выбранного параметра или реквизита параметра указывается в последней графе Значение (если оно требуется).

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

  • Равно – параметр должен быть точно равен значению, указанному в графе Значение;
  • Не равно – параметр не равен указанному значению;
  • В списке – параметр должен быть равен одному из значений, указанных в списке. При выборе такого условия в графе Значение становится возможным указать не одно значение, а список значений;
  • Не в списке – параметр не должен быть равен ни одному из значений, указанных в списке;
  • В группе – параметр должен быть равен либо самому значению, либо подчиненному значению;
  • Не в группе – параметр не должен быть равен ни самому значению, ни подчиненным значениям;
  • В группе из списка – параметр должен быть равен одному из значений, указанных в списке групп, либо подчиненному значению из списка групп;
  • Не в группе из списка – параметр не должен быть равен ни одному из значений, указанных в списке групп, ни подчиненным значениям из списка групп;
  • Заполнено (Не заполнено) – отбор по заполненным (незаполненным) значениям. В данном случае заполнение графы Значение не требуется.

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

Редко какой отчет в 1С не использует отборы, разве что печатные формы и какие-то специальные отчеты. В большинстве отчетов в 1С требуется возможность выборочного анализа. Поэтому в этой статье мы поговорим про настройку отборов в отчетах, построенных с помощью 1С СКД.

После того как вы добавили наборы, определили ресурсы, задали структуру отчета с помощью группировок , можно приступать к настройке фильтров. В СКД это делается на закладке «Отбор», которая доступна или для всего отчета или для определенной группировки.


Новый элемент в список отбора можно добавить несколькими способами – двойной клик по доступному полю, перетаскивание, клавиша в меню:


При этом только через клавишу в меню можно добавить группу в отбор, которая объединяет элементы внутри этой группы по заданному условию (И, ИЛИ).


По умолчанию если элементы отбора не включены ни в какую группу и объединяются с помощью оператора «И».

Вид сравнения в элементе отбора зависит от типа поля (левого значения):

Операции доступные для числа:


Операции доступные для строки:


Для строки добавлены операции – «содержит», «начинается с», «соответствует шаблону» и те же операции с оператором «Не» (Не содержит и т.д.).

Операции доступные для ссылки:


Далее разберем типовые ситуации при использовании отбора

Самый простой вариант использование отбора – добавить фиксированный отбор, который будет действовать всегда (если конечно пользователь не изменит его в варианте отчета):


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

Иногда в отчете на 1С СКД возникает необходимость исключить в отчете значения некоторых группировок (колонок или строк). Причем сделать это в запросе не представляется возможным, потому что исключать такие строки возможно только после компоновки.

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


Допустим нам нужно исключить из отчета все строки, в которых итоговое количество по номенклатуре меньше 15. В запросе мы такое условие применить не можем. Установим для этого отбора для группировки «Номенклатура»:


Получим такой отчет:


Отборы на группировках часто используются в отчетах вида «Ведомость по остаткам»:


При использовании группировки по периоду (регистратору) в таких отчетах появляются строки, отвечающие за начальный остаток при использовании даты начала периода отличной от самой ранней. Чтобы убрать такие строки, можно использовать отбор на группировке по регистратору:



Чтобы убрать отбор, выделенный на рисунке на закладке «Другие настройки» для этой же группировки отключим вывод отбора:



Обычно мы редко используем фиксированные отборы. Чаще нам нужны отборы, которые может изменять пользователь. Можно, чтобы пользователь изменял отборы через функционал 1С СКД «Изменить вариант», но это не совсем верный путь – вариант отчета это скорее постоянный «скелет», который настраивается один раз и потом используется многократно. Отборы же это что-то часто изменяемое, поэтому правильнее редактировать их через механизм пользовательских настроек.

Итак, вернемся к нашему отчету. Допустим нам необходимо добавить в отчет отбор по группе номенклатуры (или по элементу) и чтобы этот отбор был доступен для изменения пользователем.

Добавим для этого отбор на уровне отчета. Вид сравнения по умолчанию сделаем «В группе», отключим по умолчанию использование отбора и в диалоге редактирования пользовательских настроек включим наш отбор в пользовательские настройки.


Перейдем теперь в режим предприятия.


Наш отбор доступен для редактирования на форме. За доступность прямо в форме отчета отвечает «Режим редактирования». Значение «Быстрый доступ» означает, что отбор доступен прямо на форме отчета. Если значение равно «Обычный», отбор доступен через кнопку «Настройки». Как видно на рисунке пользователь может выбирать вариант сравнения, управлять действием (включен / отключен) отбора.

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


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


Если вам в отборе нужно изменить представления поля, по которому делается отбор, то для этого есть еще одно представление:


Получается вот так:


Мы можем вывести все отборы для редактирования пользователем. Для этого на уровне отчета вызовем диалог редактирования пользовательских настроек:


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


Как известно, в 1С СКД используется не только в отчетах, но и в формах, содержащих динамические списки. У динамического списка есть несколько свойств, которые относятся к СКД. Среди этих свойств имеется свойство «Отбор» с типом «ОтборКомпоновкиДанных». Чтобы установить отбор в динамическом списке есть два способа. Первый способ – передать отборы через параметр формы с одноименным названием – «Отбор». Этот параметр является структурой, в которой ключ ссылается на поле, для которого устанавливается отбор. Значение же содержит данные, с которыми производится сравнение. Можно также передать в качестве правого значения – массив, фиксированный массив, список значений. В этом случае вид сравнения равняется «ВСписке», для одиночного элемента вид сравнения устанавливается как «Равно». Этот способ ограничен в возможностях – с его помощью нельзя накладывать сложные условия с операторами «И» и «ИЛИ», нельзя использовать виды сравнения кроме двух указанных.


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

Второй способ – непосредственное редактирование отбора в динамическом списке или в компоновщике. Обычно в типовых конфигурация для этого есть ряд методов и функций для установки таких отборов.

Например, вызов основного метода для установки отбора выглядит так:

Данная функция производит поиск существующего элемента отбора, изменяет его если нашла, а если не нашла, то добавляет с помощью такой процедуры:

В форме содержащей динамический список также как в отчете на СКД, возможно настроить пользовательский отбор. Как это можно сделать показано на рисунке:


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

Анна Викулина

В статье будут рассмотрены варианты установки отбора в управляемых формах 1С 8.3. Отбор для динамического списка может быть установлен статически или динамически, в пользовательском интерфейсе или конфигураторе. Все варианты отборов мы рассмотрим ниже.

  • Установка отбора в пользовательском режиме
  • Установка отбора в конфигураторе
    • Фиксированный отбор
    • Динамический (программный) отбор

    Установка отбора в пользовательском режиме

    Динамический список в отличие от таблицы или дерева значений – более подходящее решение для реализации форм содержащих какие-либо списки, т.к. динамический список предоставляет наиболее широкий набор инструментов для работы с отбором, группировкой полей, сортировкой. Данный отбор можно установить при работе в пользовательском режиме или конфигураторе, принцип одинаков.

    Для установки отбора в режиме предприятия необходимо вызвать команду «Настроить список».

    На вкладке «отбор» представлен список полей, который есть в текущем списке. Выбираем поля списка, по которым будем фильтровать. Сделать это можно двойным кликом или используя drag and drop.

    Задаем вид сравнения и значение, жмем «Завершить редактирование», отбор установлен.

    Отбор также можно группировать по логическим условиям «И», «ИЛИ».

    Рис.4 Отбор также можно группировать по логическим условиям «И», «ИЛИ»

    Рис.4 Отбор также можно группировать по логическим условиям «И», «ИЛИ»

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

    Чтобы платформа 1С автоматически создавала поля быстрых отборов, при разработке формы в конфигураторе необходимо указать группу пользовательских настроек.

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

    Установка отбора в конфигураторе

    Работая в конфигураторе, мы можем устанавливать отбор динамического списка двух видов – фиксированный и динамический. Фиксированный отбор настраивается один раз, динамический или программный – можно устанавливать в зависимости от каких-либо данных в системе.

    Фиксированный отбор

    Принцип установки фиксированного отбора в конфигураторе не отличается от установки в пользовательском режиме описанном выше. Чтобы установить отбор, мы должны открыть настройки динамического списка.

    Отбор задается так же, как в пользовательском режиме.

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

    Динамический (программный) отбор

    Зачастую возникает необходимость устанавливать отбор программно, например, при открытии формы выбора, когда нам необходимо открыть управляемую форму с отбором. В форму передается параметр и по этому параметру устанавливается отбор. Частый пример этого – отбор элементов справочника по владельцу.

    Методы

    Если в разрабатываемой конфигурации присутствует подсистема БСП «БазоваяФункциональность», программный отбор в динамическом списке можно установить используя типовой метод:

    Сигнатура данного метода:

    ДинамическийСписок Тип: ДинамическийСписок – Список, в котором требуется установить отбор.

    ИмяПоля Тип: Строка – Поле, по которому необходимо установить отбор.

    ПравоеЗначение Тип: Произвольный – Значение отбора (Необязательный. Значение по умолчанию: Неопределено. Внимание! Если передать Неопределено, то значение не будет изменено).

    ВидСравнения Тип: ВидСравненияКомпоновкиДанных – Условие отбора.

    Представление Тип: Строка – Представление элемента компоновки данных (Необязательный. Значение по умолчанию: Неопределено. Если указано, то выводится только флажок использования с указанным представлением (значение не выводится). Для очистки, чтобы значение снова выводилось, следует передать пустую строку).

    Использование Тип: Булево – Флажок использования этого отбора (Необязательный. Значение по умолчанию: Неопределено).

    РежимОтображения Тип: РежимОтображенияЭлементаНастройкиКомпоновкиДанных – Способ отображения этого отбора пользователю. Возможные значения:

    • РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ – В группе быстрых настроек над списком.
    • РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный – В настройка списка (в подменю Еще).
    • РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный – Запретить пользователю менять этот отбор.

    ИдентификаторПользовательскойНастройки Тип: Строка – Уникальный идентификатор этого отбора (Используется для связи с пользовательскими настройками).

    Для удаления какого-то значения отбора необходимо воспользоваться типовым методом:

    Сигнатура данного метода:

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

    ИмяПоля Тип: Строка – имя поля компоновки (не используется для групп).

    Представление Тип: Строка – представление поля компоновки.

    В случае отсутствие в системе БСП отбор можно установить самостоятельно, используя объект ПолеКомпоновкиДанных.

    Данный отбор отберет строки, в которых значение «ФИО» = «Иванов».

    Для использования логических «И», «ИЛИ», «НЕ» предназначен тип данных ГруппаЭлементовОтбораКомпоновкиДанных

    Данный отбор отберет строки, в которых значение «ФИО» = «Иванов» или «Петров».

    Отбор в динамическом списке также можно производить через изменение текста запроса динамического списка. Этот вариант работает, когда динамический список сделан через «произвольный запрос».

    Для этого к тексту запроса добавляем условие «ГДЕ Истина»…

    Как видно, такой подход более компактный с точки зрения написания кода. Чем сложнее условия отбора в табличной части мы хотим установить, тем более громоздким будет вариант с использованием отбора через ЭлементОтбораКомпоновкиДанных. Однако у примера с изменением текста запроса есть свои недостатки – эта реализация не устойчива к изменениям кода. Например, вы сделали такую реализацию и забыли, но если в будущем вы захотите модифицировать текст запроса, добавив в него какой-либо оператор после ГДЕ (УПОРЯДОЧИТЬ, СГРУППИРОВАТЬ), вам нужно не забыть про то, что в программном коде есть:

    Если этого не учесть будет ошибка, но чтобы этого избежать, можно переделать на другую реализацию. В текс запроса добавляем такое условие:

    ГДЕ (НЕ &ОтборУстановлен ИЛИ СправочникПользователи.ФИО В (&РазрешенныеФИО))

    Тут ФИО – массив.

    Ка видно, 2 строчки кода против 10. Какой из способов выбрать, зависит от конкретной прикладной задачи.

    Анна Викулина

    Критерии отбора 1С – это объект метаданных, позволяющий осуществить отбор информации в базе 1С по заданным условиям. Это, своего рода, предопределенные правила, по которым в пользовательском режиме в списках осуществляется отбор информации по какому-либо значению. Например, установив отбор по контрагенту, можно найти любые документы (или справочники), в которых фигурирует указанный контрагент.

    Отбор в журнале по полю «Контрагент»:

    Этот прием используется и при формировании структуры подчиненности, которую можно увидеть, воспользовавшись кнопкой на панели инструментов «Перейти к иерархическому списку связанных документов».

    Разберем, что представляют собой связанные критерии отбора 1С на примере 1С:Бухгалтерия предприятия версии 3.0.

    Откроем программу в режиме «Конфигуратор» и, сделав это, найдем в дереве метаданных нужный раздел критериев.

    Настройки

    В «Данных» задается «Тип» – это тип значения для отбора, по которому и будет осуществляться поиск. К примеру, «ДокументыПоКонтрагенту» имеет тип СправочникСсылка.Контрагенты, а «ДокументыСотрудников», имеют тип СправочникСсылка.ФизическиеЛица.

    При этом можно задать любой тип из стандартных или определить объект из дерева конфигурации, указав любую ссылку.

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

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

    Критериев отбора можно создавать множество, но для работы с ними нужно создавать формы, которые можно размещать и на панели инструментов, и в пользовательском меню. Критерии будут доступны по кнопке «Еще» во всех отмеченных объектах.

    Пример создания критерия отбора

    Создадим «ДокументыПоНоменклатуре», нажав правой кнопкой мышки и выбрав команду «Добавить».

    На «Данных» укажем для него тип «СправочникСсылка.Номенклатура».

    На закладке «Состав» пересмотрим все документы и в нужных нам установим галочку «Номенклатура», т.е. это тот элемент, по которому у нас определен отбор. Например, если нам достаточно формировать отбор только по счетам, то мы можем указать только этот вид документа.

    Чтобы в режиме «1С:Предприятие» наше новшество работало, его необходимо включить в интерфейс пользователя, где мы хотим его видеть. Найдем в дереве метаданных справочник «Номенклатура», откроем ее форму элемента. На закладке «Командный интерфейс», прокрутив вниз, в разделе «Перейти» мы видим строку «Документы по номенклатуре (Объект.Ссылка)». Установим там галочку.

    Далее выполняем команду «Обновить конфигурацию базу данных» (пункт меню «Конфигурация») и проверяем наш результат. Откроем любой элемент справочника «Номенклатура» и, нажав на гиперссылку «Еще», мы увидим пункт «Документы по номенклатуре».

    Нажимаем на эту ссылку и получаем список документов, где была задействована эта позиция.

    Рис.14 Список документов, где была задействована эта позиция

    Рис.14 Список документов, где была задействована эта позиция

    Таким образом, программа формирует запрос поиска, используя данные тех таблиц, которые указаны в критерии отбора, имеющие реквизит заданного типа, по которому осуществляется отбор (в нашем примере элемент справочника «Номенклатура»). Критерий отбора позволяет динамически произвести отбор, отображая все найденные данные, указанные в критерии отбора, что нельзя получить ни в других отборах, ни используя список, так как поиск осуществляется из разных таблиц. Чтобы выборка была эффективной, не надо задавать слишком много критериев отбора, иначе не будет смысла в таком отборе.

    Связанные документы

    По такому же принципу в программах 1С реализована возможность создавать документы на основании других. Между ними образуется связь, и пользователь может увидеть связанные документы, нажав на кнопку на панели инструментов «Перейти к иерархическому списку связанных документов».

    Рис.15 Перейти к иерархическому списку связанных документов

    Рис.15 Перейти к иерархическому списку связанных документов

    Для того чтобы эту связь увидел пользователь, в настройках критерия отбора «СвязанныеДокументы» (на закладке «Данные») определяется список возможных связанных документов, а в «Составе» – тех, которые могут служить основанием для других документов.

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

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