Основные функции для работы с датой и временем
-
bslТекущаяДата()— ваша отправная точка.
Возвращает дату и время сервера. Крайне важно использовать эту функцию вместоДата(), чтобы избежать путаницы с часовыми поясами пользователей.
ДатаДокумента = ТекущаяДата(); // Дата и время в момент выполнения
-
bslДата(<год>, <месяц>, <день>)— создание конкретной даты.
ДатаКонцаГода = Дата(2024, 12, 31);
-
bslНачалоДня()иКонецДня()— приведение даты к границам дня.
Очень полезно для отчетов и отборов, чтобы не пропустить документы, созданные в любое время нужного дня.
Отбор.Дата = НачалоДня(ВыбраннаяДата); // Например, 17.11.2024 00:00:00 // Это позволит найти все документы за 17.11.2024, созданные с 00:00 до 23:59
-
bslНачалоМесяца(),КонецМесяца(),НачалоКвартала(),НачалоГода()— работа с периодами.
Эти функции незаменимы для отчетов.
ТекМесяцНачало = НачалоМесяца(ТекущаяДата()); ТекМесяцКонец = КонецМесяца(ТекущаяДата());
Типичные задачи и их решение
Задача 1: Вычислить разницу между двумя датами (в днях, месяцах, годах).
Используем функцию РазностьДат().
Дата1 = Дата(2024, 11, 17); Дата2 = Дата(2024, 10, 1); РазницаВДнях = РазностьДат(Дата1, Дата2, РазностьДат.День); // Вернет 47 РазницаВМесяцах = РазностьДат(Дата1, Дата2, РазностьДат.Месяц); // Вернет 1 РазницаВГодах = РазностьДат(Дата1, Дата2, РазностьДат.Год); // Вернет 0
Задача 2: Прибавить (или отнять) к дате определенный интервал.
Используем функцию ДобавитьВДату() или простые арифметические операции.
Сегодня = ТекущаяДата(); // Прибавляем 10 дней Через10Дней = ДобавитьВДату(Сегодня, 0, 0, 10); // (Год, Месяц, День) // Или проще: Через10Дней = Сегодня + 10; // Прибавляем 1 месяц и 5 дней НоваяДата = ДобавитьВДату(Сегодня, 0, 1, 5);
Задача 3: Определить день недели.
Используем функцию ДеньНедели(). Возвращает номер дня недели (Понедельник = 1, Воскресенье = 7).
ДеньН = ДеньНедели(ТекущаяДата()); Если ДеньН = 1 Тогда Сообщить("Сегодня понедельник, время работать!"); ИначеЕсли ДеньН = 7 Тогда Сообщить("Ура, воскресенье!"); КонецЕсли;
Задача 4: Сравнить даты без учета времени.
Частая ошибка новичков — прямое сравнение дат, созданных в разное время суток.
Дата1 = ТекущаяДата(); // 17.11.2024 15:30:45 Дата2 = НачалоДня(ТекущаяДата()); // 17.11.2024 00:00:00 // НЕПРАВИЛЬНО: Дата1 = Дата2? -> Ложь // ПРАВИЛЬНО: сравниваем даты, приведенные к началу дня Если НачалоДня(Дата1) = НачалоДня(Дата2) Тогда Сообщить("Даты относятся к одному и тому же дню!"); КонецЕсли;
Задача 5: Преобразовать дату в удобочитаемую строку.
Используем функцию Формат().
ТекДата = ТекущаяДата(); СтрокаДаты = Формат(ТекДата, "ДЛФ=Д; ДФ=dd.MM.yyyy"); // "17.11.2024" СтрокаДатыВремени = Формат(ТекДата, "ДЛФ=Д; ДФ=dd.MM.yyyy HH:mm:ss"); // "17.11.2024 15:30:45"
Ключевой вывод: Платформа 1С предоставляет богатый набор функций для работы с датами. Всегда учитывайте, что дата содержит время, и для корректного сравнения и отборов используйте функции приведения к началу/концу периода.
