В практике администрирования клиент-серверных версий 1С:Предприятие часто встречается неприятная проблема: при записи или проведении документов на некоторых рабочих станциях время автоматически сдвигается на час вперед. При этом системные часы на компьютерах пользователей могут показывать абсолютно верное локальное время. Подобная ситуация вносит хаос в оперативный учет, нарушает последовательность документов и затрудняет работу пользователей.
В этой статье мы подробно разберем, почему возникает этот сдвиг, как устроена схема синхронизации времени в доменной сети и клиент-серверной архитектуре 1С, а также рассмотрим пошаговый алгоритм решения этой проблемы.
Прежде чем приступать к активным действиям, давайте проанализируем, каким образом платформа 1С:Предприятие определяет время для нового документа. В клиент-серверном варианте работы за фиксацию времени отвечает не локальный компьютер пользователя, а сервер приложений 1С. Однако здесь есть важный нюанс — часовой пояс сеанса.
Взаимодействие происходит по следующей цепочке:
Рассмотрим детально основные причины, по которым это происходит, и способы их устранения.
Основной источник проблем со сдвигом времени на час вперед — это несоответствие версий обновлений временных зон (Time Zone) на различных серверах и рабочих станциях домена. Например, в старых конфигурациях Windows существовала объединенная зона «(UTC+03:00) Калининград, Минск». После реформ исчисления времени Минск остался в зоне +3, а Калининград перешел в зону +2. Если на одной машине установлены старые системные обновления, а на другой — новые, операционная система будет неверно рассчитывать смещение относительно UTC, даже если визуально часы на панели задач показывают одинаковое время.
Выполним следующие шаги для исправления ситуации:
Установка обновлений в Windows часто требует обязательного перезапуска зависимых служб, о чем системные администраторы иногда забывают. Служба сервера 1С:Предприятие (ragent) и процессы СУБД считывают системные таблицы часовых поясов из реестра Windows только в момент своего запуска.
Если вы обновили часовые пояса на сервере, но не перезапустили службы, 1С продолжит использовать старое смещение UTC. Чтобы применить изменения, выполните:
Active Directory \ 1C:Enterprise 8.3 Server Agent.SQL Server (MSSQLSERVER) или службы postgresql-x64).Клиентское приложение 1С активно кэширует параметры сеанса, включая данные о временных зонах. Если на локальном компьютере обновили часовой пояс, но кэш остался старым, платформа может продолжать обращаться к устаревшим настройкам.
Для устранения этой проблемы выполните полную очистку кэша на проблемных рабочих станциях. Для этого удалите содержимое следующих папок (предварительно завершив работу 1С):
%localappdata%\1C\1Cv8%appdata%\1C\1Cv8После удаления этих директорий при первом запуске 1С заново считает актуальные параметры времени из операционной системы.
Если ваши серверы 1С и БД развернуты в виртуальной среде (VMware vSphere, Hyper-V, Proxmox), то причиной сбоя может быть интеграция времени виртуальной машины с физическим хостом.
Проанализируем конфигурацию гипервизора. Если на физическом сервере (хосте) время или часовой пояс настроены неверно, а в свойствах виртуальной машины включена опция «Синхронизировать время с хостом» (Time synchronization), то гостевая ОС будет регулярно получать некорректные данные, сбрасывая настройки домена. Рекомендуется отключать интеграцию времени с хостом для виртуальных машин, являющихся членами домена Active Directory, и настраивать их на синхронизацию напрямую с контроллером домена через службу W32Time.
Иногда корень проблемы кроется в настройках самой базы данных 1С. В платформе предусмотрена возможность жесткого разделения часовых поясов.
Выполним проверку через Конфигуратор:
Также в некоторых конфигурациях (например, УПП 1.3) при начале работы системы может программно вызываться метод УстановитьЧасовойПоясСеанса(). Проверьте глобальный модуль на наличие этого вызова. Возможно, для определенных пользователей или компьютеров прописаны индивидуальные исключения.
Если на конкретной машине время продолжает спешить на час, необходимо проверить целостность ветки реестра, отвечающей за часовые пояса. Перейдите в редактор реестра regedit по пути:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
Обратите внимание на параметры StandardStart и DaylightStart. Если в вашей стране или регионе отменен сезонный перевод часов (на летнее/зимнее время), значения этих параметров в двоичном коде должны состоять полностью из нулей. Если там присутствуют старые данные автоматического перехода, операционная система будет принудительно сдвигать внутреннее UTC-время на час вперед в определенные периоды года.
Чтобы быстро и безошибочно определить, на каком именно этапе происходит сдвиг времени (на уровне ОС компьютера, на стыке клиент-сервер или внутри базы данных), мы рекомендуем использовать простую внешнюю обработку. Создайте обработку и пропишите в ней следующий код:
Сообщить("Системное время компьютера (клиент): " + ТекущаяДата());
Сообщить("Время сеанса 1С (с учетом часового пояса): " + ТекущаяДатаСеанса());
Сообщить("Текущий часовой пояс сеанса: " + ЧасовойПоясСеанса());
Сообщить("Часовой пояс информационной базы: " + ПолучитьЧасовойПоясИнформационнойБазы());
Запустите эту обработку под учетной записью проблемного пользователя:
ТекущаяДата(), проблему нужно искать исключительно в настройках операционной системы локального ПК и его синхронизации с доменом.ТекущаяДата() показывает верное время, а ТекущаяДатаСеанса() спешит на час — проблема заключается в неверных настройках часового пояса на сервере приложений 1С или СУБД, либо в кэше сеанса.Применение этого комплексного подхода позволит вам быстро локализовать источник сбоя и гарантированно устранить расхождение времени в документах 1С.