Глобальный контекст.Месяц

Методы · Month

Определяет месяц в указанной дате.

Синтаксис

Месяц(<Дата>)
Полное описание, параметры и ограничения

Глобальный контекст.Месяц (Global context.Month)

Глобальный контекст (Global context)

Месяц (Month)

Доступен, начиная с версии 8.0.

Синтаксис:
Месяц(<Дата>)
Параметры:

<Дата> (обязательный)
Тип: Дата.
Исходная дата.
Возвращаемое значение:
Тип: Число.
Месяц в указанной дате.
Описание:

Определяет месяц в указанной дате.

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Внимание: Данный метод не поддерживается при работе через COM-соединение
Пример:

// см. пример для метода День

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Найти следующий будний день в упрощённом учебном календаре

От пятницы переходим к следующему дню и пропускаем субботу и воскресенье. Праздники сознательно не учитываются.

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

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

Подготовка

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

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

  3. Для урока будними считаются только понедельник–пятница. Производственный календарь конфигурации здесь не используется.


Исходная = Дата(2026, 9, 18, 17, 0, 0);
Кандидат = НачалоДня(Исходная) + 24 * 60 * 60;
Пока ДеньНедели(Кандидат) > 5 Цикл
    Кандидат = Кандидат + 24 * 60 * 60;
КонецЦикла;
Сообщить(Формат(Кандидат, "ДФ=yyyy-MM-dd HH:mm:ss"));
Сообщить(ДеньНедели(Кандидат));
Сообщить(Год(Кандидат));
Сообщить(Месяц(Кандидат));
Сообщить(День(Кандидат));

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

  1. Приводим исходную пятницу к началу календарного дня.

  2. Ищем строго следующий день, не включая исходную дату.

  3. ДеньНедели возвращает 1 для понедельника и 7 для воскресенья; значения 6 и 7 пропускаем.

  4. Выводим дату и её числовые компоненты для проверки.

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

  1. Результат 2026-09-21 00:00:00, номер дня недели 1; компоненты 2026, 9, 21.

  2. Замените исходник на 2026-09-17: результат будет пятница 18 сентября.

  3. Если понедельник является праздником, этот алгоритм всё равно его вернёт — так видна граница учебной модели.

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

Найден следующий день понедельник–пятница в явно упрощённом календаре.

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

  1. Не используйте этот алгоритм для расчёта реальных сроков доставки, зарплаты или регламентированных рабочих дней; там нужен производственный календарь конфигурации.

  2. Прибавление 86400 к Дата здесь означает сдвиг календарного представления; это не расчёт фактически прошедших секунд через переход часового пояса.

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

Проверить календарную дату YYYY-MM-DD из учебного обмена

Проверяем форму строки и затем существование календарной даты. Три контрольных строки показывают два разных класса отказа.

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

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

Подготовка

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

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

  3. Урок поддерживает только календарную дату без времени и смещения. Это не универсальный разбор ISO 8601.


Функция УчебнаяДатаИзСтроки(Текст) Экспорт
    Если ТипЗнч(Текст) <> Тип("Строка") Тогда
        ВызватьИсключение "Дата должна быть строкой YYYY-MM-DD";
    КонецЕсли;
    Если СтрДлина(Текст) <> 10 Или Не СтрПодобнаПоРегулярномуВыражению(Текст, "^[0-9]{4}-[0-9]{2}-[0-9]{2}$") Тогда
        ВызватьИсключение "Неверный формат календарной даты";
    КонецЕсли;
    НомерГода = Число(Лев(Текст, 4));
    НомерМесяца = Число(Сред(Текст, 6, 2));
    НомерДня = Число(Прав(Текст, 2));
    Результат = Дата(НомерГода, НомерМесяца, НомерДня);
    Если Год(Результат) <> НомерГода Или Месяц(Результат) <> НомерМесяца Или День(Результат) <> НомерДня Тогда
        ВызватьИсключение "Дата не соответствует календарю";
    КонецЕсли;
    Возврат Результат;
КонецФункции

Процедура ВыполнитьПример() Экспорт
    Входящие = Новый Массив;
    Входящие.Добавить("2026-02-28");
    Входящие.Добавить("2026-02-30");
    Входящие.Добавить("28.02.2026");
    Для Каждого Текст Из Входящие Цикл
        Попытка
            ЗначениеДаты = УчебнаяДатаИзСтроки(Текст);
            Сообщить("Принято: " + Формат(ЗначениеДаты, "ДФ=yyyy-MM-dd"));
        Исключение
            Сообщить("Отклонено: " + Текст);
        КонецПопытки;
    КонецЦикла;
КонецПроцедуры

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

  1. Проверяем тип, длину и расположение ASCII-цифр и дефисов до выделения частей.

  2. Извлекаем год, месяц и день в числовом виде.

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

  4. В вызывающей процедуре ошибка одной строки не останавливает проверку остальных учебных входов.

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

  1. 2026-02-28 принято; 2026-02-30 и 28.02.2026 отклонены.

  2. Замените первую строку на 2024-02-29: она должна быть принята.

  3. Строка 2026-02-28T10:00:00Z отклоняется: такой формат не входит в учебный контракт.

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

Форма строки и календарная корректность проверены отдельными этапами.

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

  1. Регулярное выражение проверяет структуру текста, но само не знает, сколько дней в феврале.

  2. Исходные строки здесь вымышленные; в рабочем журнале учитывайте требования к личным данным.

  3. Не подавляйте ошибку без статуса: вызывающий код должен отличать отказ от успешно разобранной даты.

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

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

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

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

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