Как исправить ошибку разницы во времени между сервером и клиентом в 1С?

Системный администратор 1С v8.3 (Обычные формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

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

Как 1С проверяет разницу во времени

Проанализируем механизм, заложенный разработчиками платформы. В прикладных решениях (в частности, в конфигурациях на базе Библиотеки Стандартных Подсистем, а также в классических редакторах вроде БП 2.0 или УТ 10.3) проверка осуществляется путем сравнения системного времени на клиенте и сервере. Платформа сравнивает значение функции ТекущаяДата() на клиентском рабочем месте со значением даты на сервере 1С.

При старте сеанса платформа кэширует поправку (разницу) между локальным временем ПК и временем сервера на период от 6 до 20 минут для уменьшения сетевых вызовов. Если в процессе работы происходит корректировка системных часов (например, служба NTP обновляет время на клиенте или сервере), кэшированное значение поправки не обновляется мгновенно. Из-за этого дата сеанса «уплывает», и оперативное проведение документов блокируется на уровне ядра платформы.

Основные причины рассинхронизации времени

Рассмотрим главные факторы, из-за которых системные часы клиента и сервера начинают расходиться:

  1. Ненастроенная синхронизация NTP на рабочих местах: Если в локальной сети компании у отдельных пользователей включена автонастройка времени с разных внешних серверов или не настроен единый контроллер домена, время на их ПК будет отличаться от времени сервера 1С.
  2. Конфликт синхронизации в виртуальной среде: Когда сервер 1С или СУБД (например, PostgreSQL) развернут на виртуальной машине (Hyper-V, VMware, KVM), часто возникает конфликт между внутренней службой ОС (w32time/NTP) и средствами интеграции гипервизора. В результате часы гостевой ОС постоянного скорректируются в разные стороны.
  3. Проброс часового пояса в RDP-сессиях: При подключении через Remote Desktop Services по умолчанию может срабатывать перенаправление часового пояса клиента на сервер терминалов, что приводит к расхождению часовых поясов.
  4. Разница часовых поясов между 1С и СУБД: Если сервер 1С:Предприятия и СУБД находятся на разных хостах, расхождение их системных часов приводит к ошибкам при записи меток времени в базу данных.

Способы решения проблемы

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

1. Настройка единого источника точного времени (NTP)

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

  1. Настройте домен-контроллер в качестве центрального источника времени для всех ПК и серверов.
  2. Ограничьте права локальных пользователей на изменение системного времени и часового пояса.
  3. Если сервер 1С работает в виртуальной среде, отключите синхронизацию времени с физическим хостом (Host-to-Guest time synchronization) в настройках интеграции виртуализации и оставьте только один сетевой источник NTP.

2. Отключение проверки разницы времени в конфигурации

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

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

3. Программная установка часового пояса сеанса

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


// Устанавливаем единый часовой пояс для сеанса пользователя
УстановитьЧасовойПоясСеанса("Europe/Moscow");

4. Корректное завершение сеансов пользователей без перезагрузки ОС

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

  1. Установите блокировку соединений с информационной базой через консоль кластера 1С или штатными средствами БСП (раздел «Обслуживание» – «Блокировка работы пользователей»).
  2. Завершите активные сеансы пользователей в консоли администрирования.
  3. Перезапустите только службу сервера 1С:Предприятие (1C:Enterprise Server Cluster Agent / ragent) без полной перезагрузки операционной системы:

net stop "1C:Enterprise 8.3 Server Agent"
net start "1C:Enterprise 8.3 Server Agent"

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

← На главную