Как заставить 1С показывать верное время во всех режимах работы
Содержание
Синхронизация времени в 1С — это не галочка внутри программы, а приведение в порядок часов на компьютере или сервере, откуда 1С:Предприятие берёт дату и время. Своих часов платформа не ведёт: функция ТекущаяДата() возвращает ровно то, что показывает операционная система машины, где выполняется код.
Отсюда главное правило. В файловой базе дата документа берётся с часов вашего рабочего компьютера. В клиент-серверной большинство дат проставляется при проведении, а проведение идёт на сервере — значит, важны часы сервера 1С, а не ваши. В облаке время сервера держит провайдер, а вы управляете только часовым поясом своего сеанса.
Ниже — что и где настроить для каждого случая, как проверить, что часы идут верно, и как разобрать типичные ошибки со сдвигом времени.
Откуда 1С берёт дату и время
В 1С нет внутреннего таймера. Каждый раз, когда программа подставляет дату в новый документ, пишет строку в журнал регистрации или проверяет срок действия сертификата, она спрашивает время у операционной системы.
Где именно выполняется код — там и берётся время:
- 📄 Файловый режим. Вся работа идёт на вашем компьютере. И клиентский, и серверный код — это один и тот же процесс
1cv8. Время берётся с часов рабочей станции. - 🖥 Клиент-серверный режим. Клиентский код (открытие формы, ввод с клавиатуры) видит часы вашего ПК. А вот проведение, запись регистров, фоновые задания выполняет рабочий процесс
rphostна сервере — и берёт время с часов сервера.
Поэтому в клиент-серверной базе вы можете видеть на экране одно время, а в проведённом документе — другое. Это не ошибка программы, а разница между вашими часами и часами сервера.
Зачем вообще за этим следить:
- даты и время документов определяют их последовательность проведения и попадание в нужный период;
- журнал регистрации фиксирует, кто и когда что сделал — при расследовании ошибок сдвиг времени путает картину;
- при обмене данными и ЭДО контрагент видит время отправки; сильный сдвиг часов ломает проверку подписи и штампов времени;
- расписания регламентных заданий срабатывают по часам сервера.
Если дата нового документа подставляется «не та» — ищите причину не в 1С, а в часах того компьютера или сервера, где база физически работает.
Синхронизация времени в файловой базе 1С
В файловой базе каждый пользователь работает со своими часами. Если на одном компьютере время убежало на 10 минут вперёд, его документы получат «будущие» даты относительно документов коллег. Поэтому цель — свести часы всех рабочих станций к одному источнику.
Самый надёжный источник — контроллер домена (если сеть доменная) или публичный NTP-сервер (если компьютеры в рабочей группе).
Проверить и принудительно синхронизировать часы Windows можно из командной строки, запущенной от администратора:
w32tm /query /status
w32tm /query /source
w32tm /resync
Первая команда показывает состояние службы времени, вторая — источник, с которым сверяются часы, третья — запускает синхронизацию немедленно.
Задать источник вручную (для компьютера в рабочей группе):
w32tm /config /manualpeerlist:"time.windows.com" /syncfromflags:manual /update
net stop w32time
net start w32time
w32tm /resync
Порядок настройки по шагам:
- На всех рабочих станциях включите службу
W32Time(Служба времени Windows) и переведите её в автозапуск. - Выберите единый источник: контроллер домена или один NTP-сервер для всех.
- Проверьте часовой пояс Windows — он должен совпадать на всех машинах региона.
- Выполните
w32tm /resyncи убедитесь, что расхождение исчезло.
В доменной сети не назначайте каждому ПК свой внешний NTP-сервер. Рядовые компьютеры должны брать время с контроллера домена, иначе часы разъедутся. Внешний источник настраивают только на контроллере, который держит роль PDC-эмулятора.
Настройка времени на сервере 1С:Предприятие
В клиент-серверной базе решает время сервера. Синхронизировать нужно именно ту машину, где запущена служба сервера 1С (процессы ragent, rmngr, rphost), а не рабочие станции пользователей.
Если сервер 1С работает на Windows Server, настройка такая же, как для рабочей станции, — через w32tm. В домене сервер обычно уже берёт время с контроллера; проверьте это командой w32tm /query /source.
Если сервер 1С работает на Linux, часами управляет служба chrony или systemd-timesyncd. Полезные команды:
timedatectl status
chronyc tracking
sudo systemctl restart chronyd
timedatectl status покажет текущее время, часовой пояс и включена ли сетевая синхронизация. chronyc tracking — насколько точно часы сведены с источником.
Отдельный вопрос — часовой пояс. Даты в базе 1С хранит без привязки к поясу, а отображает и рассчитывает относительно часового пояса сеанса. У информационной базы есть собственный часовой пояс; если сервер и пользователи в разных регионах, его задают средствами платформы, чтобы вся база считала «день» одинаково. Проверить пояс сеанса в коде можно функцией ЧасовойПоясСеанса().
Прежде чем перезапускать службу сервера 1С из-за настроек времени, предупредите пользователей: перезапуск ragent оборвёт все активные сеансы и фоновые задания. Делайте это в технологическое окно, а не в рабочее время. Для простой синхронизации часов перезапуск сервера 1С вообще не нужен — достаточно w32tm /resync или chronyc makestep.
| Режим работы | Откуда берётся время | Что синхронизировать |
|---|---|---|
| Файловый | Часы рабочей станции | Каждый клиентский ПК |
| Клиент-серверный | Часы сервера 1С (при проведении, фоновых заданиях) | Сервер приложений |
| Облачный (Fresh, Линк) | Часы сервера провайдера | Только часовой пояс сеанса |
Часовой пояс в облачных базах 1С:Fresh и 1С:Линк
В облаке сервер стоит в дата-центре провайдера, и его часы вы не настраиваете — за точностью времени следит сам сервис. Поэтому w32tm и доступ к серверу вам не нужны.
Что остаётся под вашим контролем — часовой пояс сеанса. Именно он определяет, какое время вы видите на экране и какое подставится в документ. Если регион дата-центра отличается от вашего, время будет казаться «неправильным», пока не выставлен ваш пояс.
Где это настраивается:
- 👤 Откройте меню текущего пользователя (обычно в правом верхнем углу, по имени или значку человека) и перейдите в персональные настройки.
- 🌍 Найдите поле часового пояса и выберите свой регион. Название поля в разных сервисах может отличаться, но суть одна — часовой пояс текущего пользователя.
- 🔁 После смены пояса перечитайте или переоткройте список документов, чтобы время пересчиталось.
Для 1С:Fresh (тонкий клиент или веб-клиент) часовой пояс — это настройка абонента и пользователя. Для 1С:Линк вы подключаетесь к своей же базе на своём сервере, поэтому там действуют правила клиент-серверного режима: синхронизируйте часы той машины, где опубликована база.
Если у разных сотрудников одной облачной базы время на экране отличается — почти всегда дело в том, что у них выставлены разные часовые пояса сеанса. Сведите пояс к единому для всех, кто работает в одном регионе.
Как проверить, что время синхронизировано
Самая показательная проверка в клиент-серверной базе — сравнить время клиента и сервера. Создайте любой документ (можно не записывать) и посмотрите, какая дата-время подставилась по кнопке «обновить» или при записи: это время сервера. Сравните с часами в трее своего компьютера. Расхождение больше пары минут — повод синхронизировать сервер.
На уровне Windows состояние службы времени показывают команды:
w32tm /query /status
w32tm /query /configuration
В выводе смотрите на строку источника (Source) и смещение (Last Successful Sync Time, Phase Offset). Смещение в доли секунды — норма. Секунды и минуты — часы разошлись.
Разовое сравнение с эталонным сервером без изменения часов:
w32tm /stripchart /computer:time.windows.com /samples:5 /dataonly
Команда выведет 5 замеров расхождения с указанным источником и ничего не поменяет — удобно для диагностики.
Автоматическая синхронизация времени
Ручной w32tm /resync — это разовая мера. Чтобы часы держались сами, синхронизацию делают постоянной.
В домене всё работает автоматически: рядовые компьютеры и серверы берут время с контроллера домена, а тот — с внешнего NTP. Ваша задача — не ломать эту цепочку и держать службу W32Time включённой. При необходимости источник для всей сети задают групповой политикой.
Для одиночного сервера или компьютера в рабочей группе достаточно один раз прописать источник и автозапуск службы:
w32tm /config /manualpeerlist:"time.windows.com,0x9" /syncfromflags:manual /update
sc config w32time start= auto
Параметр 0x9 означает, что Windows сама выбирает интервал опроса источника. После этого служба будет сверять часы по расписанию без вашего участия.
На Linux-сервере автозапуск включает служба времени:
sudo systemctl enable --now chronyd
NTP работает по порту 123 (UDP). Если синхронизация не проходит, а источник задан верно, первым делом проверьте, что этот порт не закрыт на межсетевом экране.
Регламентные задания 1С запускаются по часам сервера. Если сервер синхронизирован, расписание (например, выгрузка в конце дня) сработает в нужную минуту без ручных поправок.
Время в журнале регистрации и логах
Журнал регистрации пишет каждое событие с отметкой времени. В клиент-серверной базе эта отметка берётся с часов сервера, в файловой — с часов рабочей станции. Поэтому при разборе инцидента («кто провёл документ задним числом») смотрите, синхронизированы ли часы: сдвиг на сервере сдвинет все записи журнала.
Отметки времени в журнале отображаются в часовом поясе сеанса. Один и тот же факт два пользователя из разных поясов увидят с разным временем — это нормально, событие одно, показ разный.
Для диагностики самой службы времени Windows ведёт собственный журнал. Включить подробное логирование на время разбора:
w32tm /debug /enable /file:C:\w32time.log /size:10000000 /entries:0-300
После проверки логирование отключают:
w32tm /debug /disable
Отладочный лог службы времени растёт быстро. Не оставляйте его включённым постоянно — включили, сняли нужные замеры, выключили.
Типичные ошибки со сдвигом времени
Почти все проблемы с датами в 1С сводятся к расхождению часов. Разберём, как по симптому найти причину.
Отдельно про часовой пояс: если время верное, а «день» в отчётах начинается не тогда, когда нужно, — дело не в синхронизации часов, а в поясе. Часы и часовой пояс настраиваются отдельно, не путайте эти две задачи.
Частые вопросы
Влияет ли часовой пояс Windows на время в 1С?
Нужно ли перезапускать 1С после синхронизации часов?
Можно ли задать базе свой часовой пояс, отличный от сервера?
Какой NTP-сервер выбрать для синхронизации?
time.windows.com или pool.ntp.org). Главное — один источник для всех машин одной сети.