К статье
Практический материал

Администрирование · 9 мин

Откуда 1С берёт время: источники даты и времени в программе

Разбираем, откуда 1С берёт время и дату: файл-сервер, SQL-сервер, клиентский компьютер. Как проверить источник времени, исправить расхождения и избежать ошибок в документах.

Каждый документ в 1С получает дату и время автоматически — пользователь видит их в шапке документа, но редко задумывается, откуда программа их берёт. Между тем неправильное время приводит к реальным проблемам: проводки попадают не в тот период, документы «перескакивают» по датам, а обмены с другими системами отклоняются из-за расхождений во времени.

Источник времени зависит от режима работы информационной базы: файлового или клиент-серверного. В файловом режиме время берётся с компьютера пользователя, в клиент-серверном — с сервера 1С или сервера СУБД. Из-за этого в сети, где часы на машинах расходятся, разные пользователи могут создавать документы с разным временем, даже работая с одной базой.

Понимание того, какой именно компьютер «раздаёт» время, позволяет быстро находить причину ошибок и исправлять её в одной точке, а не бегать по всем рабочим местам. Ниже разобраны все источники времени в 1С, способы проверки и типичные проблемы.

Какой компьютер «раздаёт» время в 1С

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

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

В клиент-серверном режиме бизнес-логика выполняется на сервере приложений 1С, а запросы к данным уходят на сервер СУБД (MS SQL, PostgreSQL, Oracle). Время документа в этом случае — это время сервера, а не рабочего места бухгалтера. Часы на клиентском компьютере влияют только на отображение некоторых интерфейсных элементов.

Источники времени в файловом и клиент-серверном режиме

Различия между режимами работы — ключевой момент для диагностики. Одна и та же база в разных режимах будет брать время из разных источников, и это объясняет большинство «странных» ситуаций с датами.

Режим работыИсточник времениГде исправлять
Файловая база, локальный запускСистемные часы компьютера пользователяНастройка даты и времени Windows на рабочем месте
Файловая база через веб-серверЧасы веб-сервераВремя на сервере, где опубликована база
Клиент-серверный режимСервер приложений 1С (и СУБД для серверных запросов)Время на сервере 1С и на сервере СУБД
Тонкий/веб-клиентСервер, толстый клиент в файловом режиме — локальные часыЗависит от точки выполнения кода

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

Как проверить, откуда конкретная база берёт время

Самый простой способ — создать тестовый документ и сравнить его время с часами на рабочем месте и на сервере. Если время документа совпадает с часами сервера, а не с локальными — база работает в клиент-серверном режиме и берёт время с сервера.

Более точный метод — посмотреть технологический журнал или выполнить простой запрос через консоль кода. Функция ТекущаяДатаСеанса() покажет, какое время платформа считает текущим, а ТекущаяДата() (устаревшая, но встречающаяся в старых конфигурациях) может вернуть время клиентской машины, что само по себе бывает источником ошибок.

Как определить источник времени
  1. 1
    Уточните режим работы базы: файл-сервер или клиент-сервер (смотрите строку подключения в списке баз).
  2. 2
    Создайте тестовый документ и запомните его время.
  3. 3
    Сравните время документа с часами рабочего места и сервера.
  4. 4
    При расхождении проверьте время на сервере приложений 1С и на сервере СУБД — они должны совпадать.

Типичные проблемы со временем и их причины

Самая частая жалоба — документы создаются «вчерашним» или «завтрашним» числом. В файловом режиме это почти всегда означает сбитые часы или неверный часовой пояс на компьютере пользователя. В клиент-серверном — проблему на сервере.

Вторая типичная ситуация — ошибки вида «дата документа больше текущей» при проведении или обмене. Она возникает, когда разные пользователи работают с разным временем: один создал документ с «будущей» датой из-за спешащих часов, а другой не может провести свой документ раньше него.

Третья группа проблем связана с обменами: синхронизация с сайтом, ЭДО, банк-клиентом или другой базой 1С отклоняет пакеты из-за расхождения меток времени. Внешние системы часто проверяют, что время сообщения не отличается от серверного больше допустимого интервала.

