Обзор

Query Builder — это часть веб-части Vitextra List Filter Online, в которой редактор страницы задаёт предустановленный фильтр: набор условий, которым должен удовлетворять каждый элемент, прежде чем он появится в веб-части. Пользователи не видят этот фильтр и не могут его снять — они лишь сужают результат с помощью области фильтра и фильтров в заголовках столбцов.

Предустановленный фильтр хранится в виде дерева условий и групп и преобразуется в CAML-запрос, который SharePoint выполняет на сервере. Ничего не загружается в браузер для последующей фильтрации: список возвращает только подходящие элементы, постранично, — именно поэтому веб-часть остаётся быстрой на больших списках.

Типичные сценарии предустановленного фильтра:

  • Показывать только документы, созданные или изменённые текущим пользователем.
  • Показывать на странице-дашборде только записи за последние 12 месяцев.
  • Показывать только утверждённые элементы, элементы с вложениями или элементы, у которых Статус не равен Закрыто.
  • Собрать по странице на каждый отдел из одного списка, не создавая отдельное представление для каждого отдела.

📝 Заметка
Query Builder задаёт фильтр, который применяется всегда. Элементы управления, которые пользователи видят в области фильтра, настраиваются отдельно — см. KB10255. Элементы управления области фильтра и поддерживаемые типы столбцов в List Filter Online.


Где найти Query Builder

  1. Откройте страницу в режиме редактирования и выберите Изменить веб-часть на веб-части List Filter Online.
  2. В панели свойств перейдите к группе Фильтр. Под подписью Фильтровать представление по: отображается предварительный просмотр текущего фильтра — Фильтр не применен., если фильтр ещё не задан.
  3. Нажмите Изменить фильтр. Query Builder откроется в большой боковой панели.
  4. Соберите запрос и нажмите Сохранить, чтобы применить его, или Отмена, чтобы отменить изменения. Веб-часть сразу перерисовывается с новым фильтром.

Группа «Фильтр» панели свойств с предварительным просмотром фильтра и кнопкой «Изменить фильтр»

Группа «Фильтр» панели свойств с предварительным просмотром фильтра и кнопкой «Изменить фильтр»

Query Builder доступен только после того, как в группе Источник данных выбраны сайт и список или библиотека: перечень полей и их типы берутся из выбранного списка.


Условия и группы

Запрос состоит из строительных блоков двух видов.

  • Условие — это одно сравнение: поле — оператор — значение, например Amount — Больше — 5000. Некоторым операторам значение не нужно (Содержит данные, Текущий пользователь, Сегодня).
  • Группа содержит условия и другие группы и объединяет их одним логическим оператором — И (должны выполняться все члены группы) или ИЛИ (должен выполняться хотя бы один). Переключатель у левого края группы меняет оператор.

В панели всегда есть одна корневая группа; удалить её нельзя. Внутри любой группы кнопка Добавить предлагает две команды:

  • Условие — добавляет в текущую группу пустую строку;
  • Группа — добавляет вложенную группу (по умолчанию И), которую вы заполняете точно так же.

Группы можно вкладывать друг в друга до десяти уровней. У каждой строки и каждой вложенной группы справа есть значок удаления; при удалении группы удаляется всё её содержимое.

Запрос с вложенными группами И/ИЛИ в Query Builder

Запрос с вложенными группами И/ИЛИ в Query Builder

Запрос на рисунке читается так: Название заполнено и начинается с «C» и (создано мной или изменено мной) и (создано за последний год или изменено за последний год) и (есть вложения, или заполнен Клиент и Сумма больше 5 000).

💡 Совет
Оставляйте корневую группу с оператором И, а каждый альтернативный набор условий выносите в отдельную группу ИЛИ. Такой запрос легко читается в предварительном просмотре и легко расширяется в дальнейшем.


Операторы по типам столбцов

Список операторов в строке зависит от типа выбранного поля. В таблице перечислены операторы, которые Query Builder предлагает для каждого поддерживаемого типа столбца.

Тип столбцаОператоры
Однострочный текст, Многострочный текст, Гиперссылка или рисунокРавно, Не равно, Начинается с, Содержит, Содержит данные, Не содержит данных
ВыборРавно, Не равно, Начинается с, Содержит, Содержит данные, Не содержит данных
Выбор (несколько значений), Подстановка, Вычисляемый (текстовый результат)Равно, Не равно, Содержит данные, Не содержит данных (для вычисляемого столбца также Начинается с и Содержит)
Число, Валюта, ИДРавно, Не равно, Больше, Больше или равно, Меньше, Меньше или равно (для столбца «Число» также Содержит данные, Не содержит данных)
Дата и времяРавно, Не равно, Не Ранее, После, Не Позднее, До, Между, Сегодня, Последние X Дней, Последние X Недель, Последние X Месяцев, Последние X Лет, Следующие X Дней, Следующие X Недель, Следующие X Месяцев, Следующие X Лет, Содержит данные, Не содержит данных
Да/НетРавно, Не равно, Содержит данные, Не содержит данных
ВложенияРавно, Не равно (значение: Да / Нет)
Пользователь или группаРавно, Не равно, Текущий пользователь, Не Является Текущим Пользователем, Содержит данные, Не содержит данных
Управляемые метаданные (одно и несколько значений)Равно, Не равно, Содержит, Не содержит, Содержит данные, Не содержит данных
Статус утвержденияРавно, Не равно (значение — список статусов)
Оценка, Отметки «Нравится»Равно, Не равно, Содержит данные, Не содержит данных (для отметок «Нравится» — только Содержит данные, Не содержит данных)

