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

Быстрый старт · 8 мин

Как указать время в 1С: документы, интерфейс и код

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

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

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

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

Как устроены дата и время в 1С

В платформе 1С:Предприятие не существует отдельного типа «Время». Есть тип «Дата», который обязательно включает часы, минуты и секунды. Даже если вы ввели только «15.03.2026», система хранит это как «15.03.2026 0:00:00» — начало дня.

Из этого следуют два практических вывода. Первый: сравнение дат без учёта времени может давать неожиданный результат — документ за 15 марта 14:30 не равен документу за 15 марта 0:00. Второй: чтобы «обрезать» время, используют функции начала и конца периода, а не ручное обнуление.

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

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

В типовых конфигурациях поле «Дата» документа по умолчанию часто показывает только календарное число. Чтобы указать время, откройте документ и проверьте формат поля даты: если время не видно, его можно включить через настройки формы или изменить в режиме «Ещё» → «Изменить форму», если у вас есть соответствующие права.

Если поле даты уже отображает время, просто щёлкните по нему и введите значение вручную в формате «ДД.ММ.ГГГГ ЧЧ:ММ:СС» либо выберите дату в календаре и допишите время. После записи документа новое время сохранится и повлияет на порядок проведения.

Как поменять время документа
  1. 1
    Откройте документ в режиме редактирования
  2. 2
    Щёлкните по полю «Дата» и введите дату с временем через пробел
  3. 3
    Если время не отображается — включите его в настройках формы поля
  4. 4
    Запишите и при необходимости перепроведите документ
  5. 5
    Проверьте позицию документа в журнале и в последовательности

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

Отображение времени в журналах и списках

В журналах документов время часто скрыто, чтобы экономить место. Чтобы увидеть его, откройте настройку списка: «Ещё» → «Настроить список» или «Настройка колонок» (зависит от конфигурации). Найдите колонку «Дата» и включите показ времени, если такая опция доступна, либо добавьте отдельное поле времени.

Другой способ — изменить формат отображения через настройки поля в конфигураторе или в расширении формы: свойство «Формат» с шаблоном вида «ДФ='dd.MM.yyyy ЧЧ:мм:сс'». Это вариант для разработчиков и администраторов, обычному пользователю достаточно настроек списка.

Как указать время в коде 1С

Во встроенном языке время задаётся через конструктор даты: Дата(2026, 3, 15, 14, 30, 0) — это 15 марта, 14 часов 30 минут. Литерал даты записывается в одинарных кавычках: '20260315143000'. Текущее время на сервере получают функцией ТекущаяДатаСеанса() — она предпочтительнее ТекущаяДата(), так как учитывает часовой пояс сеанса.

Часто нужные операции — получить начало или конец дня, прибавить часы, выделить только время. Для этого есть функции НачалоДня(), КонецДня(), а арифметика выполняется сложением секунд: Дата + 3600 прибавит один час.

bsl
// Задать конкретное время
НужноеВремя = Дата(2026, 3, 15, 14, 30, 0);
// Текущее время сеанса
Сейчас = ТекущаяДатаСеанса();
// Прибавить 2 часа
Позже = Сейчас + 2 * 3600;
// Начало дня документа
Начало = НачалоДня(Документ.Дата);

В запросах время задаётся параметром типа «Дата» или литералом ДАТАВРЕМЯ(2026, 3, 15, 14, 30, 0). Для сравнения по периоду используйте конструкцию «МЕЖДУ» с началом и концом дня — это исключает потерю документов, проведённых в течение дня.

Время в константах, регистрах и расписаниях

Если нужно хранить только время без даты (например, время начала рабочего дня), типовое решение — использовать дату с фиксированной календарной частью, например 01.01.0001 09:00:00, и применять формат «ДФ=ЧЧ:мм» для отображения. Так делают в графиках работы и настройках смен.

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

Типичные ошибки при работе со временем

Самая частая ошибка — сравнение дат в запросе без учёта времени: условие «Дата = &Дата» не найдёт документы, если в параметре время 0:00:00, а у документов другое. Используйте диапазоны от начала до конца дня.

Вторая ошибка — использование ТекущаяДата() в серверном коде: на сервере она недоступна или даёт время сервера без привязки к сеансу пользователя. Третья — ручной ввод времени в неправильном формате: платформа ожидает 24-часовой формат, и «2:30» вечера нужно вводить как 14:30.

Типичные ошибки
01
Сравнение дат без диапазона — документы внутри дня теряются из выборки
02
Изменение времени проведённого документа без восстановления последовательности — расходятся итоги
03
Использование времени клиента вместо времени сеанса — рассинхрон при разных часовых поясах
04
Ввод времени в 12-часовом формате — документ уходит на ночные часы

Проверка результата

После изменения времени документа проверьте три вещи: позицию документа в журнале, корректность проведения (отсутствие сообщений об ошибках) и состояние последовательностей, если они используются в конфигурации.

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

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

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

Отображение в журнале
Норма

Дата и время документа видны и соответствуют введённым

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

Время сброшено на 0:00 или документ стоит не на своём месте

Проведение документа
Норма

Документ проводится без сообщений о нарушении последовательности

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

Появляется предупреждение о границе последовательности

Значение в запросе
Норма

Запрос возвращает полное значение даты-времени

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

Время отличается от ожидаемого на величину часового пояса

FAQ

Почему в поле даты документа не видно времени?

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

Как задать только время без даты?

Отдельного типа «время» нет. Используйте дату с фиксированной календарной частью (например, 01.01.0001) и нужными часами и минутами, а для отображения задайте формат «ДФ=ЧЧ:мм».

Чем ТекущаяДатаСеанса() лучше ТекущаяДата()?

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

Изменится ли проведение, если поменять время документа?

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

Как прибавить к дате несколько часов в коде?

Дата в 1С измеряется в секундах, поэтому сложение выполняется арифметически: НоваяДата = ИсходнаяДата + 3 * 3600 прибавит три часа. Специальной функции «ДобавитьЧас» в платформе нет.

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

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

Итог

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

В 1С время всегда хранится внутри даты, даже если не отображается. Меняйте его через поле «Дата» документа, в коде используйте Дата() и ТекущаяДатаСеанса(), а после изменения времени проведённых документов восстанавливайте последовательность проведения.