Типичные ошибки
01
Править часы только на одном рабочем месте в файловом режиме — проблема вернётся на других компьютерах.
02
Игнорировать часовой пояс: время может быть точным, но смещённым на несколько часов из-за неверной зоны.
03
Использовать в коде ТекущаяДата() вместо ТекущаяДатаСеанса() — в серверном режиме это даёт время клиента и рассинхронизацию.
04
Забыть синхронизировать время между сервером 1С и сервером СУБД, если это разные машины.

Как правильно настроить время для 1С

Надёжное решение — синхронизация всех участвующих машин с единым источником точного времени по протоколу NTP. В доменной сети Windows контроллер домена обычно сам раздаёт время рабочим станциям; серверы 1С и СУБД нужно включить в ту же схему.

На изолированных компьютерах без домена настройте автоматическую синхронизацию с публичными NTP-серверами через параметры даты и времени Windows. Проверьте также часовой пояс: он должен соответствовать фактическому региону, иначе даже точные часы дадут смещённые документы.

cmd
w32tm /query /status
w32tm /resync

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

Контрольные точки

Как проверить результат

Время нового документа
Норма

Совпадает с эталонными часами с точностью до секунд

Тревожный признак

Отличается на минуты или часы

Время у разных пользователей
Норма

Документы всех пользователей идут с согласованным временем

Тревожный признак

У части пользователей документы «уезжают» вперёд или назад

Часовой пояс
Норма

Соответствует фактическому региону на всех машинах и серверах

Тревожный признак

На части машин выбран другой пояс

Время в программном коде и регламентных заданиях

Разработчикам важно помнить: в клиент-серверном режиме код выполняется в разных местах. Серверные процедуры видят время сервера, клиентские — время рабочего места. Правильный приём — всегда использовать ТекущаяДатаСеанса(), которая гарантированно возвращает серверное время независимо от контекста вызова.

Регламентные и фоновые задания выполняются на сервере, поэтому их расписание привязано к серверному времени. Если часы сервера сбились, ночные обмены и обработки запустятся не тогда, когда ожидается, — например, посреди рабочего дня, создав нагрузку.

Часовые пояса и работа филиалов

Если организация работает в нескольких часовых поясах, рекомендуется держать сервер в одном фиксированном поясе и согласовать, в каком времени ведётся учёт. Пользователи из других регионов будут видеть документы во времени сервера — это нормально, главное, чтобы все понимали принятое соглашение.

В некоторых конфигурациях есть настройки учёта часовых поясов для обменов и расписаний. Перед включением таких механизмов убедитесь, что на всех серверах корректно установлены и пояс, и время — иначе автоматическое смещение только усугубит путаницу.

Часто задаваемые вопросы

Почему документы в 1С создаются с неправильным временем?

Чаще всего сбиты часы или часовой пояс на том компьютере, который служит источником времени: рабочем месте в файловом режиме или сервере в клиент-серверном. Сравните время документа с часами рабочего места и сервера — так вы найдёте проблемную машину.

Влияет ли время на компьютере пользователя в клиент-серверном режиме?

На дату документов — практически нет, она берётся с сервера. Но время клиента может отображаться в отдельных интерфейсных элементах и использоваться старым кодом с ТекущаяДата(), поэтому держать часы рабочих мест синхронизированными всё равно нужно.

Что делать, если сервер 1С и сервер SQL показывают разное время?

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

Можно ли в 1С установить дату документа отличную от текущей?

Да, дату документа можно изменить вручную, если это не запрещено настройками прав и датами запрета изменения данных. Но автоматически подставляемое значение всегда равно текущей дате сеанса.

Почему регламентные задания запускаются не по расписанию?

Проверьте время и часовой пояс на сервере, где выполняются задания, а также работоспособность самого механизма регламентных заданий. Сбитые серверные часы — самая частая причина «ночные» задания при этом срабатывают днём.

Как быстро синхронизировать время на сервере Windows?

Выполните в командной строке от имени администратора команду w32tm /resync, предварительно убедившись, что служба времени запущена и настроен источник синхронизации. Проверить состояние можно командой w32tm /query /status.

Итог

Что важно запомнить

1С берёт время с того компьютера, где выполняется код: в файловом режиме — с рабочего места, в клиент-серверном — с сервера. Синхронизируйте по NTP все машины, участвующие в работе базы, проверяйте часовые пояса, а в коде используйте ТекущаяДатаСеанса(). Большинство проблем с датами решается в одной точке — на источнике времени.