К статье
Практический материал

Администрирование · 9 мин

Как проверить время в 1С

Как проверить время в 1С: текущая дата сеанса, время сервера и клиента, смещение часового пояса, типовые команды и способы диагностики расхождений.

Вопрос «как проверить время в 1С» возникает в нескольких ситуациях: документы проводятся «не той» датой, отчёты строятся за неверный период, регламентные задания запускаются не вовремя, а пользователи в разных часовых поясах видят разное время одного и того же события. Причина почти всегда кроется в одном из трёх источников времени: сервер 1С, сервер СУБД или клиентский компьютер.

В клиент-серверном режиме дата и время документов, записей регистров и служебных отметок берутся преимущественно с сервера 1С, а тот, в свою очередь, может опираться на время СУБД. В файловом режиме используется время компьютера, на котором открыта база. Поэтому проверку нужно начинать с понимания архитектуры конкретной базы.

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

Откуда 1С берёт дату и время

Платформа 1С:Предприятие работает с несколькими «часами» одновременно, и их нельзя смешивать. В файловом варианте базы источником времени служит операционная система того компьютера, где запущен сеанс. Если на машине сбиты часы или неверно выставлен часовой пояс — все документы получат ошибочные отметки времени.

В клиент-серверном варианте ключевую роль играет сервер 1С:Предприятия. Именно его системное время обычно фиксируется при записи объектов. Однако часть операций — например, запросы с функциями даты на стороне СУБД — использует время сервера баз данных. Если время на сервере 1С и на сервере СУБД различается, возможны странные эффекты: проведённый документ «уезжает» в прошлое или будущее на несколько минут или часов.

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

Быстрая проверка времени без программирования

Самый простой способ — открыть в клиентском приложении окно «О программе» (меню «Справка» → «О программе» или пиктограмма с буквой «i» в зависимости от интерфейса). Там отображаются сведения о сеансе, версии платформы и режиме работы. В ряде конфигураций также доступна служебная информация о текущей дате сеанса.

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

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

Порядок действий
  1. 1
    Откройте базу в режиме 1С:Предприятие и зайдите в «О программе» — зафиксируйте режим работы (файловый или клиент-серверный).
  2. 2
    Создайте черновик любого документа и посмотрите автоматически подставленную дату.
  3. 3
    Откройте журнал регистрации и сравните время последнего события с реальным временем.
  4. 4
    Сверьте результат с системным временем компьютера и, при клиент-серверном режиме, со временем сервера.

Проверка времени через встроенный язык

Для точной диагностики удобнее выполнить небольшой фрагмент кода — через внешнюю обработку, консоль кода или команду «Выполнить» в конфигураторе (если есть права). Функция ТекущаяДатаСеанса() возвращает дату и время, которые платформа использует для текущего сеанса.

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

bsl
Сообщить("Дата сеанса: " + ТекущаяДатаСеанса());
Сообщить("Часовой пояс сеанса: " + ЧасовойПоясСеанса());
Сообщить("Смещение, сек: " + (ТекущаяУниверсальнаяДата() - ТекущаяУниверсальнаяДатаВМиллисекундах()/1000));

Обратите внимание на функцию ТекущаяУниверсальнаяДата() — она возвращает время в UTC без учёта пояса. Сравнение универсальной даты с датой сеанса позволяет вычислить фактическое смещение часового пояса и проверить, корректно ли оно настроено.

Проверка часового пояса информационной базы

Часовой пояс базы задаётся в её свойствах: в консоли кластера серверов 1С (для клиент-серверного режима) или при публикации/настройке базы. Если пояс не задан, платформа использует пояс сервера, что для распределённых команд даёт непредсказуемые результаты.

Проверить пояс сеанса можно программно — функцией ЧасовойПоясСеанса(). Она вернёт строку вида «Europe/Moscow» или пустое значение, если пояс не установлен явно. Получить пояс самой информационной базы можно методом ПолучитьЧасовойПоясИнформационнойБазы().

