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

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

Откуда 1С берет дату и как проверить источник времени

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

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

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

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

Какие источники даты существуют в 1С

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

  • Компьютер пользователя — в файловом режиме и в тонком/толстом клиенте при выполнении кода на клиенте;
  • Сервер 1С:Предприятия — в клиент-серверном режиме при выполнении серверных процедур, проведении документов, работе фоновых заданий;
  • Сервер СУБД — при выполнении запросов с функциями текущего времени на стороне базы данных, а также в механизмах, где метку времени проставляет сама СУБД.

Практический вывод: если документ проводится серверной процедурой (а в типовых конфигурациях это почти всегда так), дата документа — это время сервера, а не компьютера бухгалтера. Поэтому менять часы на своем ПК в клиент-серверной базе бессмысленно.

Как платформа выбирает источник в разных режимах

Файловый режим

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

Клиент-серверный режим

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

Веб-клиент и веб-сервер

При работе через браузер код выполняется на веб-сервере и сервере 1С. Часы компьютера пользователя влияют минимально — в основном на то, что делает сам браузер с датами в интерфейсе. Основной источник — серверная инфраструктура.

Сравнение источников времени

Файловый режим

Время берется с ПК каждого пользователя. Просто, но при нескольких пользователях возможны расхождения между документами.

Клиент-серверный режим

Документы датируются часами сервера. Единая точка контроля, но ошибка на сервере затронет всю базу сразу.

Время СУБД

Используется в запросах и механизмах СУБД. Если часы SQL-сервера и сервера 1С различаются, возможны конфликты в обменах.

Роль часового пояса сеанса

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

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

Типовой признак проблемы с поясом: время в журнале регистрации отличается от времени документов ровно на целое число часов (например, на 2 или 3 часа). Это почти всегда указывает на разницу между поясом сервера и поясом сеанса.

Как проверить, откуда 1С берет дату в вашей базе

Самый быстрый способ — выполнить простой код через внешнюю обработку или консоль кода:

// На сервере

Сообщить("Сервер: " + ТекущаяДатаСеанса());

// На клиенте (в файловом режиме совпадет с серверным)

Сообщить("Клиент: " + ТекущаяДата());

Сравните вывод с реальным временем и с часами сервера. Если серверное значение совпадает с часами сервера 1С, а клиентское — с вашим ПК, источники определены верно. Дополнительно проверьте часовой пояс базы: в консоли кластера откройте свойства информационной базы и посмотрите параметр часового пояса.

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

Порядок диагностики
  1. 1
    Выполните ТекущаяДатаСеанса() на сервере и сравните с часами сервера 1С
  2. 2
    Проверьте часы и часовой пояс операционной системы сервера
  3. 3
    Откройте свойства информационной базы в консоли кластера и проверьте часовой пояс базы
  4. 4
    Сравните время документа и время события в журнале регистрации
  5. 5
    В клиент-серверном режиме дополнительно сверьте часы сервера СУБД

Типичные проблемы и их причины

Документы создаются «завтрашним» или «вчерашним» числом. Чаще всего часы сервера спешат или отстают, либо пояс сеанса сдвигает время через полночь. Проверьте серверное время и пояс базы.

Обмен данными выдает ошибки расхождения времени. Механизмы синхронизации чувствительны к разнице часов между узлами. Если базы обмениваются напрямую, часы обоих серверов должны быть синхронизированы с общим источником точного времени (NTP).

У разных пользователей разное время в документах. В файловом режиме это следствие разницы часов на их ПК. Решение — настроить автоматическую синхронизацию времени Windows на всех рабочих станциях или перейти на клиент-серверный режим.

После перехода на зимнее/летнее время или смены пояса региона даты «поплыли». Обновите часовые пояса в операционной системе сервера и проверьте настройку пояса базы.

Типичные ошибки
01
Менять часы на своем ПК в клиент-серверной базе — документы все равно датируются сервером, а клиентские операции начнут конфликтовать
02
Использовать ТекущаяДата() в новом коде вместо ТекущаяДатаСеанса() — при разных поясах получите разные значения у разных пользователей
03
Переводить часы сервера вручную назад — возможны конфликты версий объектов, ошибки обмена и нарушение последовательности документов
04
Игнорировать настройку пояса базы при подключении пользователей из других регионов — время в отчетах будет различаться на величину смещения

Как безопасно исправить неправильное время

Первое правило: часы сервера и рабочих станций должны синхронизироваться автоматически через NTP. Ручная установка времени — временная мера, через недели часы снова разъедутся. В Windows это настраивается службой W32Time, в Linux — через chrony или systemd-timesyncd.

Если время сервера нужно скорректировать назад, оцените риски: документы, уже проведенные «будущим» временем, окажутся впереди нового серверного времени. Это может нарушить последовательности, обмены и регламентные задания. Безопаснее скорректировать время в нерабочие часы и сразу проверить журнал регистрации на аномальные события.

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

Проверка результата после настройки

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

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

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

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

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

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

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

Отличается на минуты (часы) или на целые часы (пояс)

Журнал регистрации
Норма

Время событий совпадает с временем документов

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

Стабильное смещение на целое число часов

Обмен данными
Норма

Синхронизация без предупреждений о времени

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

Ошибки расхождения времени между узлами

Регламентные задания
Норма

Запуск по расписанию в ожидаемое время

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

Запуск раньше или позже на величину смещения пояса

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

Почему в файловой базе у разных пользователей документы имеют разное время?

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

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

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

Можно ли задать пользователям разные часовые пояса?

Да, часовой пояс сеанса можно задать программно или через параметры, и тогда ТекущаяДатаСеанса() будет возвращать время в поясе конкретного пользователя. Однако документы физически хранят одно значение даты, поэтому смешение поясов требует аккуратности в отчетах и обменах.

Что делать, если время в журнале регистрации отличается от времени документов ровно на несколько часов?

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

Повлияет ли перевод часов сервера на уже проведенные документы?

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

Откуда берет время мобильный клиент 1С?

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

Итог

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

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