Содержание · 7 разделов
«1С дата» — это примитивный тип данных в экосистеме «1С:Предприятие», который хранит момент времени с точностью до секунды. Он охватывает диапазон от 01.01.0001 до 31.12.9999 и используется во всех учётных документах, расчётах заработной платы, налоговой отчётности и кадровых событиях. Внутри платформы дата представлена как количество секунд от начала нашей эры, а отображаться может в одном из десятков настраиваемых форматов — от короткого «15.05.26» до полного «15 мая 2026 г., пятница, 17:30». Ключевые возможности: задание даты напрямую или через функции, вывод дня недели строкой, арифметика периодов и встроенные методы платформы. В этой статье вы получите исчерпывающее руководство по работе с данным типом.
Статья адресована главным бухгалтерам, которые ежедневно сталкиваются с датами в авансовых отчётах и декларациях, и ИТ-директорам, ищущим способы оптимизации расчётов. Вы узнаете, как настроить формат даты в 1С для конкретного документа, как программно задавать и сравнивать даты, а также как избежать типовых ошибок, способных привести к искажению отчётности.
Компания «Интеграция» за семь лет выполнила более 500 проектов по внедрению и доработке 1С. Если после прочтения вам понадобится помощь в настройке форматов или написании скриптов, наши специалисты готовы подключиться. Сейчас разберём теорию и практику по порядку.
Внутреннее устройство даты в 1С
Любое значение типа «Дата» в системе «1С:Предприятие» — это число секунд, прошедших с 1 января 0001 года, 00:00:00. Такая механика позволяет выполнять быстрые арифметические операции и хранить дату в компактной форме. Диапазон допустимых значений ограничен 31 декабря 9999 года, 23:59:59, однако на практике хватает для любых бизнес-задач.
Важно помнить, что тип «Дата» всегда включает и дату, и время. Даже если вы видите на экране только «15.05.2026», в базе хранится полная метка с часами, минутами и секундами (по умолчанию — 00:00:00). Это часто становится причиной неочевидных ошибок при сравнении двух дат, если в одной из них время не обнулено.
- Минимальное значение: 01.01.0001 00:00:00
- Максимальное значение: 31.12.9999 23:59:59
- Внутренняя единица — секунда
- Хранение в UTC, но отображается в локальном времени
- При неявном сравнении используется полное значение, включая время
Зная эту внутреннюю механику, проще понять, почему формат отображения не влияет на хранение и почему разность двух дат возвращает дробное число, если они различаются во времени.
Форматы отображения дат: шпаргалка по строке форматирования
Настройка внешнего вида даты в документах и отчётах 1С задаётся через свойство «Формат» или строку форматирования (ДФ). Платформа предлагает гибкий механизм с использованием специальных символов. Так, комбинация 'dd.MM.yyyy' выведет дату в привычном для России виде, а 'ДДДД' заменит её на полное название дня недели.
Вот основные символы, которые используются в строке форматирования:
| Символ | Значение | Пример для 15.05.2026 09:05:03 |
|---|---|---|
| dd | День двумя цифрами | 15 |
| MM | Месяц двумя цифрами | 05 |
| yyyy | Год четырьмя цифрами | 2026 |
| yy | Год двумя цифрами | 26 |
| HH | Часы (0–23) | 09 |
| mm | Минуты | 05 |
| ss | Секунды | 03 |
| ДФ='дд.ММ.гггг' | Русская нотация | 15.05.2026 |
| ДДДД | Полное название дня недели | пятница |
| д | Сокращённое название дня (пн) | пт |
| ММММ | Полное название месяца | мая |
Чтобы применить формат, выполните несколько шагов:
- Откройте конфигурацию и нужный документ.
- Выделите поле с типом «Дата».
- В палитре свойств найдите параметр «Формат».
- Введите строку форматирования, например, 'dd.MM.yyyy HH:mm:ss'.
- Сохраните и проверьте отображение в режиме 1С:Предприятие.
Как настроить дату с часами и минутами
Если в документе критично видеть время, используйте символы HH, mm и ss. Строка 'dd.MM.yyyy HH:mm' выведет дату в формате «15.05.2026 09:05». Учтите, что секунды можно опустить, но для точного лога лучше включить их. В формах также доступен выбор из предустановленных форматов через выпадающий список.
На практике мы часто видим путаницу между регистром символов. Например, «MM» — это месяц, а «mm» — минуты. Неправильный регистр ломает всю строку, и дата либо не отображается, либо выводит часы вместо месяца. Всегда сверяйтесь с документацией перед правкой.
Программное задание даты и простейшая арифметика
Встроенный язык «1С:Предприятие» даёт широкие возможности для работы с датами. Значение можно задать явно строкой в формате 'ГГГГММДД' или через функцию Дата(Год, Месяц, День). Например, ДатаДокумента = '20260515' или ДатаРасчёта = Дата(2026, 5, 15). Для получения текущего момента служит функция ТекущаяДата().
Арифметика дат интуитивна: разность двух значений возвращает количество дней в виде числа с дробной частью. Чтобы получить интервал в днях без учёта времени, часто используют Цел(КонечнаяДата - НачальнаяДата) или специализированные функции.
- Основные функции:
• ТекущаяДата() — текущие дата и время компьютера. • Дата(Г, М, Д, Ч=0, М=0, С=0) — создание значения. • ДобавитьМесяц(Дата, ЧислоМесяцев) — сдвиг без учёта дней. • КонецМесяца(Дата) — последний день месяца. • НачалоГода(Дата) — 1 января указанного года.
- Пример: ДатаОплаты = Дата(2026, 5, 15); Просрочка = ТекущаяДата() - ДатаОплаты.
Если требуется нестандартная логика — например, расчёт срока с учётом производственного календаря — удобно воспользоваться помощью программиста 1С на час. Быстрая доработка избавит от ошибок ручного подсчёта.
Как получить день недели строкой
Для многих расчётов (расценки за выходные, отчёты СФР) требуется выводить не число, а название дня недели. Самый простой путь — использовать ту же строку форматирования: если для реквизита «Дата» в отчёте установить ДФ = 'ДДДД', то на печати появится «пятница».
Программный способ также доступен. Функция ДеньНедели(Дата) возвращает число от 1 (понедельник) до 7 (воскресенье). Остаётся сопоставить его со списком названий:
Выбор(ДеньНедели(Дата), "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс")
Для полного названия можно использовать массив или условную конструкцию. Платформа не содержит встроенной функции «ДеньНеделиПолноеИмя», поэтому в типовых конфигурациях часто встречается подобная логика в общих модулях.
В таблице ниже — три способа получения дня недели и их особенности:
| Способ | Пример | Когда применять |
|---|---|---|
| Формат 'ДДДД' | Формат(Дата, "ДФ='ДДДД'") | В отчётах и на формах |
| Выбор + ДеньНедели | как выше | В программном коде, если нужна краткая форма |
| ПолучитьПоДате(РегистрСведений.ДниНедели) | через справочник | При многоязычных решениях |
Работа с датами в запросах 1С
Язык запросов оперирует датами через литерал ДАТАВРЕМЯ. Конструкция ДАТАВРЕМЯ(2026, 5, 15, 0, 0, 0) создаёт значение, которое можно использовать в условиях и вычислениях. Доступны функции НАЧАЛОПЕРИОДА, КОНЕЦПЕРИОДА, ДОБАВИТЬКДАТЕ и РАЗНОСТЬДАТ.
Например, чтобы отфильтровать продажи за май 2026 года, пишут:
ГДЕ Документ.Дата МЕЖДУ НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(2026, 5, 1), МЕСЯЦ) И КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(2026, 5, 31), МЕСЯЦ)
Если в таблице есть незаполненные даты (NULL), запрос не вернёт такие строки в условии на равенство с конкретной датой. Для корректной обработки используйте ЕСТЬNULL(Поле, МинимальнаяДата) или предварительно проверяйте на NULL оператором ЕСТЬ NULL.
Помните, что в запросах сравнение дат идёт по полному значению с точностью до секунды. Чтобы игнорировать время, приводите оба операнда к началу дня: НАЧАЛОПЕРИОДА(ДатаДокумента, ДЕНЬ).
Типичные ошибки и способы их предотвратить
Ошибки при работе с датами в 1С почти всегда связаны с неучтённым временем, пустыми значениями или региональными настройками. Ниже — самые частые промахи и способы их избежать.
- Сравнение дат без обнуления времени: если одна дата пришла из документа с меткой «09:00», а вторая задана как '20260515', разность будет нецелой, и условие «=» может не выполниться. Всегда используйте НачалоДня() или Цел(…) перед сравнением.
- Пустая дата в вычислениях: если поле осталось незаполненным, 1С подставляет 01.01.0001 00:00:00. При разности с текущей датой получается гигантский интервал. Решается проверкой ЗначениеЗаполнено() или Неопределена.
- Американский vs российский формат в выгрузках: при экспорте в Excel или XML дата может уйти как mm/dd/yyyy. Укажите явный формат в настройках экспорта или обработайте строкой на принимающей стороне.
- Использование строковых операций вместо функций дат: попытка выделить месяц через Строка(Дата)[5, 2] ненадёжна. Применяйте Год(), Месяц(), День() или Формат().
Чего избегать
Пустые даты в вычислениях — главный источник аварий. Если дата не заполнена, 1С хранит «01.01.0001», и разность с текущей датой даст более двух миллионов дней. Перед расчётом всегда проверяйте ЗначениеЗаполнено(Реквизит).
Особые сценарии: часовые пояса и нестандартные периоды
В распределённых базах и при обмене с филиалами в разных часовых поясах дата может смещаться. Платформа хранит момент в UTC, но при отображении и синхронизации важно настроить региональные параметры. В типовых конфигурациях часто используется реквизит с часовым поясом, чтобы корректировать отчёты.
Если бизнес-логика требует учёта производственного календаря (перенос выходных, сокращённые дни), стандартных средств недостаточно. В таких случаях доработка 1С позволяет встроить готовый механизм расчёта рабочих дней. Специалисты «Интеграции» помогут адаптировать конфигурацию под ваши правила и обеспечат корректную подготовку кадровой и бухгалтерской отчётности.
Материал носит справочный характер и не является налоговой или юридической консультацией; для применения к Вашей ситуации согласуйте действия с бухгалтером или юристом.









ОбсуждениеВопросы читателей и ответы эксперта · 3 веток