Определяет календарный день в указанной дате.
Синтаксис
День(<Дата>)Примеры платформы
Процедура ПолучитьСтажЗаПериод(Знач ДатаОкончанияПериода,
Знач ДатаНачалаПериода,
Лет=0, Месяцев=0, Дней=0) Экспорт
Если ДатаОкончанияПериода >= ДатаНачалаПериода тогда
Лет1 = Год(ДатаОкончанияПериода);
Месяцев1 = Месяц(ДатаОкончанияПериода);
Если НачалоДня(ДатаОкончанияПериода) <> НачалоДня(КонецМесяца(ДатаОкончанияПериода)) Тогда
Дней1 = День(ДатаОкончанияПериода);
Иначе
Дней1 = 30;
КонецЕсли;
Лет2 = Год(ДатаНачалаПериода);
Месяцев2 = Месяц(ДатаНачалаПериода);
Если НачалоДня(ДатаНачалаПериода) <> НачалоДня(КонецМесяца(ДатаНачалаПериода)) Тогда
Дней2 = День(ДатаНачалаПериода);
Иначе
Дней2 = 30;
КонецЕсли;
Лет = Лет1 - Лет2;
Месяцев = Месяцев1 - Месяцев2;
Дней = Дней1 - Дней2 + 1;
Иначе
Лет = 0;
Месяцев = 0;
Дней = 0;
КонецЕсли;
КонецПроцедурыПолное описание, параметры и ограничения
Глобальный контекст.День (Global context.Day)
Глобальный контекст (Global context)
День (Day)
Доступен, начиная с версии 8.0.
Синтаксис:
День(<Дата>)
Параметры:
<Дата> (обязательный)
Тип: Дата.
Исходная дата.
Возвращаемое значение:
Тип: Число.
День в указанной дате.
Описание:
Определяет календарный день в указанной дате.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Внимание: Данный метод не поддерживается при работе через COM-соединение
Пример:
Процедура ПолучитьСтажЗаПериод(Знач ДатаОкончанияПериода,
Знач ДатаНачалаПериода,
Лет=0, Месяцев=0, Дней=0) Экспорт
Если ДатаОкончанияПериода >= ДатаНачалаПериода тогда
Лет1 = Год(ДатаОкончанияПериода);
Месяцев1 = Месяц(ДатаОкончанияПериода);
Если НачалоДня(ДатаОкончанияПериода) <> НачалоДня(КонецМесяца(ДатаОкончанияПериода)) Тогда
Дней1 = День(ДатаОкончанияПериода);
Иначе
Дней1 = 30;//В каждом месяце ровно 30 дней
КонецЕсли;
Лет2 = Год(ДатаНачалаПериода);
Месяцев2 = Месяц(ДатаНачалаПериода);
Если НачалоДня(ДатаНачалаПериода) <> НачалоДня(КонецМесяца(ДатаНачалаПериода)) Тогда
Дней2 = День(ДатаНачалаПериода);
Иначе
Дней2 = 30;//В каждом месяце ровно 30 дней
КонецЕсли;
Лет = Лет1 - Лет2;
Месяцев = Месяцев1 - Месяцев2;
Дней = Дней1 - Дней2 + 1; //1 день на увольнение
Иначе
Лет = 0;
Месяцев = 0;
Дней = 0;
КонецЕсли;
КонецПроцедуры //ПолучитьСтажЗаПериод
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Найти следующий будний день в упрощённом учебном календаре
От пятницы переходим к следующему дню и пропускаем субботу и воскресенье. Праздники сознательно не учитываются.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Используется фиксированная дата, а не ТекущаяДата: результаты можно сравнить независимо от дня запуска.
Данные создаются только в памяти учебной базы; рабочие документы и регистры не меняются.
Для урока будними считаются только понедельник–пятница. Производственный календарь конфигурации здесь не используется.
Исходная = Дата(2026, 9, 18, 17, 0, 0);
Кандидат = НачалоДня(Исходная) + 24 * 60 * 60;
Пока ДеньНедели(Кандидат) > 5 Цикл
Кандидат = Кандидат + 24 * 60 * 60;
КонецЦикла;
Сообщить(Формат(Кандидат, "ДФ=yyyy-MM-dd HH:mm:ss"));
Сообщить(ДеньНедели(Кандидат));
Сообщить(Год(Кандидат));
Сообщить(Месяц(Кандидат));
Сообщить(День(Кандидат));Разбор по шагам
Приводим исходную пятницу к началу календарного дня.
Ищем строго следующий день, не включая исходную дату.
ДеньНедели возвращает 1 для понедельника и 7 для воскресенья; значения 6 и 7 пропускаем.
Выводим дату и её числовые компоненты для проверки.
Как проверить результат
Результат 2026-09-21 00:00:00, номер дня недели 1; компоненты 2026, 9, 21.
Замените исходник на 2026-09-17: результат будет пятница 18 сентября.
Если понедельник является праздником, этот алгоритм всё равно его вернёт — так видна граница учебной модели.
Ожидаемый результат
Найден следующий день понедельник–пятница в явно упрощённом календаре.
На что обратить внимание
Не используйте этот алгоритм для расчёта реальных сроков доставки, зарплаты или регламентированных рабочих дней; там нужен производственный календарь конфигурации.
Прибавление 86400 к Дата здесь означает сдвиг календарного представления; это не расчёт фактически прошедших секунд через переход часового пояса.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Проверить календарную дату YYYY-MM-DD из учебного обмена
Проверяем форму строки и затем существование календарной даты. Три контрольных строки показывают два разных класса отказа.
Где и как запускать
В учебной базе создайте серверный общий модуль УчебныеЗадачи. Вставьте приведённые функции и процедуру целиком в модуль, не внутрь другой процедуры. Вызовите УчебныеЗадачи.ВыполнитьПример() из серверного обработчика команды учебной обработки. Каждый урок запускайте отдельно, без дублирования одноимённых процедур.
Подготовка
Используется фиксированная дата, а не ТекущаяДата: результаты можно сравнить независимо от дня запуска.
Данные создаются только в памяти учебной базы; рабочие документы и регистры не меняются.
Урок поддерживает только календарную дату без времени и смещения. Это не универсальный разбор 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"));
Исключение
Сообщить("Отклонено: " + Текст);
КонецПопытки;
КонецЦикла;
КонецПроцедурыРазбор по шагам
Проверяем тип, длину и расположение ASCII-цифр и дефисов до выделения частей.
Извлекаем год, месяц и день в числовом виде.
Дата создаёт календарное значение; дополнительно сверяем компоненты, чтобы не принять преобразованный другой день.
В вызывающей процедуре ошибка одной строки не останавливает проверку остальных учебных входов.
Как проверить результат
2026-02-28 принято; 2026-02-30 и 28.02.2026 отклонены.
Замените первую строку на 2024-02-29: она должна быть принята.
Строка 2026-02-28T10:00:00Z отклоняется: такой формат не входит в учебный контракт.
Ожидаемый результат
Форма строки и календарная корректность проверены отдельными этапами.
На что обратить внимание
Регулярное выражение проверяет структуру текста, но само не знает, сколько дней в феврале.
Исходные строки здесь вымышленные; в рабочем журнале учитывайте требования к личным данным.
Не подавляйте ошибку без статуса: вызывающий код должен отличать отказ от успешно разобранной даты.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.