Содержит данные и Не содержит данных проверяют, есть ли в столбце какое-либо значение, — так же, как IsNotNull и IsNull в CAML.

Редактор значения тоже зависит от типа столбца: выбор даты для дат (для оператора Между — два поля выбора даты), числовое поле для чисел и валюты, выбор пользователей для столбца Пользователь или группа, выбор терминов для Управляемых метаданных, список Да / Нет для столбцов «Да/Нет» и «Вложения», список статусов для столбца Статус утверждения и текстовое поле для текстовых столбцов, столбцов выбора и подстановки.

❗ Важно
Системные столбцы и столбцы только для чтения (например, ИД типа контента, Уникальный идентификатор, Версия или Извлёк) в списке полей не предлагаются. Столбцы типов, которые нельзя сравнивать в CAML, — например, Изображение, Расположение или Повторение — также не предлагаются.


Статические и динамические условия

Статическое условие сравнивает столбец с фиксированным значением, которое вы ввели: датой, числом, текстом, пользователем. Значение записывается в запрос как есть. Оператор Между включает обе даты, с точностью до календарного дня; если задана только одна из дат, условие превращается в открытое Не Ранее или Не Позднее.

Динамическое условие SharePoint вычисляет в момент выполнения запроса, поэтому одна и та же страница показывает разные элементы разным пользователям и в разные дни:

ОператорКак вычисляется
Текущий пользователь / Не Является Текущим ПользователемСравнивает столбец пользователя с идентификатором вошедшего пользователя (<UserID /> в CAML).
СегодняСравнивает столбец даты с текущей датой (<Today />).
Последние X Дней / Недель / Месяцев / ЛетДиапазон от сегодня минус X (дней, недель, месяцев или лет) до сегодня.
Следующие X Дней / Недель / Месяцев / ЛетДиапазон от сегодня до сегодня плюс X.

Число для Последние X и Следующие X вводится в поле значения строки. Последние X Месяцев и Последние X Лет преобразуются в начальную дату при формировании запроса, поэтому страница с условием Изменён — Последние X Лет — 1 всегда охватывает последние двенадцать месяцев, и никому не нужно править фильтр.

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


Как предустановленный фильтр сочетается с фильтрами пользователя

Когда пользователь применяет фильтр в области фильтра или в заголовке столбца, веб-часть не заменяет предустановленный фильтр. Она формирует новый запрос, в котором предустановленный фильтр и фильтры пользователя объединены оператором И:

<Where>
  <And>
    <!-- предустановленный фильтр из Query Builder -->
    <!-- условия, выбранные пользователем в области фильтра -->
  </And>
</Where>

Следствия, о которых стоит знать:

  • Пользователи могут сузить результат, но никогда не расширят его за пределы предустановленного фильтра. Страница с фильтром Кем создано — Текущий пользователь никогда не покажет чужие элементы, что бы пользователь ни выбрал в области фильтра.
  • Сортировка, группировка, итоги и экспорт в Excel работают с объединённым результатом.
  • Сохранённые фильтры и ссылки на фильтр (см. KB10253. Сохранение фильтров и ссылка на отфильтрованное представление в List Filter Online) хранят только пользовательскую часть запроса. Предустановленный фильтр — часть конфигурации страницы и перемещается вместе с ней.

От дерева к CAML

CAML — язык запросов к спискам SharePoint — допускает внутри <And> и <Or> ровно два операнда. Поэтому группу из трёх и более членов нельзя записать одним элементом: её приходится сворачивать в цепочку вложенных пар. Query Builder делает это за вас, а заодно учитывает детали, зависящие от типа: атрибут Type у каждого значения, LookupId для столбцов подстановки и IncludeTimeValue для сравнения дат.

Запрос с рисунка выше даёт предложение <Where> примерно в 70 строк. Его скелет — с сокращёнными сравнениями — выглядит так:

