Быстрый старт · 8 мин
Как указать время в 1С: документы, интерфейс и код
Разбираем, как указать и изменить время в 1С: в документах, журналах, константах и коде на встроенном языке. Настройка формата, типичные ошибки и проверка результата.
Работа со временем в 1С встречается на каждом шагу: документы проводятся с точностью до секунды, смены в учёте рабочего времени привязаны к часам, а расписания регламентных заданий запускаются в заданный момент. При этом у пользователей регулярно возникают вопросы: где изменить время документа, почему поле времени не отображается, как задать время в коде.
В 1С дата и время хранятся в едином значении типа «Дата», которое всегда содержит и календарную дату, и время с точностью до секунды. Если вы видите только дату без времени — это особенность отображения, а не отсутствие данных. Понимание этого принципа снимает большинство вопросов.
Ниже разобраны основные сценарии: изменение времени в документе, настройка отображения времени в журналах, работа с полями ввода, указание времени в запросах и коде, а также типичные ошибки и способы проверки результата.
Как устроены дата и время в 1С
В платформе 1С:Предприятие не существует отдельного типа «Время». Есть тип «Дата», который обязательно включает часы, минуты и секунды. Даже если вы ввели только «15.03.2026», система хранит это как «15.03.2026 0:00:00» — начало дня.
Из этого следуют два практических вывода. Первый: сравнение дат без учёта времени может давать неожиданный результат — документ за 15 марта 14:30 не равен документу за 15 марта 0:00. Второй: чтобы «обрезать» время, используют функции начала и конца периода, а не ручное обнуление.
Время документа влияет на его позицию в последовательности проведения и на итоги регистров. Два документа с одинаковой датой, но разным временем, будут проведены в порядке возрастания времени, что важно для корректного расчёта остатков.
Как изменить время в документе
В типовых конфигурациях поле «Дата» документа по умолчанию часто показывает только календарное число. Чтобы указать время, откройте документ и проверьте формат поля даты: если время не видно, его можно включить через настройки формы или изменить в режиме «Ещё» → «Изменить форму», если у вас есть соответствующие права.
Если поле даты уже отображает время, просто щёлкните по нему и введите значение вручную в формате «ДД.ММ.ГГГГ ЧЧ:ММ:СС» либо выберите дату в календаре и допишите время. После записи документа новое время сохранится и повлияет на порядок проведения.
- 1Откройте документ в режиме редактирования
- 2Щёлкните по полю «Дата» и введите дату с временем через пробел
- 3Если время не отображается — включите его в настройках формы поля
- 4Запишите и при необходимости перепроведите документ
- 5Проверьте позицию документа в журнале и в последовательности
Учтите: изменение времени уже проведённого документа может потребовать перепроведения последующих документов в последовательности, иначе итоги по регистрам станут недостоверными. Платформа обычно сама предлагает восстановить последовательность.
Отображение времени в журналах и списках
В журналах документов время часто скрыто, чтобы экономить место. Чтобы увидеть его, откройте настройку списка: «Ещё» → «Настроить список» или «Настройка колонок» (зависит от конфигурации). Найдите колонку «Дата» и включите показ времени, если такая опция доступна, либо добавьте отдельное поле времени.
Другой способ — изменить формат отображения через настройки поля в конфигураторе или в расширении формы: свойство «Формат» с шаблоном вида «ДФ='dd.MM.yyyy ЧЧ:мм:сс'». Это вариант для разработчиков и администраторов, обычному пользователю достаточно настроек списка.
Как указать время в коде 1С
Во встроенном языке время задаётся через конструктор даты: Дата(2026, 3, 15, 14, 30, 0) — это 15 марта, 14 часов 30 минут. Литерал даты записывается в одинарных кавычках: '20260315143000'. Текущее время на сервере получают функцией ТекущаяДатаСеанса() — она предпочтительнее ТекущаяДата(), так как учитывает часовой пояс сеанса.
Часто нужные операции — получить начало или конец дня, прибавить часы, выделить только время. Для этого есть функции НачалоДня(), КонецДня(), а арифметика выполняется сложением секунд: Дата + 3600 прибавит один час.
// Задать конкретное время
НужноеВремя = Дата(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.
Проверка результата
После изменения времени документа проверьте три вещи: позицию документа в журнале, корректность проведения (отсутствие сообщений об ошибках) и состояние последовательностей, если они используются в конфигурации.
Для проверки времени, сохранённого в базе, можно вывести поле даты в список с полным форматом или выполнить простой запрос через консоль запросов, выбрав поле «Дата» нужного документа.
Как проверить результат
Дата и время документа видны и соответствуют введённым
Время сброшено на 0:00 или документ стоит не на своём месте
Документ проводится без сообщений о нарушении последовательности
Появляется предупреждение о границе последовательности
Запрос возвращает полное значение даты-времени
Время отличается от ожидаемого на величину часового пояса
FAQ
Почему в поле даты документа не видно времени?
Формат отображения поля настроен на показ только даты. Время при этом хранится в базе. Включите показ времени в настройках формы или списка либо измените свойство «Формат» поля в конфигураторе.
Как задать только время без даты?
Отдельного типа «время» нет. Используйте дату с фиксированной календарной частью (например, 01.01.0001) и нужными часами и минутами, а для отображения задайте формат «ДФ=ЧЧ:мм».
Чем ТекущаяДатаСеанса() лучше ТекущаяДата()?
ТекущаяДатаСеанса() возвращает время с учётом часового пояса сеанса пользователя и работает на сервере. ТекущаяДата() доступна только на клиенте и может расходиться со временем сервера, что критично при распределённой работе.
Изменится ли проведение, если поменять время документа?
Да. Время определяет позицию документа в последовательности. После изменения времени проведённого документа может потребоваться перепроведение последующих документов, иначе итоги регистров станут недостоверными.
Как прибавить к дате несколько часов в коде?
Дата в 1С измеряется в секундах, поэтому сложение выполняется арифметически: НоваяДата = ИсходнаяДата + 3 * 3600 прибавит три часа. Специальной функции «ДобавитьЧас» в платформе нет.
Почему регламентное задание запускается не в то время?
Расписание регламентных заданий отрабатывает по времени сервера. Если сервер находится в другом часовом поясе, сдвиньте расписание на соответствующую разницу или уточните у администратора настройки часового пояса сервера.
Что важно запомнить
В 1С время всегда хранится внутри даты, даже если не отображается. Меняйте его через поле «Дата» документа, в коде используйте Дата() и ТекущаяДатаСеанса(), а после изменения времени проведённых документов восстанавливайте последовательность проведения.