Откуда 1С 8.3 берёт текущее время и где его поменять

· 9 мин

Содержание

Своих часов у 1С нет: платформа берёт время у операционной системы. В файловой базе это часы компьютера пользователя, в клиент-серверной — часы сервера 1С. Чтобы новые документы создавались другой датой без перевода часов, задайте рабочую дату: Главное меню → Сервис → Параметры → Рабочая дата.

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

Откуда платформа 1С берёт дату и время

В коде конфигурации время запрашивают несколько функций. От того, какая из них вызвана и где выполняется код, зависит результат.

ФункцияЧто возвращаетЧьи часы
ТекущаяДата()местное время компьютераклиента или сервера, смотря где выполняется код
ТекущаяДатаСеанса()время с учётом часового пояса сеансасервера, пересчитанное в пояс сеанса
ТекущаяУниверсальнаяДата()время UTCсервера
РабочаяДата()рабочая дата из параметров клиентанастройка пользователя

Типовые конфигурации на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) в основном опираются на ТекущаяДатаСеанса(). Поэтому на итоговое время влияют два фактора: часы машины, где работает сервер 1С, и часовой пояс, заданный в базе.

Практический вывод простой:

  • 💻 файловая база — серверная часть работает внутри клиентского процесса, значит, решают часы каждого компьютера;
  • 🖥️ клиент-серверная база — решают часы сервера, на котором крутятся рабочие процессы rphost;
  • 🌍 разные города — дополнительно решает часовой пояс базы или сеанса;
  • 📅 дата новых документов — может определяться рабочей датой пользователя, а не часами вовсе.

Рабочая дата: другая дата в 1С без перевода часов

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

Как её задать в интерфейсе «Такси»:

  1. Нажмите кнопку главного меню (значок с тремя полосками в левом верхнем углу).
  2. Откройте Сервис → Параметры.
  3. В группе «Рабочая дата» снимите флажок «Использовать текущую дату компьютера».
  4. Укажите нужную дату и нажмите «ОК».

Теперь новые документы по умолчанию получают эту дату. Чтобы вернуться к обычному режиму, снова включите флажок.

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

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

Время в Windows и почему оно попадает в 1С

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

Через параметры Windows 10 и 11

  1. Откройте Параметры → Время и язык → Дата и время.
  2. Включите «Установить время автоматически».
  3. Проверьте часовой пояс. Для Москвы это (UTC+03:00) Москва, Санкт-Петербург.
  4. Нажмите «Синхронизировать сейчас».

Классическое окно открывается командой timedate.cpl из Win + R. Менять дату и время там может только пользователь с правами администратора.

Через командную строку

Часовой пояс удобно проверять и менять утилитой tzutil. Командная строка запускается от имени администратора:

:: показать текущий часовой пояс
tzutil /g

:: установить московское время
tzutil /s "Russian Standard Time"

Кроме часов, на компьютере встречается ещё одна ловушка — сбитое время после замены батарейки BIOS. Если компьютер после выключения каждый раз показывает 2000-е годы, синхронизация поможет только до следующей перезагрузки. Батарейку придётся менять.

Сдвиг часов больше чем на 5 минут ломает доменную авторизацию Kerberos. Если в базе настроена аутентификация операционной системы, при сбитом времени пользователь вдруг получит запрос пароля или отказ во входе. Это тот же симптом, только проявился в 1С.

Сервер 1С и СУБД: чьё время главнее в клиент-серверном режиме

В клиент-серверной базе часы на компьютере пользователя почти ни на что не влияют. Серверные процедуры, проведение документов, запись журнала регистрации выполняются на сервере 1С. Его часы и становятся «временем программы».

Что нужно проверить администратору:

  • 🖥️ время и часовой пояс на сервере 1С (там, где работают ragent, rmngr, rphost);
  • 🗄️ время на сервере СУБД, если он отдельный. Сама 1С берёт даты не из SQL, но расхождение сбивает сопоставление журналов СУБД и 1С при разборе инцидентов;
  • 👥 если в кластере несколько рабочих серверов — время на каждом. Сеанс может попасть на любой из них, и время «скачет» от сеанса к сеансу;
  • ☁️ сервер в облаке или в другом регионе — часто настроен на UTC по умолчанию.

На Linux-сервере 1С часовой пояс и синхронизацию проверяют так:

timedatectl status
sudo timedatectl set-timezone Europe/Moscow
sudo timedatectl set-ntp true

Смена часового пояса на работающем сервере может не подхватиться уже запущенными рабочими процессами. Чтобы применить её наверняка, перезапустите службу сервера 1С. Все сеансы пользователей при этом оборвутся, несохранённые данные пропадут. Делайте это вечером или в выходной, предупредив пользователей заранее.

Отдельно проверьте регламентные задания. Их расписание отсчитывается по часам сервера 1С. Если сервер живёт в UTC, ночная выгрузка, назначенная на 02:00, на деле запустится в 05:00 по Москве и может столкнуться с началом рабочего дня. После исправления пояса сервера пересмотрите расписания: время в них сдвигать уже не нужно.

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

Дата и время отдельного документа

Иногда нужно не настроить время целиком, а поправить один документ. Дата и время хранятся в шапке, в поле «от» рядом с номером.

  1. Откройте документ.
  2. В поле даты рядом с номером укажите нужное число. Время вводится в том же поле после даты, через пробел, в формате чч:мм:сс.
  3. Нажмите «Провести и закрыть».

Время внутри дня важно. Документы одного дня 1С упорядочивает по времени. Если поступление товара стоит на 15:00, а реализация того же товара на 10:00, программа увидит продажу раньше прихода и сообщит о нехватке остатков. Решение — поставить поступлению время раньше реализации и перепровести оба документа.

