Отличить тридцать дней от календарного месяца

Учебные задачи

На 31 января сравниваем фиксированное количество дней и ДобавитьМесяц, затем считаем дни февраля по календарным границам.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Используется фиксированная дата, а не ТекущаяДата: результаты можно сравнить независимо от дня запуска.

  2. Данные создаются только в памяти учебной базы; рабочие документы и регистры не меняются.


Исходная = Дата(2026, 1, 31, 10, 0, 0);
ЧерезТридцатьДней = Исходная + 30 * 24 * 60 * 60;
ЧерезМесяц = ДобавитьМесяц(Исходная, 1);
Сообщить(Формат(ЧерезТридцатьДней, "ДФ=yyyy-MM-dd HH:mm:ss"));
Сообщить(Формат(ЧерезМесяц, "ДФ=yyyy-MM-dd HH:mm:ss"));
НачалоФевраля = НачалоМесяца(ЧерезМесяц);
НачалоМарта = КонецМесяца(ЧерезМесяц) + 1;
ДнейВФеврале = (НачалоМарта - НачалоФевраля) / (24 * 60 * 60);
Сообщить(ДнейВФеврале);

Разбор по шагам

  1. Фиксированные 30 дней не учитывают длину календарного месяца.

  2. ДобавитьМесяц переносит на следующий календарный месяц; в феврале нет 31 числа.

  3. НачалоМесяца и КонецМесяца+1 задают границы февраля.

  4. Разность календарных представлений делим на число секунд в условных календарных сутках, не трактуя её как фактическую длительность с переходами зоны.

Как проверить результат

  1. 30 дней дают 2026-03-02 10:00:00; один месяц — 2026-02-28 10:00:00.

  2. Дней в феврале 2026 года — 28.

  3. Замените год на 2024: февраль содержит 29 дней, а результат календарного сдвига должен попасть на 29 февраля.

Ожидаемый результат

На конкретной граничной дате показано различие двух способов сдвига.

На что обратить внимание

  1. Не заменяйте месячный срок на 30 дней без требований задачи.

  2. Для расписаний с переходами часового пояса календарный день и фактически прошедшие 24 часа могут различаться.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.