Как заставить 1С показывать верное время во всех режимах работы

· 9 мин

Содержание

Синхронизация времени в 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

Порядок настройки по шагам:

  1. На всех рабочих станциях включите службу W32Time (Служба времени Windows) и переведите её в автозапуск.
  2. Выберите единый источник: контроллер домена или один NTP-сервер для всех.
  3. Проверьте часовой пояс Windows — он должен совпадать на всех машинах региона.
  4. Выполните 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 замеров расхождения с указанным источником и ничего не поменяет — удобно для диагностики.

Проверка синхронизации времени
Выполнено: 0 / 6

Автоматическая синхронизация времени

Ручной 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С берёт у операционной системы и само время, и часовой пояс. Если в Windows выставлен неверный пояс, 1С будет показывать смещённое время даже при точно идущих часах.
Нужно ли перезапускать 1С после синхронизации часов?
Нет. Платформа спрашивает время у системы при каждом обращении, поэтому новое время подхватывается сразу. Перезапуск нужен только при смене часового пояса сервера, и то не всегда.
Можно ли задать базе свой часовой пояс, отличный от сервера?
Да, у информационной базы есть собственный часовой пояс, который задаётся средствами платформы. Это нужно, когда сервер стоит в одном регионе, а работают в базе из другого.
Какой NTP-сервер выбрать для синхронизации?
В домене — контроллер домена, он сам сверяется с внешним источником. Для одиночного сервера подойдёт публичный пул (например, time.windows.com или pool.ntp.org). Главное — один источник для всех машин одной сети.
Почему в облаке 1С:Fresh время отличается от моего?
Сервер облака стоит в дата-центре провайдера. Вы видите время, пересчитанное в часовой пояс вашего сеанса. Выставьте свой регион в персональных настройках — время станет привычным.