В работе с SharePoint часто требуется отображать или использовать дату, смещённую на определённое количество дней относительно текущей даты (например, «за 7 дней до сегодня», «за 30 дней назад» и т․д․)․ Ниже рассмотрены несколько проверенных способов, которые позволяют делать это автоматически без ручного вмешательства․
Вычисляемый столбец (Calculated Column)
Самый простой и быстрый способ – добавить в список вычисляемый столбец, в котором используется формула SharePoint․
Синтаксис формулы
=[ДатаИсходная]-N
Где:
[ДатаИсходная]– имя столбца типа «Дата и время», от которого нужно отсчитывать;N– целое число дней, которое нужно вычесть (можно также использовать отрицательное значение для прибавления дней)․
Пример
Предположим, у нас есть столбец ДатаНачала․ Нужно вывести дату, которая находится 10 дней назад от этой даты․
=[ДатаНачала]-10
После сохранения столбца SharePoint будет автоматически пересчитывать значение при каждом изменении ДатаНачала․
Ограничения и нюансы
- Вычисляемый столбец работает только с датой, без учёта времени․ Если важна точность до часа/минуты, используйте тип «Дата и время» и добавьте
TIME‑функцию (см․ ниже)․ - Формула не обновляется автоматически каждый день, если в ней используется функция
TODAY(см․ пункт 2)․ Для ежедневного обновления без Power Automate потребуется обходной путь (см․ раздел 4)․ - При работе с часовыми поясами SharePoint хранит даты в UTC, а отображает в соответствии с региональными настройками сайта․ При необходимости уточните часовой пояс в настройках региона․
Использование функции TODAY в вычисляемом столбце
Если нужно всегда брать «сегодняшнюю» дату (не привязываясь к конкретному столбцу), можно воспользоваться встроенной функцией TODAY․
Формула для N дней назад от сегодня
=TODAY-N
Пример: дата за 5 дней до сегодня
=TODAY-5
Однако, как отмечалось в источниках из интернета, SharePoint не пересчитывает такие столбцы каждый день автоматически․ Значение фиксируется в момент последнего изменения элемента․ Поэтому для действительно «актуального» значения каждый день потребуется один из следующих подходов․
Power Automate (Microsoft Flow) – ежедневное обновление
Power Automate позволяет создавать потоки, которые запускаются по расписанию и обновляют вычисляемое поле (или создают отдельный столбец) с актуальной датой N дней назад․
Пошаговая инструкция
- Создайте новый автоматизированный поток → «Расписание – Запуск по расписанию»․
- Установите периодичность – например, «Каждый день в 02:00» (время можно подобрать под ваш часовой пояс)․
- Добавьте действие «Получить элементы» (Get items) из нужного списка SharePoint․
- Внутри цикла «Применить к каждому» (Apply to each)* добавьте действие «Обновить элемент» (Update item)*․
- В поле, которое нужно заполнить (например, ДатаNДнейНазад), используйте выражение:
addDays(utcNow, -N, 'yyyy-MM-dd')
Где N – количество дней, которое нужно вычесть․ Функция utcNow возвращает текущую дату и время в UTC; addDays смещает её на нужное количество дней; формат 'yyyy-MM-dd' обеспечивает корректную запись в поле типа «Дата и время»․
Учёт рабочих дней и праздников
Если требуется учитывать только рабочие дни (пн‑пт) и исключать праздники, можно добавить дополнительную логику:
- Получите список праздников из отдельного списка SharePoint (например, Праздники)․
- В цикле проверяйте, не попадает ли вычисленная дата в этот список (через условие if и действие Получить элементы с фильтром
HolidayDate eq '@{outputs('Compose')}')․ - Если дата является выходным или праздником, уменьшайте счётчик на дополнительный день и повторяйте проверку․
Такой подход описан в блоге KomuraSoft LLC (см․ предоставленный фрагмент): в начале потока размещают проверку «сегодня является рабочим днём», а затем выполняют действие «Получить несколько элементов» по мастер‑списку праздников․
Преимущества Power Automate
- Обновление происходит точно по расписанию, независимо от изменений элементов․
- Лёгко добавлять сложную логику (рабочие дни, праздники, часовые пояса)․
- Возможность отправлять уведомления, создавать задачи в Planner и т․д․
- Создайте вычисляемый столбец ДатаNДнейНазад с формулой:
Обходной путь для ежедневного обновления без Power Automate
Если использование Power Automate невозможно, можно воспользоваться трюком с дополнительным столбцом типа «Одной строки текста», который обновляется через workflow или через вычисляемый столбец с функцией NOW (доступна в SharePoint Online через поток Power Automate, но есть и другой способ)․
Метод через «Вычисляемый столбец + колонка «Изменено»»
=[Изменено]-N
Поле [Изменено] автоматически обновляется каждый раз, когда элемент изменяется․ Если вы периодически выполняете «нулевое» изменение (например, через поток, который просто сохраняет элемент без реальных изменений), то дата будет обновляться․
- Создайте простой поток Power Automate с триггером «По расписанию» (ежедневно) и действием «Обновить элемент», которое просто сохраняет элемент без изменения данных (можно скопировать одно и то же значение в любое поле)․
Таким образом, даже без прямого вычисления даты N дней назад мы получаем ежедневно актуальное значение через поле [Изменено]․
Преимущества и недостатки
- Плюс: Не требует сложных выражений в Power Automate, достаточно простого обновления элемента․
- Минус: Нужно поддерживать дополнительный поток, который может создавать лишние записи в журнале аудита․
Форматирование выводимой даты (JSON‑форматирование столбца)
После того как вы получили корректное значение даты, часто требуется изменить её отображение в представлении списка (например, показать только день месяца и название месяца)․ Для этого используется колонка JSON‑форматирования․
Пример JSON‑шаблона для отображения «dd MMMM yyyy»
{
"$schema": "https://developer․microsoft․com/json-schemas/sp/v2/column-formatting․schema․json",
"elmType": "div",
"txtContent": "=@currentField․toLocaleDateString('ru-RU', {year:'numeric', month:'long', day:'numeric'})"
}
Этот шаблон можно вставить в меню столбца → «Форматировать столбец» → «Дополнительно» → «Расширенный режим»․
Изменение цвета в зависимости от «свежести» даты
Если нужно выделить даты, которые старше, например, 30 дней, добавьте условие:
{
"$schema": "https://developer․microsoft․com/json-schemas/sp/v2/column-formatting․schema․json",
"elmType": "div",
"attributes": {
"class": "=if(@currentField <= addDays(now, -30), 'ms-fontColor-red', '')"
},
"txtContent": "=@currentField․toLocaleDateString('ru-RU')"
}
Класс ms-fontColor-red – стандартный класс SharePoint для красного текста; можно заменить на любой собственный CSS‑класс, если используете кастомные стили․
Сравнение методов
| Метод | Простота реализации | Требует Power Automate | Обновление каждый день | Поддержка рабочих дней/праздников |
|---|---|---|---|---|
| Вычисляемый столбец (без TODAY) | Высокая | Нет | Нет (только при изменении элемента) | Ограничена |
| Вычисляемый столбец с TODAY | Средняя | Нет | Нет (значение фиксируется при изменении) | Ограничена |
| Power Automate (ежедневный поток) | Средняя | Да | Да | Да (можно добавить логику) |
| Обходной путь через поле Изменено | Низкая | Да (простой поток) | Да | Ограничена (нужно добавить проверку праздников) |
Выбор метода зависит от ваших ограничений:
- Если достаточно обновления при изменении элемента – используйте простой вычисляемый столбец․
- Если нужна актуальная дата каждый день без участия пользователей – лучший вариант – Power Automate с расписанием․
- Если Power Automate недоступен, а ежедневное обновление критично – рассмотрите обходной путь через поле
[Изменено]․
Полезные ссылки и ресурсы
- Работа с датами и временем в SharePoint (Microsoft Learn)
- Функции даты и времени в Power Automate
- Форматирование столбцов с помощью JSON
- Блог KomuraSoft LLC – пример проверки рабочих дней и праздников в Power Automate (см․ фрагмент из предоставленного материала)․
Автоматическое вычисление даты N дней назад в SharePoint можно реализовать несколькими способами:
- Самый быстрый – вычисляемый столбец с формулой
[Дата]-NилиTODAY-N(подходит, если достаточно обновления при изменении элемента)․ - Для ежедневной актуальности без участия пользователей – настроить поток Power Automate, который запускается по расписанию и обновляет нужное поле через функцию
addDays(utcNow, -N)․ - Если требуется учитывать только рабочие дни и исключать праздники – добавьте в поток проверку по списку праздников, как показано в примерах из блога KomuraSoft LLC․
- Для изменения внешнего вида даты в представлении используйте JSON‑форматирование столбца․
Выбирайте подход, соответствующий вашим требованиям к простоте поддержки, необходимости ежедневного обновления и сложности бизнес‑логики (рабочие дни, праздники, часовые пояса)․ При правильной настройке вы получите надежный и полностью автоматизированный способ отображения даты N дней назад в любых списках и библиотеках SharePoint․