Функции для работы с датой в 1С

Получение частей даты

С помощью функций Год, Месяц, День, Час, Минута, Секунда из даты можно получить какую-либо ее часть:

День года и день недели

Функция День возвращает порядковый номер в месяце. То есть для 3 июня это будет 3. Функция ДеньГода вернет порядковый номер дня в году:

Для определения дня недели есть функция ДеньНедели, которая возвращает порядковый номер дня недели:

Начало и конец периода

Чтобы привести дату к началу определенного периода можно использовать функции НачалоМинуты, НачалоЧаса, НачалоДня, НачалоНедели, НачалоМесяца, НачалоКвартала, НачалоГода:

С помощью функций КонецМинуты, КонецЧаса, КонецДня, КонецНедели, КонецМесяца, КонецКвартала, КонецГода можно получить конец определенного периода:

Арифметические операции с датами

К дате можно прибавлять количество секунд, можно вычесть из одной даты другую, чтобы получить разность в секундах. Чтобы к одной дате прибавить или вычесть месяц можно использовать функцию ДобавитьМесяц:

Текущая дата

Функция ТекущаяДата возвращает системную дату компьютера. Может использоваться как на сервере, так и на клиенте. Причем если сервер и клиент это разные компьютеры и дата или время на них не совпадает, то данная функция вернет разные значения:

Часовые пояса

1С позволяет работать в одной информационной базе из разных часовых поясов. Часовой пояс может быть определен для:

  • сеанса пользователя
  • информационной базы
  • сервера

Если часовой пояс не задан для сеанса, то используется часовой пояс информационной базы. Если для информационной базы часовой пояс тоже не задан, то используется часовой пояс сервера.

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

Для установки часового пояса сеанса используется функция УстановитьЧасовойПоясСеанса. Чтобы получить текущее значение часового пояса сеанса предназначена функция ЧасовойПоясСеанса:

Для работы с часовым поясом информационной базы предназначены функции УстановитьЧасовойПоясИнформационнойБазы и ПолучитьЧасовойПоясИнформационнойБазы. Изменение часового пояса информационной базы возможно только в монопольном режиме. Чтобы изменение часового пояса информационной базы вступило в силу нужно перезайти в базу.

Чтобы получить часовой пояс сервера нужно использовать функцию ЧасовойПояс:

На сервере для получения текущей даты и времени нужно использовать функцию ТекущаяДатаСеанса. Данная функция получает дату и время с учетом часового пояса. То есть если сервер физически установлен в часовом поясе «Europe/Moscow», а подключение к нему выполняется из часового пояса «Asia/Krasnoyarsk», то функция ТекущаяДата вернет дату и время сервера, что не будет корректным. А если при старте сеанса в Красноярке установить часовой пояс «Asia/Krasnoyarsk», то функция ТекущаяДатаСеанса приведет время к часовому поясу сеанса пользователя.

Чтобы узнать все возможные часовые пояса можно воспользоваться функцией ПолучитьДопустимыеЧасовыеПояса. Данная функция вернет массив со всеми возможными часовыми поясами:

С помощью функции ПредставлениеЧасовогоПояса можно получить представление часового пояса:

Универсальная дата

С помощью функции ТекущаяУниверсальнаяДата можно получить дату и время UTC. С помощью функции ТекущаяУниверсальнаяДатаВМиллисекундах можно получить количество миллисекунд, начиная с 01.01.0001 года:

С помощью функции ТекущаяУниверсальнаяДатаВМиллисекундах можно получить замер времени в миллисекундах:

Также есть функции МестноеВремя и УниверсальноеВремя, которые позволяют получить местное время из универсального и универсальное время из местного:

Сравнение функций

Для сравнения функций работы с часовыми поясами представим, что есть информационная база, которая физически находится в Москве. Для данной базы методом УстановитьЧасовойПоясИнформационнойБазы был установлен часовой пояс «Europe/Moscow». А также есть пользователи из Красноярска, которые тоже работают с этой информационной базой. Для них при старте системы, в модуле сеанса устанавливается часовой пояс «Asia/Krasnoyarsk» с помощью метода УстановитьЧасовойПоясСеанса. Результаты представлены в таблице, вызовы всех функций были выполнены на сервере:

ФункцияМоскваКрасноярск
ЧасовойПоясEurope/MoscowEurope/Moscow
ПолучитьЧасовойПоясИнформационнойБазыEurope/MoscowEurope/Moscow
ЧасовойПоясСеансаEurope/MoscowAsia/Krasnoyarsk
ТекущаяДата06.03.2021 21:22:3706.03.2021 21:22:37
ТекущаяДатаСеанса06.03.2021 21:22:3707.03.2021 1:22:46
ТекущаяУниверсальнаяДата06.03.2021 18:22:3706.03.2021 18:22:37
ТекущаяУниверсальнаяДатаВМиллисекундах63 750 651 757 58663 750 651 757 586
Понравилась статья? Поделиться с друзьями:
Используя этот сайт, Вы даете согласие на использование cookies. На данном этапе Вы можете отказаться от использования cookies, настроив необходимые параметры в своем браузере.
ok