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

Разработка и Конфигурация · 9 мин

Как сделать дату в 1С: ввод, форматирование и работа в коде

Как сделать дату в 1С: способы ввода даты в документах, настройка формата, функции ТекущаяДата, Дата и Формат в языке 1С, типичные ошибки и их решения.

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

Основная сложность у пользователей возникает из-за того, что 1С хранит дату с точностью до секунды, а отображает её в зависимости от региональных настроек и параметров конфигурации. Поэтому одна и та же дата может выглядеть как «01.03.25», «01.03.2026» или «1 марта 2026 г.», а в запросах сравниваться с учётом времени.

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

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

Практически каждый документ в 1С (реализация, поступление, счёт-фактура, приказ) содержит поле «Дата». По умолчанию при создании документа туда подставляется текущая дата сеанса, но её можно изменить. Кликните в поле и введите дату цифрами в формате ДД.ММ.ГГГГ — например, 15.03.2026. Разделители можно не вводить: 1С распознает и «15032026», преобразовав ввод в правильную дату.

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

Полезные сокращения при ручном вводе: если ввести только день и месяц (например, «1503»), год подставится текущий. Ввод одного числа трактуется как день текущего месяца. Это ускоряет ввод документов в пределах текущего периода.

Порядок ввода даты в документе
  1. 1
    Откройте документ и найдите поле «Дата» в шапке
  2. 2
    Введите дату цифрами в формате ДД.ММ.ГГГГ или нажмите кнопку календаря
  3. 3
    Проверьте, что дата попадает в открытый период (нет запрета редактирования)
  4. 4
    Запишите документ и убедитесь, что в списке отображается нужная дата

Текущая дата и дата сеанса: в чём разница

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

В коде текущую дату получают функцией ТекущаяДата() (в новых версиях платформы — ТекущаяДатаСеанса(), что предпочтительнее). Функция возвращает значение типа «Дата» с точностью до секунды, включая время. Если нужна только дата без времени, применяют НачалоДня(ТекущаяДатаСеанса()) — время обнулится до 00:00:00.

Как создать произвольную дату в коде 1С

Для формирования конкретной даты в языке 1С используется конструктор Дата(Год, Месяц, День) или литерал даты в одинарных кавычках: '20260315'. Литеральная форма записывается как ГГГГММДД и может включать время: '20260315143000' — 15 марта 2026 года, 14:30:00.

Пример создания даты и работы с ней:

НоваяДата = Дата(2026, 3, 15); // 15.03.2026 0:00:00

ДатаЛитералом = '20260315';

НачалоПериода = НачалоМесяца(ТекущаяДатаСеанса());

КонецПериода = КонецМесяца(ТекущаяДатаСеанса());

ДатаЧерезНеделю = ТекущаяДатаСеанса() + 7 24 60 * 60; // +7 дней в секундах

Обратите внимание: арифметика с датами в 1С выполняется в секундах. Чтобы прибавить день, добавляют 86400 секунд. Для месяцев и лет простое сложение не подходит — используют функцию ДобавитьМесяц(Дата, КоличествоМесяцев), которая корректно обрабатывает разную длину месяцев.

1c
ДатаОтчета = Дата(2026, 3, 15);
Сдвиг = ДобавитьМесяц(ДатаОтчета, 1); // 15.04.2026

Как отформатировать дату для вывода пользователю

Значение типа «Дата» при выводе в сообщение или макет преобразуется в строку по умолчанию, но результат зависит от региональных настроек. Для управляемого форматирования применяют функцию Формат() с параметром форматной строки.

Основные варианты: Формат(Дата, "ДЛФ=D") выведет длинный формат вида «15 марта 2026 г.», Формат(Дата, "ДЛФ=DD") — «15.03.2026», Формат(Дата, "ДФ=dd.MM.yyyy") — тот же результат через явный шаблон. Параметр ДФ позволяет собрать любой шаблон: «yyyy-MM-dd» для обмена данными, «dd MMMM» для печатных форм.

Форматная строкаПример результатаГде применяется
ДЛФ=D15 марта 2026 г.Печатные формы, письма
ДЛФ=DD15.03.2026Сообщения, журналы
ДФ=yyyy-MM-dd2026-03-15Обмен данными, API
ДФ="dd.MM.yyyy HH:mm:ss"15.03.2026 14:30:00Журналы регистрации, логи

