Введение
SharePoint Online ограничивает число элементов, которые может затронуть один запрос, значением 5 000 — это порог представления списка. Ограничение касается не того, сколько элементов хранит список и сколько строк показывает страница: список с 50 000 элементов работает нормально, пока каждый запрос может использовать индекс для отбора строк. Однако фильтр по столбцу без индекса заставляет SharePoint просматривать весь список, и как только в списке становится больше 5 000 элементов, SharePoint отклоняет запрос вместо его выполнения. Для пользователей List Filter Online это выглядит как ошибка или пустой результат в момент применения определённого фильтра.
В этой статье объясняется, как порог влияет на область фильтра, фильтры заголовков столбцов и предопределённый фильтр веб-части, как веб-часть указывает на столбцы фильтра, которым нужен индекс, и создаёт его за вас, как вместо этого добавить индекс в параметрах списка и какие правила удерживают фильтры, сортировку и группировку в пределах ограничения. Сама область фильтра описана в статье KB10255. Элементы управления области фильтра и поддерживаемые типы столбцов в List Filter Online.
Как порог влияет на фильтрацию
List Filter Online читает элементы через стандартный REST API SharePoint с помощью запроса CAML, который объединяет предопределённый фильтр администратора, условия области фильтра и фильтры заголовков столбцов, а также сортировку и группировку, настроенные в области свойств. SharePoint проверяет каждый такой запрос на соответствие порогу:
- условие по индексированному столбцу позволяет SharePoint выбрать подходящие строки напрямую, и запрос выполняется при любом размере списка;
- условие по неиндексированному столбцу требует просмотра всех элементов; в списке более 5 000 элементов SharePoint возвращает ошибку, и веб-часть показывает Что-то сработало неправильно! вместе с сообщением, которое вернул SharePoint;
- сортировка или группировка по неиндексированному столбцу даёт тот же эффект, поскольку строки нужно упорядочить, прежде чем вернуть первую страницу;
- списки значений элементов Раскрывающееся меню и фильтра заголовка столбца — тоже запросы; когда SharePoint их отклоняет, элемент просто не показывает значений.
Макс. число строк веб-части (от 1 до 1 000 строк на страницу) здесь не помогает. Оно ограничивает число возвращаемых строк, а не число строк, которые SharePoint должен просмотреть, чтобы их найти.

📝 Заметка
SharePoint применяет порог к каждому запросу, в том числе к запросам стандартного представления списка. Столбец, который нельзя использовать в области фильтра List Filter Online, нельзя отфильтровать и в самом списке; добавление индекса исправляет и то и другое.
Как помогает List Filter Online
Когда список, выбранный в группе Источник данных, содержит более 5 000 элементов, конфигуратор области фильтра проверяет каждый столбец, который вы выбираете для области. Столбец, который не индексирован и тип которого можно индексировать, помечается в двух местах:
- в группе Область фильтра области свойств, под заголовком Выбранные столбцы, панель предупреждения перечисляет затронутые столбцы: «Тип договора, Клиент: Столбец не проиндексирован. Фильтрация большого списка по этому столбцу может не работать.»;
- в панели Столбцы, открываемой кнопкой Выбрать столбцы, рядом с именем каждого затронутого столбца появляется жёлтый значок предупреждения. Его подсказка повторяет предупреждение и заканчивается словами Создать индекс.
Щелчок по значку предупреждения создаёт индекс: веб-часть устанавливает свойство Indexed столбца через REST API, значок исчезает после подтверждения SharePoint, а столбец пропадает из панели предупреждения. Если SharePoint отклоняет изменение, в области свойств появляется сообщение Произошла непредвиденная ошибка.; типичные причины перечислены в таблице в конце статьи.