Типичный признак проблемы с поясом: пользователи в разных городах видят одно и то же событие с разницей в часы, либо регламентные задания срабатывают раньше или позже расписания. В таких случаях нужно выровнять пояс базы, пояс сервера ОС и настройки сеансов пользователей.

Диагностика расхождений между сервером, СУБД и клиентом

Если время в документах систематически отличается от реального, проверяйте источники по цепочке. Сначала — системное время и пояс на сервере 1С:Предприятия (команды date и timedatectl в Linux, настройки даты и времени в Windows). Затем — время на сервере СУБД: для MS SQL это GETDATE(), для PostgreSQL — now().

После этого сверьте часы клиентских компьютеров. В файловом режиме именно клиентское время определяет даты, поэтому на всех рабочих местах должна быть включена синхронизация времени по сети (NTP). Расхождение даже в несколько минут приводит к нарушению последовательности документов и конфликтам при обмене данными.

Контрольные точки

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

Дата нового документа
Норма

Совпадает с реальным временем с точностью до минуты

Тревожный признак

Отличается на часы или сутки — проверяйте пояс и часы сервера

Время событий в журнале регистрации
Норма

Свежие события идут с актуальными отметками

Тревожный признак

События записываются «в прошлое» или «в будущее»

ТекущаяДатаСеанса() и время сервера
Норма

Разница не более нескольких секунд

Тревожный признак

Заметный разбег — рассинхронизация часов или неверный пояс

Типичные ошибки и риски

Частая ошибка — ручная переводка часов на сервере «для исправления» дат документов. Это ломает последовательность проведения, обмены данными и может привести к рассогласованию с внешними системами (ЭДО, банк-клиенты, кассы). Корректный путь — настроить синхронизацию времени через NTP и исправить часовой пояс, а не двигать часы вручную.

Вторая ошибка — правка дат документов задним числом без анализа последствий. Документы участвуют в последовательностях, расчётах себестоимости и взаиморасчётов; изменение даты может потребовать перепроведения целого периода. Перед такими действиями делайте резервную копию и проверяйте результат на копии базы.

Типичные ошибки
01
Проверять время только на своём компьютере в клиент-серверном режиме — решающим является время сервера.
02
Игнорировать часовой пояс базы — документы филиалов получают «чужое» время.
03
Переводить часы на сервере вручную вместо настройки NTP — проблема возвращается и усугубляется.
04
Менять даты документов без копии базы — нарушаются последовательности и расчёты.

Частые вопросы

Почему документ создаётся с завтрашней или вчерашней датой?

Чаще всего неверно настроен часовой пояс информационной базы или сеанса, либо сбиты часы на сервере (в клиент-серверном режиме) или на компьютере пользователя (в файловом). Проверьте ТекущаяДатаСеанса() и сравните с реальным временем.

Как узнать, файловая база или клиент-серверная?

Откройте «О программе» или посмотрите строку подключения в списке баз стартера: файловая указывает на каталог, клиент-серверная — на сервер и имя базы. Это определяет, чьё время используется.

Можно ли задать пользователю свой часовой пояс?

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

Чем ТекущаяДата() отличается от ТекущаяДатаСеанса()?

ТекущаяДата() в клиентском контексте возвращает время клиентского компьютера, а ТекущаяДатаСеанса() — единое время сеанса с учётом сервера и пояса. Для документов и логики корректнее использовать дату сеанса.

Регламентные задания запускаются не по расписанию — в чём причина?

Проверьте часовой пояс, в котором интерпретируется расписание, и время сервера, исполняющего задания. Расписание задаётся относительно пояса, и при его смене момент запуска смещается.

Нужно ли перезагружать сервер после смены часового пояса?

Сам пояс базы применяется без перезагрузки оборудования, но сеансы могут потребовать переподключения, а службу сервера 1С после изменения системного пояса ОС обычно перезапускают. Действия выполняйте вне рабочего времени пользователей.

Итог

Что важно запомнить

Время в 1С определяется режимом работы базы: в файловом — часами компьютера, в клиент-серверном — временем сервера и настройками пояса. Проверяйте дату сеанса, часовой пояс и синхронизацию NTP, а любые правки времени и дат выполняйте только после резервного копирования.