Как вывести дату, смещённую на N дней, в SharePoint

Узнайте секреты автоматического расчета дат в SharePoint! Сдвинуть дату на нужное число дней проще, чем кажется. Никакой рутины, только магия формул.

В работе с 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 дней назад․

Пошаговая инструкция

  1. Создайте новый автоматизированный поток → «Расписание – Запуск по расписанию»․
  2. Установите периодичность – например, «Каждый день в 02:00» (время можно подобрать под ваш часовой пояс)․
  3. Добавьте действие «Получить элементы» (Get items) из нужного списка SharePoint․
  4. Внутри цикла «Применить к каждому» (Apply to each)* добавьте действие «Обновить элемент» (Update item)*․
  5. В поле, которое нужно заполнить (например, Дата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 и т․д․

  • Обходной путь для ежедневного обновления без Power Automate

    Если использование Power Automate невозможно, можно воспользоваться трюком с дополнительным столбцом типа «Одной строки текста», который обновляется через workflow или через вычисляемый столбец с функцией NOW (доступна в SharePoint Online через поток Power Automate, но есть и другой способ)․

    Метод через «Вычисляемый столбец + колонка «Изменено»»

    1. Создайте вычисляемый столбец ДатаNДнейНазад с формулой:
    =[Изменено]-N

    Поле [Изменено] автоматически обновляется каждый раз, когда элемент изменяется․ Если вы периодически выполняете «нулевое» изменение (например, через поток, который просто сохраняет элемент без реальных изменений), то дата будет обновляться․

    1. Создайте простой поток 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․