Проверка выполняется по следующим правилам:
- предупреждение появляется только для списков, число элементов которых, по данным SharePoint на момент загрузки области свойств, превышает 5 000; для меньших списков ничего не показывается даже для неиндексированных столбцов;
- проверяются только столбцы, отмеченные в столбце Отображать конфигуратора;
- столбцы, тип которых SharePoint не может индексировать — несколько строк текста, вычисляемые, выбор нескольких значений и столбец Вложения, — никогда не помечаются;
- если веб-часть показывает данные с другого сайта, индекс создаётся в списке на том сайте.
Помимо области фильтра, конфигуратор столбцов группы Источник данных (Выбрать столбцы) показывает состояние индекса каждого столбца, если в группе Средства разработчика включён переключатель Включение режима разработчика: значок спидометра перед именем столбца зелёный с подсказкой (индексированный) или красный с подсказкой (неиндексированный). Используйте его для проверки столбцов, по которым планируется сортировка или группировка, — их проверка области фильтра не охватывает.

❗ Важно
Создание индекса изменяет список, а не веб-часть. Пользователю, который нажимает Создать индекс, нужно разрешение на управление списком — уровень разрешений Изменение, Проектирование или Полный доступ к списку, — иначе SharePoint отклонит запрос. Список может содержать не более 20 индексированных столбцов. Веб-часть не проверяет эти условия заранее; она сообщает результат, который вернул SharePoint.
Создание индексов из конфигуратора
- Откройте страницу в режиме редактирования и откройте область свойств веб-части List Filter.
- Разверните группу Область фильтра. Если список содержит более 5 000 элементов и некоторые из выбранных столбцов не индексированы, панель предупреждения под заголовком Выбранные столбцы перечисляет их.
- Нажмите Выбрать столбцы. В панели Столбцы найдите столбцы с жёлтым значком предупреждения.
- Щёлкните значок первого столбца. Пока выполняется запрос, значок недоступен; он исчезает, когда индекс создан.
- Повторите для остальных помеченных столбцов, затем нажмите Сохранить (или Отмена, если больше ничего не меняли — индексы уже созданы).
- Убедитесь, что панель предупреждения под Выбранные столбцы исчезла, повторно опубликуйте страницу и примените фильтры, которые раньше не работали.

Альтернатива: создание индекса в параметрах списка
Тот же индекс можно создать в самом SharePoint — это единственный способ для столбцов, используемых в сортировке, группировке или предопределённом фильтре, поскольку конфигуратор проверяет только столбцы области фильтра.
- Откройте список или библиотеку и выберите Параметры → Параметры списка (или Параметры библиотеки) в меню шестерёнки.
- В разделе Столбцы щёлкните Индексированные столбцы.
- Щёлкните Создать индекс.
- Выберите столбец в поле Основной столбец для этого индекса и нажмите Создать.
- Повторите для каждого столбца, используемого в фильтрах, сортировке или группировке, в пределах ограничения в 20 индексов на список.

