Получает идентификатор часового пояса текущего сеанса.
Синтаксис
ЧасовойПоясСеанса()Полное описание, параметры и ограничения
Глобальный контекст.ЧасовойПоясСеанса (Global context.SessionTimeZone)
Глобальный контекст (Global context)
ЧасовойПоясСеанса (SessionTimeZone)
Доступен, начиная с версии 8.2.
Синтаксис:
ЧасовойПоясСеанса()
Возвращаемое значение:
Тип: Строка.
Список допустимых часовых поясов может быть получен методом ПолучитьДопустимыеЧасовыеПояса.
Кроме того, возможно задание часовых поясов смещением от универсального времени (часовые пояса GMT) в формате:
GMT{+/-}h[h][:mm]
где hh=0:23, mm=0:59.
Описание:
Получает идентификатор часового пояса текущего сеанса.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
См. также:
Глобальный контекст, метод УстановитьЧасовойПоясСеанса
Глобальный контекст, метод ТекущаяДатаСеанса
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Перевести учебный момент UTC в фиксированный пояс и обратно
Явно задаём GMT+3, чтобы результат не зависел от часового пояса компьютера или сеанса.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Используется фиксированная дата, а не ТекущаяДата: результаты можно сравнить независимо от дня запуска.
Данные создаются только в памяти учебной базы; рабочие документы и регистры не меняются.
Выполняйте на сервере: явный аргумент часового пояса поддерживается в указанном контексте.
Значение МоментUTC уже известно как UTC по учебному контракту. Дата не прикрепляет к нему метку UTC автоматически.
МоментUTC = Дата(2026, 9, 15, 9, 0, 0);
МестныйМомент = МестноеВремя(МоментUTC, "GMT+3");
ВосстановленныйUTC = УниверсальноеВремя(МестныйМомент, "GMT+3");
Сообщить(Формат(МоментUTC, "ДФ=yyyy-MM-dd HH:mm:ss"));
Сообщить(Формат(МестныйМомент, "ДФ=yyyy-MM-dd HH:mm:ss"));
Сообщить(ВосстановленныйUTC = МоментUTC);
Сообщить("Пояс компьютера: " + ЧасовойПояс());
Сообщить("Пояс сеанса: " + ЧасовойПоясСеанса());Разбор по шагам
Не передаём локальную дату как будто она уже UTC: роль исходного значения задаётся контрактом.
МестноеВремя преобразует UTC в явно выбранный фиксированный пояс.
УниверсальноеВремя получает местную дату того же пояса и возвращает UTC.
Читаем текущие настройки для диагностики, но не используем их вместо явно согласованного GMT+3 и не меняем сеанс.
Как проверить результат
Из 2026-09-15 09:00:00 UTC получаем местное 2026-09-15 12:00:00.
Обратное сравнение даёт Истина независимо от текущего часового пояса машины.
Замените фиксированный пояс в обеих функциях на GMT+0: местное представление совпадёт с исходным UTC.
Ожидаемый результат
Учебный момент преобразован туда и обратно с явно согласованным смещением.
На что обратить внимание
GMT+3 — фиксированное смещение, а не исторические правила переходов конкретного региона.
Для региона с летним временем используйте согласованный идентификатор зоны и учитывайте неоднозначные и отсутствующие местные моменты.
Формат без Z или смещения сам по себе не сообщает получателю часовой пояс.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Не перепутать миллисекунды 1С с timestamp внешнего API
Восстанавливаем UTC из счётчика 1С и сравниваем его с текущей датой UTC. Отдельно показываем дату сеанса, чтобы не выдавать её за универсальный момент.
Где и как запускать
Полный серверный общий модуль учебной копии. Только чтение настроек и вычисления в памяти.
Подготовка
Работайте в отдельной учебной копии базы. Создайте серверный общий модуль УчебныеЗадачи, вставьте полный модуль урока и вызовите ВыполнитьПример() из серверного обработчика учебной команды.
Код выполняется на сервере: часть функций локализации и часовых поясов недоступна непосредственно в тонком клиенте. Реквизиты пользователя, региональные настройки и часовые пояса код не меняет.
Для двух уроков о метаданных используйте копию КА2 Progress: в исходном Languages/Русский.xml действительно есть язык Русский с КодЯзыка = ru. Остальные уроки не требуют объектов конкретной конфигурации.
Процедура ВыполнитьПример() Экспорт
UTCДо = ТекущаяУниверсальнаяДата();
Миллисекунды1С = ТекущаяУниверсальнаяДатаВМиллисекундах();
UTCПосле = ТекущаяУниверсальнаяДата();
ВосстановленноеUTC = Дата(1, 1, 1) + Цел(Миллисекунды1С / 1000);
Сообщить(ТипЗнч(Миллисекунды1С) = Тип("Число"));
Сообщить(ТипЗнч(ВосстановленноеUTC) = Тип("Дата"));
Если UTCПосле >= UTCДо Тогда
Сообщить(ВосстановленноеUTC >= UTCДо И ВосстановленноеUTC <= UTCПосле);
Иначе
Сообщить("Системные часы изменились между вызовами; интервальную проверку пропускаем");
КонецЕсли;
Сообщить("Восстановленное UTC: " + Формат(ВосстановленноеUTC, "ДФ=yyyy-MM-dd HH:mm:ss"));
ДатаСеанса = ТекущаяДатаСеанса();
Сообщить("Дата сеанса: " + Формат(ДатаСеанса, "ДФ=yyyy-MM-dd HH:mm:ss"));
Сообщить("Пояс сеанса: " + ЧасовойПоясСеанса());
УчебныйUTC = Дата(1970, 1, 1, 0, 0, 10);
УчебныеМиллисекундыUnix = (УчебныйUTC - Дата(1970, 1, 1)) * 1000;
Сообщить(УчебныеМиллисекундыUnix = 10000);
КонецПроцедурыРазбор по шагам
ТекущаяУниверсальнаяДатаВМиллисекундах считает миллисекунды с 01.01.0001. Делим на 1000 и берём целую часть, потому что обычная Дата имеет секундную точность.
Дата(1, 1, 1) — начало шкалы счётчика 1С. Прибавление количества секунд восстанавливает UTC, а не местное время сервера.
Два независимых чтения UTC ограничивают момент измерения. Обычно интервальная проверка истинна; системная корректировка часов может повлиять на диагностику. Это не монотонный таймер.
ТекущаяДатаСеанса возвращает дату сервера в поясе сеанса; приоритет — пояс сеанса, затем базы, затем сервера. Это не второй способ получить UTC.
Unix-миллисекунды имеют начало 01.01.1970. Последний расчёт только для своего явно заданного UTC: 10 секунд после начала дают 10000. Контракт реального внешнего API необходимо проверить отдельно.
Как проверить результат
Две проверки типов — Истина. При неизменных часах интервальная проверка — Истина; учебный Unix-пример в конце — Истина.
Значения текущего времени меняются при каждом запуске. Не сравнивайте их с жёстко заданной сегодняшней датой.
В коде нет setter часового пояса, изменения системных часов или обращения к внешнему API.
Ожидаемый результат
Начинающий различает UTC, дату сеанса и две разные эпохи миллисекунд.
На что обратить внимание
Нельзя передавать счётчик миллисекунд 1С в API, ожидающий Unix timestamp, без преобразования эпохи.
Не оценивайте точную производительность по настенным часам: они могут корректироваться ОС.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.