Что проверить после смены даты:

  • 🔢 номер документа. Нумерация в типовых конфигурациях обычно годовая. При переносе в другой год номер может совпасть с уже существующим;
  • 🔒 дату запрета изменения. Если программа не даёт сохранить документ, значит, период закрыт. Дату запрета меняет администратор или главный бухгалтер в разделе «Администрирование»;
  • 📊 закрытие месяца . Перенос документа в закрытый месяц требует повторного закрытия этого месяца и всех следующих.

Копирование документа подставляет в копию текущую дату (или рабочую), а не дату оригинала. Если копируете документ прошлого периода, сразу поправьте дату, иначе копия встанет сегодняшним числом.

Часовой пояс информационной базы

Когда сервер стоит в Москве, а бухгалтерия — в Новосибирске, часов Windows мало. Нужен часовой пояс на стороне 1С. Платформа поддерживает два уровня:

УровеньКак задаётсяКогда применять
Пояс информационной базыУстановитьЧасовойПоясИнформационнойБазы() или настройка в типовой конфигурациився организация живёт в одном поясе, а сервер — в другом
Пояс сеансаУстановитьЧасовойПоясСеанса()пользователи из разных городов работают в одной базе

Пояса задаются идентификаторами вида Europe/Moscow, Asia/Novosibirsk, Asia/Yekaterinburg. Если пояс базы не задан, используется пояс сервера 1С.

В типовых конфигурациях на БСП пояс базы выведен в общие настройки программы: откройте Администрирование → Общие настройки и найдите на форме поле с часовым поясом. В некоторых релизах оно может называться иначе, но ищется на той же форме по слову «пояс».

Проверить, что видит программа, можно внешней обработкой с одной командой:

&НаСервере
Процедура ПоказатьВремяНаСервере()
    Сообщить("Часы сервера: " + Формат(ТекущаяДата(), "ДЛФ=DT"));
    Сообщить("Время сеанса: " + Формат(ТекущаяДатаСеанса(), "ДЛФ=DT"));
    Сообщить("Пояс сеанса: " + ЧасовойПоясСеанса());
    Сообщить("Пояс базы: " + ЧасовойПоясИнформационнойБазы());
КонецПроцедуры

&НаКлиенте
Процедура ПоказатьВремя(Команда)
    Сообщить("Часы компьютера: " + Формат(ТекущаяДата(), "ДЛФ=DT"));
    ПоказатьВремяНаСервере();
КонецПроцедуры

Если «Часы компьютера» и «Часы сервера» расходятся, виноваты часы одной из машин. Если часы сервера верные, а «Время сеанса» сдвинуто на целое число часов — виноват часовой пояс.

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

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

В домене Active Directory

Компьютеры и серверы в домене берут время у контроллеров домена. Источник для всего домена — контроллер с ролью эмулятора PDC. Именно ему указывают внешний NTP-сервер:

w32tm /config /manualpeerlist:"ru.pool.ntp.org" /syncfromflags:manual /reliable:yes /update
net stop w32time && net start w32time
w32tm /resync

Остальным машинам домена ничего настраивать не нужно. Достаточно проверить, что они синхронизируются с доменом.

На отдельном компьютере или сервере без домена

:: состояние службы времени и источник
w32tm /query /status

:: указать NTP-сервер и синхронизироваться
w32tm /config /manualpeerlist:"ru.pool.ntp.org" /syncfromflags:manual /update
w32tm /resync

На Linux за синхронизацию отвечает chrony или systemd-timesyncd; включается командой timedatectl set-ntp true из предыдущего раздела.

Время в 1С настроено правильно
Выполнено: 0 / 5

Как найти расхождение времени по журналам

Когда пользователь говорит «документ записался не тем временем», нужно понять, где именно сбой. Помогают три источника.

Журнал регистрации 1С. В Бухгалтерии 3.0 он открывается из Администрирование → Обслуживание → Журнал регистрации. Сделайте тестовое действие (например, запишите любой справочник) и сразу посмотрите время события. Расхождение с реальным временем на целое число часов указывает на часовой пояс сервера, на минуты — на неточные часы.

Технологический журнал. Файлы называются по дате и часу по местному времени сервера: yymmddhh.log. Если файл с событиями «текущего часа» имеет имя со сдвигом, часы или пояс сервера 1С отличаются от ваших.

Журнал Windows. В «Просмотре событий» (eventvwr.msc) в журнале «Система» откройте события от источника Time-Service. По ним видно, когда служба последний раз синхронизировалась и были ли ошибки доступа к источнику времени.

Диагностика: выберите симптом

Частые вопросы

Можно ли запретить пользователю менять рабочую дату?
Средствами платформы рабочую дату может менять любой пользователь в своих параметрах. Защиту от проводок «задним числом» дают даты запрета изменения, а не запрет на рабочую дату.
Влияет ли время компьютера на лицензию 1С?
На привязку программной лицензии к оборудованию время не влияет. Но сбитые часы мешают HTTPS-соединениям, электронной подписи и обменам с внешними сервисами: сертификаты кажутся ещё не действующими или просроченными.
Почему в веб-клиенте время отличается от времени на моём компьютере?
Серверный код веб-клиента выполняется на сервере 1С и берёт его время и пояс. Если вы в другом регионе, время подстроит только часовой пояс сеанса или базы.
Нужно ли перепроводить документы после исправления часового пояса?
Уже записанные документы не меняются, их дата хранится как есть. Перепроводить нужно только те, у которых из-за сдвига перепутался порядок внутри дня.