<Where>
  <And>
    <Or>  <!-- создано мной ИЛИ изменено мной -->
      <Eq><FieldRef Name="Author" /><Value Type="Integer"><UserID /></Value></Eq>
      <Eq><FieldRef Name="Editor" /><Value Type="Integer"><UserID /></Value></Eq>
    </Or>
    <And>
      <Or>  <!-- создано за последний год ИЛИ изменено за последний год -->
        <And> <Geq Created 2025-10-21 /> <Leq Created <Today /> /> </And>
        <And> <Geq Modified 2025-10-21 /> <Leq Modified <Today /> /> </And>
      </Or>
      <And>
        <Or>  <!-- (клиент заполнен И сумма > 5000) ИЛИ есть вложения -->
          <And> <IsNotNull Customer /> <Gt Amount 5000 /> </And>
          <Eq Attachments 1 />
        </Or>
        <And> <IsNotNull Title /> <BeginsWith Title "C" /> </And>
      </And>
    </And>
  </And>
</Where>

Каждая строка Последние X Лет превратилась в <And> из двух сравнений дат, каждая группа ИЛИ — в элемент <Or>, а четыре члена корневой группы И — в три вложенных элемента <And>.

Просмотр сгенерированного запроса

Чтобы увидеть точный CAML, который отправляет веб-часть, — включая предустановленный фильтр, текущие фильтры пользователя, поля представления, ограничение строк и группировку:

  1. В панели свойств разверните группу Средства разработчика и включите параметр Включение режима разработчика.
  2. Сохраните страницу. В правой части панели команд веб-части появится меню средств разработчика.
  3. Выберите Запрос CAML. Запрос откроется в диалоговом окне, откуда его можно скопировать.

Диалоговое окно «Запрос CAML» показывает точный запрос, отправляемый в SharePoint

Диалоговое окно «Запрос CAML» показывает точный запрос, отправляемый в SharePoint

💡 Совет
Когда фильтр готов, снова выключите режим разработчика. Меню видно всем, кто видит веб-часть.


Предустановленные фильтры на больших списках

На списках с более чем 5 000 элементов SharePoint выполняет запрос только в том случае, если первое условие, сужающее результат, использует индексированный столбец. Предустановленный фильтр выполняется первым, поэтому именно он решает, откроется ли страница вообще.

  • Начинайте корневую группу с условия по индексированному столбцу (Создан, Изменён, Кем создано, Кем изменено и ИД индексированы по умолчанию; остальные можно проиндексировать в параметрах списка).
  • Предпочитайте И в корне: ИЛИ между двумя неиндексированными столбцами не может использовать ни один индекс.
  • Динамические условия по дате (Последние X Месяцев, Сегодня) — хорошие первые условия, если столбец даты проиндексирован.

Подробности, предупреждение об индексе в конфигураторе фильтра и создание индекса одним щелчком описаны в статье KB10257. Фильтрация больших списков: индексированные столбцы и порог в 5 000 элементов.


Ограничения

  • Query Builder работает со столбцами одного списка или библиотеки — того, что выбран в источнике данных. Условия по столбцам других списков невозможны.
  • Значения подстановки и выбора сопоставляются по введённому тексту; отдельного средства выбора для них в Query Builder нет.
  • Вложенная группа без условий игнорируется при формировании запроса.
  • Максимальная глубина вложенности — десять уровней. На практике двух-трёх уровней хватает почти для любого сценария; более глубокое дерево трудно читать в предварительном просмотре.
  • Предустановленный фильтр пользователям не показывается. Если пользователям нужно понимать, почему каких-то элементов нет, скажите об этом в заголовке веб-части или на странице.

💡 Совет
Остальные параметры панели свойств описаны в статье KB10201. Настройка веб-части List Filter Online; элементы управления области фильтра — в KB10255. Элементы управления области фильтра и поддерживаемые типы столбцов в List Filter Online; каскадные раскрывающиеся списки — в KB10256. Каскадные фильтры: сужение вариантов раскрывающегося списка по другим выбранным фильтрам. Сравнение со встроенной веб-частью List см. в статье KB10321. List Filter Online и встроенная веб-часть List: в чём разница?.

Рекомендуемые статьи

Создание и управление объявлениями в Announcements Carousel

Руководство для редакторов веб-части Vitextra Announcements Carousel: как открыть список объявлений SharePoint, добавить и изменить объявление, отформатировать текст, прикрепить файлы, задать срок действия, цвет и эмодзи.

1 09.10.2026
Как добавить и настроить веб-часть Employee Directory

Пошаговое руководство по добавлению веб-части Vitextra Employee Directory на страницу SharePoint Online и настройке основных параметров: источник данных (профили пользователей или Microsoft Entra ID), столбцы, сортировка, размер страницы, поле поиска и итоги, а также обзор остальных групп панели свойств.

2 18.10.2026
Employee Details: местное время, рабочие часы и доступность

Как работает карточка «Доступность» в Vitextra Employee Details: местное время коллеги, разница с вашим часовым поясом, рабочие часы и пометка «вне рабочего времени», полосы «свободен/занят» на сегодня, «Назначить встречу», источник данных и случаи, когда карточка не отображается.

1 18.10.2026

Поделиться