Администрирование · 9 мин
Откуда 1С берёт время: источники даты и времени в программе
Разбираем, откуда 1С берёт время и дату: файл-сервер, SQL-сервер, клиентский компьютер. Как проверить источник времени, исправить расхождения и избежать ошибок в документах.
Каждый документ в 1С получает дату и время автоматически — пользователь видит их в шапке документа, но редко задумывается, откуда программа их берёт. Между тем неправильное время приводит к реальным проблемам: проводки попадают не в тот период, документы «перескакивают» по датам, а обмены с другими системами отклоняются из-за расхождений во времени.
Источник времени зависит от режима работы информационной базы: файлового или клиент-серверного. В файловом режиме время берётся с компьютера пользователя, в клиент-серверном — с сервера 1С или сервера СУБД. Из-за этого в сети, где часы на машинах расходятся, разные пользователи могут создавать документы с разным временем, даже работая с одной базой.
Понимание того, какой именно компьютер «раздаёт» время, позволяет быстро находить причину ошибок и исправлять её в одной точке, а не бегать по всем рабочим местам. Ниже разобраны все источники времени в 1С, способы проверки и типичные проблемы.
Какой компьютер «раздаёт» время в 1С
Платформа 1С не имеет собственных часов — она запрашивает системное время у операционной системы того компьютера, на котором выполняется код. Поэтому ответ на вопрос «откуда время» всегда начинается с вопроса «где выполняется код».
В файловом режиме вся работа происходит на компьютере пользователя (или на веб-сервере, если база опубликована). Соответственно, дата и время нового документа берутся с системных часов этого компьютера. Если часы на рабочем месте спешат на десять минут — документы будут создаваться с этим сдвигом.
В клиент-серверном режиме бизнес-логика выполняется на сервере приложений 1С, а запросы к данным уходят на сервер СУБД (MS SQL, PostgreSQL, Oracle). Время документа в этом случае — это время сервера, а не рабочего места бухгалтера. Часы на клиентском компьютере влияют только на отображение некоторых интерфейсных элементов.
Источники времени в файловом и клиент-серверном режиме
Различия между режимами работы — ключевой момент для диагностики. Одна и та же база в разных режимах будет брать время из разных источников, и это объясняет большинство «странных» ситуаций с датами.
| Режим работы | Источник времени | Где исправлять |
|---|---|---|
| Файловая база, локальный запуск | Системные часы компьютера пользователя | Настройка даты и времени Windows на рабочем месте |
| Файловая база через веб-сервер | Часы веб-сервера | Время на сервере, где опубликована база |
| Клиент-серверный режим | Сервер приложений 1С (и СУБД для серверных запросов) | Время на сервере 1С и на сервере СУБД |
| Тонкий/веб-клиент | Сервер, толстый клиент в файловом режиме — локальные часы | Зависит от точки выполнения кода |
Особый случай — расхождение времени между сервером приложений 1С и сервером СУБД, если это разные машины. Платформа часть операций выполняет сама, а часть поручает СУБД, и если их часы расходятся, в журналах и служебных записях появляются противоречивые метки времени.
Как проверить, откуда конкретная база берёт время
Самый простой способ — создать тестовый документ и сравнить его время с часами на рабочем месте и на сервере. Если время документа совпадает с часами сервера, а не с локальными — база работает в клиент-серверном режиме и берёт время с сервера.
Более точный метод — посмотреть технологический журнал или выполнить простой запрос через консоль кода. Функция ТекущаяДатаСеанса() покажет, какое время платформа считает текущим, а ТекущаяДата() (устаревшая, но встречающаяся в старых конфигурациях) может вернуть время клиентской машины, что само по себе бывает источником ошибок.
- 1Уточните режим работы базы: файл-сервер или клиент-сервер (смотрите строку подключения в списке баз).
- 2Создайте тестовый документ и запомните его время.
- 3Сравните время документа с часами рабочего места и сервера.
- 4При расхождении проверьте время на сервере приложений 1С и на сервере СУБД — они должны совпадать.
Типичные проблемы со временем и их причины
Самая частая жалоба — документы создаются «вчерашним» или «завтрашним» числом. В файловом режиме это почти всегда означает сбитые часы или неверный часовой пояс на компьютере пользователя. В клиент-серверном — проблему на сервере.
Вторая типичная ситуация — ошибки вида «дата документа больше текущей» при проведении или обмене. Она возникает, когда разные пользователи работают с разным временем: один создал документ с «будущей» датой из-за спешащих часов, а другой не может провести свой документ раньше него.
Третья группа проблем связана с обменами: синхронизация с сайтом, ЭДО, банк-клиентом или другой базой 1С отклоняет пакеты из-за расхождения меток времени. Внешние системы часто проверяют, что время сообщения не отличается от серверного больше допустимого интервала.
Как правильно настроить время для 1С
Надёжное решение — синхронизация всех участвующих машин с единым источником точного времени по протоколу NTP. В доменной сети Windows контроллер домена обычно сам раздаёт время рабочим станциям; серверы 1С и СУБД нужно включить в ту же схему.
На изолированных компьютерах без домена настройте автоматическую синхронизацию с публичными NTP-серверами через параметры даты и времени Windows. Проверьте также часовой пояс: он должен соответствовать фактическому региону, иначе даже точные часы дадут смещённые документы.
w32tm /query /status
w32tm /resyncПосле настройки проверьте результат: создайте документ, сверьте его время с эталонными часами и убедитесь, что у всех пользователей документы получают согласованное время. Расхождение в пределах нескольких секунд — норма, минуты — повод искать несинхронизированную машину.
Как проверить результат
Совпадает с эталонными часами с точностью до секунд
Отличается на минуты или часы
Документы всех пользователей идут с согласованным временем
У части пользователей документы «уезжают» вперёд или назад
Соответствует фактическому региону на всех машинах и серверах
На части машин выбран другой пояс
Время в программном коде и регламентных заданиях
Разработчикам важно помнить: в клиент-серверном режиме код выполняется в разных местах. Серверные процедуры видят время сервера, клиентские — время рабочего места. Правильный приём — всегда использовать ТекущаяДатаСеанса(), которая гарантированно возвращает серверное время независимо от контекста вызова.
Регламентные и фоновые задания выполняются на сервере, поэтому их расписание привязано к серверному времени. Если часы сервера сбились, ночные обмены и обработки запустятся не тогда, когда ожидается, — например, посреди рабочего дня, создав нагрузку.
Часовые пояса и работа филиалов
Если организация работает в нескольких часовых поясах, рекомендуется держать сервер в одном фиксированном поясе и согласовать, в каком времени ведётся учёт. Пользователи из других регионов будут видеть документы во времени сервера — это нормально, главное, чтобы все понимали принятое соглашение.
В некоторых конфигурациях есть настройки учёта часовых поясов для обменов и расписаний. Перед включением таких механизмов убедитесь, что на всех серверах корректно установлены и пояс, и время — иначе автоматическое смещение только усугубит путаницу.
Часто задаваемые вопросы
Почему документы в 1С создаются с неправильным временем?
Чаще всего сбиты часы или часовой пояс на том компьютере, который служит источником времени: рабочем месте в файловом режиме или сервере в клиент-серверном. Сравните время документа с часами рабочего места и сервера — так вы найдёте проблемную машину.
Влияет ли время на компьютере пользователя в клиент-серверном режиме?
На дату документов — практически нет, она берётся с сервера. Но время клиента может отображаться в отдельных интерфейсных элементах и использоваться старым кодом с ТекущаяДата(), поэтому держать часы рабочих мест синхронизированными всё равно нужно.
Что делать, если сервер 1С и сервер SQL показывают разное время?
Настройте оба сервера на синхронизацию с одним NTP-источником и перезапустите службы при необходимости. Расхождение между ними приводит к противоречивым меткам в журналах и ошибкам в служебных механизмах.
Можно ли в 1С установить дату документа отличную от текущей?
Да, дату документа можно изменить вручную, если это не запрещено настройками прав и датами запрета изменения данных. Но автоматически подставляемое значение всегда равно текущей дате сеанса.
Почему регламентные задания запускаются не по расписанию?
Проверьте время и часовой пояс на сервере, где выполняются задания, а также работоспособность самого механизма регламентных заданий. Сбитые серверные часы — самая частая причина «ночные» задания при этом срабатывают днём.
Как быстро синхронизировать время на сервере Windows?
Выполните в командной строке от имени администратора команду w32tm /resync, предварительно убедившись, что служба времени запущена и настроен источник синхронизации. Проверить состояние можно командой w32tm /query /status.
Что важно запомнить
1С берёт время с того компьютера, где выполняется код: в файловом режиме — с рабочего места, в клиент-серверном — с сервера. Синхронизируйте по NTP все машины, участвующие в работе базы, проверяйте часовые пояса, а в коде используйте ТекущаяДатаСеанса(). Большинство проблем с датами решается в одной точке — на источнике времени.