В процессе эксплуатации клиент-серверных решений на базе 1С:Предприятие 8.3 администраторы часто сталкиваются с аномалией: записи в журнале регистрации (ЖР) имеют временную метку, отличную от текущего локального времени (например, на +2 часа). Эта ситуация критична для аудита действий пользователей и расследования ошибок, так как нарушает хронологию событий. Рассмотрим подробно, почему это происходит и как привести время в порядок.
Прежде всего, проанализируем механизм работы платформы. Начиная с версии 8.3.14 и выше, 1С активно использует формат журнала регистрации .lgd, основанный на базе данных SQLite. В этом формате время всех событий записывается строго в формате UTC (Universal Coordinated Time). Смещение, которое мы видим в интерфейсе, — это результат преобразования UTC в локальное время, выполняемое платформой на основе настроек операционной системы.
Если время «убегает» на 2 часа, это сигнализирует о том, что сервер приложений 1С или клиентская часть неверно интерпретируют разницу между UTC и локальным часовым поясом. Рассмотрим основные узлы проверки.
Разберем ситуацию, когда проблема массовая и наблюдается у всех пользователей. Это явно указывает на то, что ошибка кроется на стороне сервера приложений 1С. Проверим следующие параметры:
Важно помнить: даже если визуально часы в трее показывают верное время, настройки смещения внутри системы могут быть устаревшими, что и дает ошибку в расчетах 1С.
Проанализируем часто упускаемый момент: под какой учетной записью запущена служба ragent? Обычно это usr1cv8. Проблема в том, что у этого пользователя есть собственный профиль в операционной системе со своими региональными настройками.
Рассмотрим алгоритм исправления через реестр:
regedit.HKEY_USERS\[SID_ПОЛЬЗОВАТЕЛЯ]\Control Panel\International.Совет: Самый простой способ синхронизировать настройки — зайти на сервер под учетной записью службы 1С интерактивно и вручную настроить дату, время и часовой пояс в панели управления. После этого необходимо перезапустить службу сервера 1С.
Если вы используете новый формат журнала (файл 1Cv8.lgd), стоит учитывать специфику SQLite. В некоторых случаях при переносе базы данных между серверами с разными часовыми поясами может возникнуть конфликт кэша временных настроек. Посмотрим, как это вылечить:
1Cv8Log в каталоге инстанса сервера).1Cv8.lgd.Чтобы окончательно выяснить, на каком этапе происходит сдвиг — при записи на сервере или при отображении на клиенте, — выполним небольшую проверку. Напишем простую обработку, которая считывает последние записи журнала программно. Проанализируем пример кода:
ВыбранныеСобытия = Новый Массив;
ПараметрыОтбора = Новый Структура("ДатаНачала", ТекущаяДата() - 3600); // смотрим за последний час
ВыгрузитьЖурналРегистрации(ВыбранныеСобытия, ПараметрыОтбора, "Дата, Событие, Пользователь");
Для Каждого Запись Из ВыбранныеСобытия Цикл
Сообщить("Время события: " + Запись.Дата + " | Текущее время: " + ТекущаяДата());
КонецЦикла;
Если в окне сообщений Запись.Дата совпадает с реальным временем события, а в стандартном списке журнала регистрации вы видите +2 часа — значит, проблема в региональных настройках клиентского компьютера или терминального сервера. Если же и в коде дата смещена — проблема в сервере 1С.
Проанализируем ситуацию, если ваш сервер 1С работает внутри виртуальной машины (Hyper-V или VMware). В таких средах часто включена синхронизация времени с хост-машиной. Если на физическом хосте время настроено по UTC (как часто делают в Linux-системах или BIOS/UEFI), а гостевая Windows применяет свое смещение, может возникнуть эффект «двойного наложения» пояса.
Решение: Убедитесь, что в настройках виртуальной машины (Integration Services) параметры синхронизации времени настроены корректно, либо полностью делегируйте управление временем внутри гостевой ОС через службу времени Windows (W32Time).
Подведем итог. Исправление смещения времени в журнале регистрации 1С требует комплексного подхода. Мы рассмотрели основные причины:
Следуя предложенным шагам, вы сможете локализовать проблему и обеспечить точность протоколирования всех событий в системе.