SharePoint Online может индексировать столбцы следующих типов: одна строка текста, выбор (одно значение), число, валюта, дата и время, да/нет, подстановка (одно значение), пользователь или группа (одно значение) и управляемые метаданные (одно значение). Нельзя индексировать несколько строк текста, выбор нескольких значений, подстановку с несколькими значениями, пользователя или группу с несколькими значениями, управляемые метаданные с несколькими значениями, вычисляемые столбцы и столбцы гиперссылок или рисунков. Для списка, в котором уже 5 000 элементов, SharePoint создаёт индекс в фоновом режиме, и до начала работы фильтра может пройти некоторое время.
Проектирование фильтров для больших списков
Индекс ускоряет отдельное условие; от конструкции всего запроса зависит, останется ли список работоспособным по мере роста.
Начинайте предопределённый фильтр с индексированного столбца. В конструкторе запросов группы Фильтр сделайте первым условием группы верхнего уровня сравнение по индексированному столбцу, которое само по себе оставляет менее 5 000 элементов — статус, год, отдел. SharePoint использует первое индексированное условие для сужения набора перед проверкой остальных; условия по неиндексированным столбцам допустимы после него. Внутри группы OR все столбцы должны быть индексированы.
Выбирайте элементы, формирующие сравнения, совместимые с индексом. Eq, Neq, In, Geq, Leq, Gt, Lt и BeginsWith могут использовать индекс; Contains — нет. В области фильтра это означает Раскрывающееся меню, Раскрывающееся меню (множество значений), Пользователь или группа, Выбор даты, Диапазон дат, Относительная дата, Числовой диапазон и Да/Нет вместо Текст, а также Равно или Начинается с вместо Содержит в элементе Текст (с параметрами). Элемент Термин тоже использует Contains, и в больших списках его следует заменить на Раскрывающееся меню.
Учитывайте автоматические значения по умолчанию. Выбор даты применяет Содержит данные, а Относительная дата — Сегодня сразу при открытии страницы, поэтому эти элементы выполняют запрос по столбцу ещё до того, как пользователь что-либо тронет. Назначайте их только индексированным столбцам.
Сортируйте и группируйте по индексированным столбцам. Группы Сортировка и Группировка принимают любой столбец; в большом списке выбирайте индексированные и предпочитайте один уровень группировки. Помните, что пользователь также может сортировать из меню заголовка любого столбца с отметкой Возможна сортировка — снимите этот параметр для неиндексированных столбцов большого списка.
Оставляйте фильтры заголовков столбцов только на индексированных столбцах. Параметр Фильтруемое столбца загружает уникальные значения столбца для меню его заголовка; в большом списке оставляйте его включённым только для индексированных столбцов.
Используйте папки и ограничение строк по назначению. Показ элементов внутри папок (по умолчанию в группе Папки) запрашивает одну папку за раз, что часто удерживает каждый запрос в пределах ограничения даже без индексов. Небольшое Макс. число строк с разбивкой на страницы облегчает страницу, но не заменяет индекс.
💡 Совет
Включите Включение режима разработчика на время проектирования фильтров: команда Запрос CAML на панели инструментов показывает точный запрос, который отправляет веб-часть, так что вы видите задействованные сравнения и столбцы и можете сопоставить их с индексированными столбцами списка.
Симптомы и решения
| Симптом | Причина | Решение |
|---|---|---|
| Что-то сработало неправильно! с сообщением SharePoint о пороге представления списка сразу после применения фильтра | Условие фильтра использует неиндексированный столбец, или первое условие не сужает список до менее 5 000 элементов | Создайте индекс для столбца; переместите индексированное условие в начало предопределённого фильтра |
| Та же ошибка появляется без пользовательского фильтра, сразу после открытия страницы | Предопределённый фильтр, сортировка или группировка использует неиндексированный столбец, либо элемент Выбор даты / Относительная дата выполняет условие по умолчанию | Проиндексируйте столбцы, используемые в группах Фильтр, Сортировка и Группировка; замените элемент или проиндексируйте его столбец |
| Раскрывающееся меню или фильтр заголовка столбца не показывает значений — только (все), Содержит данные и Не содержит данных | SharePoint отклонил запрос, загружающий уникальные значения столбца | Создайте индекс для столбца |
| Фильтр работает для одних значений и не работает для других | Значение, которому соответствует более 5 000 элементов, оставляет остальную часть запроса без индекса | Добавьте в предопределённый фильтр или в область индексированное условие, которое дополнительно сужает результат |
| Щелчок по значку предупреждения заканчивается сообщением Произошла непредвиденная ошибка. | Пользователь не может управлять списком, в списке уже 20 индексов, или тип столбца нельзя индексировать | Попросите владельца списка создать индекс; удалите неиспользуемые индексы на странице Индексированные столбцы; выберите другой столбец или элемент |
| Неиндексированный столбец не помечен предупреждением | В списке 5 000 элементов или меньше, либо тип столбца нельзя индексировать | Действий не требуется, пока список не вырастет; для неиндексируемых типов выберите для фильтра индексируемый столбец |
| Индекс создан, но фильтр всё равно не работает | SharePoint ещё строит индекс в большом списке | Подождите и повторите попытку позже |
Связанные статьи
Порог — свойство SharePoint Online, и приведённые выше правила применимы к любому представлению большого списка. List Filter Online добавляет раннее предупреждение и создание индекса одним щелчком, чтобы проблема решалась при настройке страницы, а не обнаруживалась пользователями.
💡 Совет
Элементы управления области фильтра и формируемые ими сравнения перечислены в статье KB10255. Элементы управления области фильтра и поддерживаемые типы столбцов в List Filter Online. Построение предопределённого фильтра описано в статье KB50025. Как построить сложный запрос с помощью конструктора запросов List Filter Online, а остальные параметры области свойств — в статье KB10201. Настройка веб-части List Filter Online.