Логика работы шаблона нерабочих дней и расчёта дат
На этой странице — подробно и простым языком, как платформа считает срок с учетом нерабочих дней.
Что учитывает система
Для каждой связки «точка выдачи — поставщик» система смотрит:
- Выбран ли режим работы нерабочих дней.
- Подключен ли шаблон нерабочих дней.
- Заполнены ли свои (ручные) настройки для этой связки.
Один и тот же поставщик на разных точках выдачи может работать по разным правилам — это нормально.
Какие режимы есть и что они значат
| Режим в панели управления | Что будет в расчёте |
|---|---|
| Без шаблона нерабочих дней | Нерабочие дни не учитываются. |
| Только шаблон нерабочих дней | Учитываются только дни из выбранного шаблона. |
| Шаблон + свои настройки | Учитываются и шаблонные, и свои дни одновременно. |
| Свои настройки | Учитываются только свои дни из этой связки. |
Правило выбора режима (если в данных есть несостыковка)
Если выбран режим с шаблоном, но шаблон фактически не указан:
- при наличии «своих» правил система использует только свои настройки;
- если своих правил нет, система считает, что нерабочих дней для этой связки нет.
Какие дни могут считаться нерабочими
Система проверяет три группы правил:
- выходные дни недели (например, суббота и воскресенье);
- ежегодные даты (например, 01-01, 09-05);
- разовые даты (конкретный день конкретного года).
Если день попал хотя бы в одну из этих групп — он считается нерабочим.
Как читаются даты
- Ежегодная дата — повторяется каждый год (например,
01-01). - Разовая дата — действует только в конкретном году (например,
2026-01-08). - Если одна и та же дата случайно внесена несколько раз, система учитывает её как один день.
Как сдвигается дата
- Сначала система получает базовую дату доставки по сроку.
- Проверяет: попадает ли эта дата в нерабочий день.
- Если да — переносит на следующий календарный день.
- Повторяет проверку, пока не найдет рабочий день.
Поэтому смещение зависит не от количества «галочек» в настройках, а от того, на какие именно календарные дни они попали.
Подробные примеры
Пример 1. Только шаблон
- Базовая дата: суббота, 10.05
- В шаблоне выходные: суббота и воскресенье
Что сделает система:
- 10.05 (суббота) — нерабочий, перенос на 11.05
- 11.05 (воскресенье) — нерабочий, перенос на 12.05
- 12.05 (понедельник) — рабочий
Итог: дата сместится на 2 дня.
Пример 2. Шаблон + свои настройки
- Базовая дата: пятница, 08.05
- В шаблоне выходные: суббота и воскресенье
- В «своих» настройках добавлена разовая дата: 09.05
Что важно: 09.05 уже попадает в шаблонный выходной период, поэтому «добавление» не всегда увеличивает смещение.
Возможный проход:
- 08.05 — рабочий (если не отмечен как праздник) → дата может остаться 08.05
- Если базовая дата попала на 09.05/10.05/11.05 — перенос пойдет до первого рабочего дня
Итог: смещение зависит от того, куда попала исходная дата, а не от количества записей в шаблоне и «своих».
Пример 3. Почему «2 дня в шаблоне + 1 свой» не равно всегда +3
- В шаблоне: суббота, воскресенье
- В своих: понедельник
Если базовая дата = пятница, то перенос будет:
- суббота (нерабочий) → воскресенье (нерабочий) → понедельник (нерабочий) → вторник (рабочий)
Здесь получится +3.
Но если базовая дата = вторник, перенос может быть 0 (если вторник не попадает в правила).
Поэтому считать нужно по календарю, а не по числу правил.
Важно про «свои настройки поверх шаблона»
В режиме «Шаблон + свои настройки» свои правила работают как добавление к шаблону.
Это значит:
- можно расширить список нерабочих дней для конкретной связки;
- нельзя «отменить» день, который уже отмечен в шаблоне.
Проще: «свои» настройки в этом режиме — это добавка сверху, а не «замена шаблона».
Что происходит, если шаблон удалили
Если шаблон удалён, система автоматически отвязывает его от связок. После этого в связке остаются только те правила, которые реально доступны (например, только свои настройки, если они были заполнены).
Если после удаления шаблона у связки не осталось ни шаблонных, ни своих правил, фактически расчет пойдет как без нерабочих дней.
Практическая проверка после настройки
- Возьмите тестовую связку точка выдачи — поставщик.
- Проверьте срок на дате, где есть выходной/праздник.
- Убедитесь, что дата переносится на ближайший рабочий день так, как ожидаете.
- Проверьте оба сценария: только шаблон и шаблон + свои настройки, чтобы видеть разницу.