Разработка и Конфигурация · 9 мин
Как сделать дату в 1С: ввод, форматирование и работа в коде
Как сделать дату в 1С: способы ввода даты в документах, настройка формата, функции ТекущаяДата, Дата и Формат в языке 1С, типичные ошибки и их решения.
Дата в 1С встречается везде: в шапке документа, в отчётах, в константах и в программном коде. В зависимости от задачи «сделать дату» можно тремя разными способами: ввести вручную в поле документа, настроить формат отображения или сформировать значение типа «Дата» в коде на встроенном языке. Каждый сценарий имеет свои правила и подводные камни.
Основная сложность у пользователей возникает из-за того, что 1С хранит дату с точностью до секунды, а отображает её в зависимости от региональных настроек и параметров конфигурации. Поэтому одна и та же дата может выглядеть как «01.03.25», «01.03.2026» или «1 марта 2026 г.», а в запросах сравниваться с учётом времени.
Ниже разобраны практические сценарии: ручной ввод даты, работа с текущей датой, формирование даты в коде, форматирование для вывода, использование дат в запросах и типичные ошибки с путями их устранения.
Как ввести дату в документе 1С вручную
Практически каждый документ в 1С (реализация, поступление, счёт-фактура, приказ) содержит поле «Дата». По умолчанию при создании документа туда подставляется текущая дата сеанса, но её можно изменить. Кликните в поле и введите дату цифрами в формате ДД.ММ.ГГГГ — например, 15.03.2026. Разделители можно не вводить: 1С распознает и «15032026», преобразовав ввод в правильную дату.
Второй способ — календарь. Нажмите кнопку выбора справа от поля (стрелка вниз), откроется календарь, где можно кликнуть нужный день, переключать месяцы стрелками и быстро перейти к нужному году через заголовок. Это удобно, когда дата неизвестна точно и её проще выбрать визуально.
Полезные сокращения при ручном вводе: если ввести только день и месяц (например, «1503»), год подставится текущий. Ввод одного числа трактуется как день текущего месяца. Это ускоряет ввод документов в пределах текущего периода.
- 1Откройте документ и найдите поле «Дата» в шапке
- 2Введите дату цифрами в формате ДД.ММ.ГГГГ или нажмите кнопку календаря
- 3Проверьте, что дата попадает в открытый период (нет запрета редактирования)
- 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 секунд. Для месяцев и лет простое сложение не подходит — используют функцию ДобавитьМесяц(Дата, КоличествоМесяцев), которая корректно обрабатывает разную длину месяцев.
ДатаОтчета = Дата(2026, 3, 15);
Сдвиг = ДобавитьМесяц(ДатаОтчета, 1); // 15.04.2026Как отформатировать дату для вывода пользователю
Значение типа «Дата» при выводе в сообщение или макет преобразуется в строку по умолчанию, но результат зависит от региональных настроек. Для управляемого форматирования применяют функцию Формат() с параметром форматной строки.
Основные варианты: Формат(Дата, "ДЛФ=D") выведет длинный формат вида «15 марта 2026 г.», Формат(Дата, "ДЛФ=DD") — «15.03.2026», Формат(Дата, "ДФ=dd.MM.yyyy") — тот же результат через явный шаблон. Параметр ДФ позволяет собрать любой шаблон: «yyyy-MM-dd» для обмена данными, «dd MMMM» для печатных форм.
| Форматная строка | Пример результата | Где применяется |
|---|---|---|
| ДЛФ=D | 15 марта 2026 г. | Печатные формы, письма |
| ДЛФ=DD | 15.03.2026 | Сообщения, журналы |
| ДФ=yyyy-MM-dd | 2026-03-15 | Обмен данными, API |
| ДФ="dd.MM.yyyy HH:mm:ss" | 15.03.2026 14:30:00 | Журналы регистрации, логи |
Работа с датами в запросах
В языке запросов 1С дата задаётся параметром или литералом вида ДАТАВРЕМЯ(2026, 3, 15, 0, 0, 0). Передавать дату параметром предпочтительнее: запрос остаётся универсальным и не требует конкатенации строк, которая чревата ошибками формата.
Частая задача — отбор документов за день. Правильный способ: условие Дата МЕЖДУ &НачалоДня И &КонецДня, где параметры вычисляются как НачалоДня(Дата) и КонецДня(Дата). В запросе доступны функции НАЧАЛОПЕРИОДА и КОНЕЦПЕРИОДА с указанием ДЕНЬ, МЕСЯЦ, КВАРТАЛ, ГОД — они позволяют округлять даты прямо в тексте запроса.
Запрет изменения даты и закрытые периоды
Если при вводе даты документа появляется сообщение о запрете редактирования, значит администратор установил дату запрета изменения данных. Это штатный механизм защиты закрытых периодов: после сдачи отчётности прошлые месяцы блокируют от случайных правок. Проверить настройку можно в разделе «Администрирование» — «Поддержка и обслуживание» — «Даты запрета изменения данных» (в типовых конфигурациях на БСП).
Решение зависит от роли. Рядовому пользователю нужно согласовать открытие периода с главным бухгалтером или администратором. Самостоятельно снимать запрет без понимания последствий нельзя: изменение документов закрытого периода может исказить сданную отчётность и привести к расхождениям с налоговыми данными.
Проверка результата и диагностика проблем
После ввода или формирования даты убедитесь, что результат соответствует ожиданиям. В документе — проверьте отображение в списке журнала и проведение. В коде — выведите значение через Сообщить(Формат(Дата, "ДЛФ=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.