Работа с датами в запросах

В языке запросов 1С дата задаётся параметром или литералом вида ДАТАВРЕМЯ(2026, 3, 15, 0, 0, 0). Передавать дату параметром предпочтительнее: запрос остаётся универсальным и не требует конкатенации строк, которая чревата ошибками формата.

Частая задача — отбор документов за день. Правильный способ: условие Дата МЕЖДУ &НачалоДня И &КонецДня, где параметры вычисляются как НачалоДня(Дата) и КонецДня(Дата). В запросе доступны функции НАЧАЛОПЕРИОДА и КОНЕЦПЕРИОДА с указанием ДЕНЬ, МЕСЯЦ, КВАРТАЛ, ГОД — они позволяют округлять даты прямо в тексте запроса.

Типичные ошибки
01
Сравнение даты с концом дня как 23:59:59 вместо функции КонецДня() — документы, проведённые в ту же секунду с большей точностью на некоторых СУБД, могут выпасть из выборки
02
Конкатенация даты в текст запроса строкой — формат зависит от региональных настроек, запрос падает или возвращает пустой результат
03
Прибавление 30 дней вместо ДобавитьМесяц() — сдвиг даты при разной длине месяцев
04
Сравнение дат с разным временем без НачалоДня() — условие не срабатывает

Запрет изменения даты и закрытые периоды

Если при вводе даты документа появляется сообщение о запрете редактирования, значит администратор установил дату запрета изменения данных. Это штатный механизм защиты закрытых периодов: после сдачи отчётности прошлые месяцы блокируют от случайных правок. Проверить настройку можно в разделе «Администрирование» — «Поддержка и обслуживание» — «Даты запрета изменения данных» (в типовых конфигурациях на БСП).

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

Проверка результата и диагностика проблем

После ввода или формирования даты убедитесь, что результат соответствует ожиданиям. В документе — проверьте отображение в списке журнала и проведение. В коде — выведите значение через Сообщить(Формат(Дата, "ДЛФ=DDT")) и проверьте, что время соответствует замыслу.

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

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

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

Документ записывается и проводится, в журнале видна нужная дата

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

Сообщение о запрете периода или дата сбрасывается на текущую

Дата в коде
Норма

Формат(Дата, "ДЛФ=DDT") выводит ожидаемое значение с ожидаемым временем

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

Пустая дата 01.01.0001 или неожиданное время

Отбор в запросе
Норма

Выборка содержит документы за весь период включительно

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

Выпадают документы первого или последнего дня

Если дата вдруг отображается как «01.01.0001», это пустое значение типа «Дата» — признак того, что переменной не присвоено значение или реквизит не заполнен. Проверку выполняют функцией ЗначениеЗаполнено(Дата) или сравнением с '00010101'.

Итог

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

В документах дату вводят в формате ДД.ММ.ГГГГ или через календарь. В коде дату создают функцией Дата() или литералом 'ГГГГММДД', текущую получают через ТекущаяДатаСеанса(), выводят через Формат(). Арифметика — в секундах, месяцы добавляют через ДобавитьМесяц(), сравнение дат выполняют с учётом времени.

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

Как в 1С ввести дату без года, чтобы подставился текущий?

Введите только день и месяц цифрами, например «1503» или «15.03» — платформа автоматически дополнит значение текущим годом. Если ввести одно число, оно будет трактовано как день текущего месяца.

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

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

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

Используйте НачалоДня(ТекущаяДатаСеанса()) — время обнулится до 00:00:00. Для конца дня применяйте КонецДня(), который возвращает 23:59:59.

Как прибавить к дате один месяц?

Функцией ДобавитьМесяц(Дата, 1). Простое добавление 30 дней в секундах ненадёжно: в феврале и длинных месяцах результат сместится. ДобавитьМесяц корректно обрабатывает календарь.

Что означает дата 01.01.0001 в отчёте?

Это пустое значение типа «Дата»: реквизит не заполнен или переменной не присвоено значение. Проверяйте заполненность функцией ЗначениеЗаполнено() перед выводом и сравнением.

Как вывести дату в формате «2026-03-15» для обмена с другой системой?

Примените Формат(Дата, "ДФ=yyyy-MM-dd"). Этот шаблон не зависит от региональных настроек и подходит для файлов обмена, веб-сервисов и API.