В SharePoint часто возникает необходимость показывать только те элементы‚ которые были созданы или изменены за определённый период (например‚ за последние 30 дней‚ за текущий месяц и т.д.). Ниже описаны несколько проверенных способов реализовать такую фильтрацию – как в классическом‚ так и в современном интерфейсе‚ а также с использованием программных средств (CAML‚ REST‚ Power Automate).
Фильтрация через представление (View) – самый простой способ
Этот метод подходит для большинства сценариев и не требует написания кода.
- Откройте нужный список или библиотеку.
- На панели команд выберите Все элементы → Сохранить представление как (или Изменить представление‚ если хотите изменить существующее).
- В открывшемся окне перейдите на вкладку Фильтр.
- Установите переключатель Показать элементы‚ когда поле.
- Выберите поле Создано (Created) или Изменено (Modified) – в зависимости от того‚ какой возраст вам нужен.
- Выберите оператор больше либо равно (≥) или меньше либо равно (≤).
- В поле значения введите формулу‚ которая вычисляет нужную дату. SharePoint понимает относительные даты через функции
[Today]‚[Now]и арифметические операции:- Для элементов за последние N дней:
[Today]-N - Для элементов за текущий месяц:
=DATE(YEAR([Today])‚MONTH([Today])‚1) - Для элементов за прошлый месяц:
=DATE(YEAR([Today])‚MONTH([Today])-1‚1)…=DATE(YEAR([Today])‚MONTH([Today])‚0)
- Для элементов за последние N дней:
- Нажмите OK → Сохранить. Теперь представление показывает только записи‚ удовлетворяющие условию возраста.
Пример: Показать элементы‚ созданные за последние 7 дней.
- Поле: Создано
- Оператор: больше либо равно
- Значение:
[Today]-7
Использование вычисляемого столбца (Calculated Column) для более сложных условий
Если нужно фильтровать по возрасту записи относительно другого поля (например‚ дата окончания задачи) или комбинировать несколько условий‚ удобно добавить вычисляемый столбец.
- Перейдите в Настройки списка → Создать столбец.
- Укажите имя‚ например ВозрастЗаписиДней‚ тип Вычисляемый.
- В формуле вычислите разницу между текущей датой и датой создания:
- Установите формат вывода Число (количество дней).
- Сохраните столбец.
- Теперь при создании или изменении представления можно фильтровать по этому вычисляемому полю‚ используя обычные операторы (меньше‚ больше и т.д.).
=ДАТА(ГОД([Сегодня]);МЕСЯЦ([Сегодня]);ДЕНЬ([Сегодня])) ― [Создано]
Преимущество: значение вычисляется один раз при изменении элемента‚ что снижает нагрузку при фильтрации больших списков.
Фильтрация с помощью CAML‑запроса (для пользовательских веб‑частей‚ решений на серверной стороне или Power Apps)
Когда требуется программно получить только свежие элементы‚ удобно сформировать CAML‑запрос с условием на поле Created или Modified.
Пример CAML для элементов за последние 30 дней:
<View> <Query> <Where> <Geq> <FieldRef Name='Created' /> <Value Type='DateTime'> <Today OffsetDays='-30' /> </Value> </Geq> </Where> </Query> </View>
Параметр OffsetDays позволяет указывать смещение относительно сегодняшней даты без необходимости вычислять её в коде.
Для получения элементов за текущий календарный месяц можно использовать:
<Where> <And> <Geq> <FieldRef Name='Created' /> <Value Type='DateTime'> <Today /> </Value> </Geq> <Lt> <FieldRef Name='Created' /> <Value Type='DateTime'> <Today OffsetDays='1' /> </Value> </Lt> </And> </Where>
Эти запросы работают в:
- Серверном объектном модели SharePoint (SSOM)
- Клиентской объектной модели (CSOM / JSOM)
- REST API (через параметр
$filter– см. ниже) - Power Apps (функция
Filterс условием наCreated)
Фильтрация через REST API
Если вы работаете с SharePoint через JavaScript‚ Power Automate или внешние приложения‚ удобно использовать OData‑фильтр.
Пример запроса для элементов за последние 14 дней:
https://contoso.sharepoint.com/sites/site/_api/web/lists/GetBy('Задачи')/items?
$filter=Created ge datetime'2026-05-25T00:00:00Z'
Чтобы избежать жёсткой даты‚ можно подставить динамическое значение в скрипте:
var today = new Date;
var past = new Date;
past.setDate(today.getDate ― 14);
var filter = "Created ge datetime'" + past.toISOString + "'";
var url = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/GetBy('Задачи')/items?$filter=" + encodeURIComponent(filter);
При работе в Power Automate достаточно добавить действие Получить элементы и в поле Filter Query ввести:
Created ge '@{addDays(utcNow‚-14)}'
Фильтрация с помощью Power Automate (Flow)
Power Automate позволяет создавать автоматические уведомления‚ синхронизацию или обработку только «свежих» элементов.
- Создайте новый автоматический поток → При создании элемента (или По расписанию).
- Добавьте действие Получить элементы из нужного списка.
- В разделе Filter Query укажите условие‚ например:
- Далее добавьте любые дальнейшие действия (отправка письма‚ создание задачи в Planner и т.д.).
- Сохраните поток.
Created ge '@{addDays(utcNow‚-7)}'
Такой подход полезен‚ когда нужно не только отфильтровать‚ но и выполнить дополнительную логику (например‚ архивировать старые записи).
Особенности работы с большими списками (порог 5000 элементов)
При работе со списками‚ превышающими пороговое представление (5000 элементов)‚ фильтрация по полям Created или Modified возможна только если эти поля индексированы. Индексирование ускоряет выполнение запросов и позволяет обходить ограничение представления.
Как добавить индекс:
- Перейдите в Настройки списка.
- В разделе Столбцы выберите Индексированные столбцы.
- Нажмите Создать индекс и отметьте поле Создано (или Изменено).
- Подтвердите создание.
После индексирования вы можете безопасно использовать любые из описанных выше методов фильтрации‚ даже если список содержит десятки тысяч элементов.
- Для быстрой настройки без кода используйте представление с фильтром по дате (метод 1).
- Если нужно вычислять возраст записи или комбинировать несколько условий – добавьте вычисляемый столбец (метод 2);
- Для разработки пользовательских решений (веб‑части‚ приложения‚ Power Apps) удобно применять CAML или REST/OData (методы 3‑4).
- Power Automate идеально подходит для автоматизации процессов на основе свежих элементов (метод 5).
- Не забывайте про индексирование полей даты‚ если работаете с большими списками‚ иначе фильтрация может блокироваться порогом представления.
Следуя этим рекомендациям‚ вы сможете эффективно отфильтровать элементы SharePoint списка по возрасту записи в любом сценарии – от простого пользовательского представления до сложных корпоративных решений.