Работа с датами в 1С:Предприятие — одна из самых частых операций, с которой сталкиваются и бухгалтеры, и кладовщики, и разработчики. Казалось бы, что может быть проще, чем указать текущую дату в документе? Но на практике пользователи сталкиваются с ошибками формата, проблемами при автоматическом заполнении или необходимостью вводить даты в нестандартных форматах (например, для отчетности по иностранным стандартам). В этой статье мы разберем все возможные способы работы с датами — от базового ручного ввода до программного управления через встроенный язык 1С.
Особое внимание уделим типичным ошибкам, которые приводят к сбоям в отчетах или неправильному расчету налогов. Например, многие не знают, что при экспорте данных в Excel даты могут автоматически преобразовываться в другой формат, если не настроить параметры выгрузки. Или что в некоторых конфигурациях (например, 1С:ERP) дата документа влияет на доступность определенных функций — например, блокировку редактирования после проведения.
Статья будет полезна как начинающим пользователям, так и опытным специалистам. Первые узнают, как быстро вставить сегодняшнюю дату без ошибок, а вторые найдут примеры кода для автоматизации работы с датами в конфигураторе.
1. Ручной ввод даты: базовые правила
Самый простой способ указать дату в 1С — ввести её вручную в соответствующем поле документа или справочника. Однако даже здесь есть нюансы, которые влияют на корректность работы системы.
Формат даты по умолчанию зависит от региональных настроек вашей операционной системы и конфигурации 1С. В России чаще всего используется формат ДД.ММ.ГГГГ (например, 15.05.2026). Но в некоторых случаях (например, при работе с иностранными контрагентами) может потребоваться формат ММ/ДД/ГГГГ или ГГГГ-ММ-ДД (ISO). Чтобы избежать путаницы, всегда обращайте внимание на подсказки в интерфейсе:
- 📅 ДД.ММ.ГГГГ — стандартный российский формат (день, месяц, год). Используется по умолчанию в большинстве конфигураций.
- 📅 ММ/ДД/ГГГГ — американский формат. Может встречаться в конфигурациях для международных компаний.
- 📅 ГГГГ-ММ-ДД — формат ISO, часто используется в обмене данными с другими системами.
Если вы ввели дату в неверном формате, 1С может:
- ⚠️ Автоматически исправить её (например,
12.13.2026превратится в13.12.2026, если 12-й месяц не существует). - ⚠️ Выдать ошибку и заблокировать сохранение документа.
- ⚠️ Сохранить дату "как есть", ноLater вызвать сбои в отчетах (например, если
31.02.2026прошло валидацию, но такого дня не существует).
⚠️ Внимание: В конфигурациях 1С:Зарплата и Управление Персоналом некорректная дата в документах по сотрудникам (например, в кадровых перемещениях) может привести к ошибкам в расчете стажа и начислениях. Всегда проверяйте даты в таких документах дважды.
2. Автоматическое заполнение текущей даты
В большинстве документов 1С текущая дата проставляется автоматически при создании нового элемента. Однако иногда требуется обновить её или вставить в поле, где автозаполнение не работает. Вот как это сделать:
Способ 1: Горячие клавиши
Чтобы быстро вставить сегодняшнюю дату в любое поле, используйте комбинацию:
Ctrl + ;
Эта комбинация работает в большинстве конфигураций 1С (включая 1С:Бухгалтерия 8, 1С:Управление Торговлей, 1С:ERP). Если она не срабатывает, проверьте настройки интерфейса или используйте альтернативный метод.
Способ 2: Контекстное меню
Кликните правой кнопкой мыши по полю даты и выберите пункт Вставить текущую дату (название может отличаться в зависимости от конфигурации). В некоторых версиях этот пункт называется Сегодня или Текущая дата.
| Конфигурация 1С | Горячие клавиши для даты | Пункт контекстного меню |
|---|---|---|
| 1С:Бухгалтерия 8 | Ctrl + ; |
Вставить текущую дату |
| 1С:Управление Торговлей 11 | Ctrl + ; или Shift + T |
Сегодня |
| 1С:ERP Управление предприятием 2 | Ctrl + ; |
Текущая дата |
| 1С:Зарплата и Управление Персоналом | Ctrl + ; или F5 |
Вставить дату |
Если автоматическое заполнение даты не работает, проверьте:
- 🔧 Настройки прав пользователя (возможно, у вас нет прав на редактирование дат в этом документе).
- 🔧 Настройки конфигурации (в некоторых случаях автозаполнение отключают для определенных типов документов).
- 🔧 Версию платформы 1С (в старых версиях некоторые функции могут отсутствовать).
Если горячие клавиши не работают, попробуйте сначала кликнуть по полю даты левой кнопкой мыши, а затем нажать комбинацию. Иногда поле должно быть в фокусе для срабатывания сочетания.
3. Работа с датами в табличных частях документов
Табличные части документов (например, списки товаров в накладной или график платежей в договоре) часто требуют заполнения дат для каждой строки. Здесь ручной ввод может занять много времени, поэтому полезно знать способы автоматизации.
Способ 1: Копирование даты на несколько строк
Если вам нужно проставить одинаковую дату для нескольких строк:
- Введите дату в первую строку.
- Выделите ячейку с датой и нажмите
Ctrl + C. - Выделите ячейки в других строках, куда нужно скопировать дату, и нажмите
Ctrl + V.
Способ 2: Автозаполнение с шагом
Если даты должны идти с определенным интервалом (например, ежемесячные платежи по кредиту), используйте функцию автозаполнения:
- Введите начальную дату в первую строку.
- Вторую строку заполните датой с нужным шагом (например,
01.06.2026, если первая дата01.05.2026и шаг — 1 месяц). - Выделите обе ячейки и "протяните" маркер автозаполнения (маленький квадратик в правом нижнем углу выделения) вниз на нужное количество строк.
Способ 3: Программное заполнение (для разработчиков)
Если табличная часть содержит сотни строк, ручное заполнение неэффективно. В этом случае можно написать небольшой скрипт на встроенном языке 1С. Пример кода для заполнения дат с шагом в 1 день:
Для Каждого Строка Из Документ.ТабличнаяЧасть Цикл
Строка.Дата = НачальнаяДата + (Строка.НомерСтроки - 1);
КонецЦикла;
Где НачальнаяДата — переменная с исходной датой, а Дата — имя колонки в табличной части.
⚠️ Внимание: В конфигурациях с включенным контролем отрицательных остатков (например, 1С:Управление Торговлей) некорректные даты в табличных частях могут блокировать проведение документа. Всегда проверяйте логическую последовательность дат (например, дата отгрузки не может быть раньше даты заказа).
Выбраны корректные даты для всех строк|Дата первой строки логически оправдана|Шаг между датами соответствует бизнес-логике|Нет "прыгающих" дат (например, 01.01.2026 → 15.06.2026 → 02.01.2026)-->
4. Программная работа с датами (для разработчиков)
Разработчики 1С часто сталкиваются с задачами, где требуется не просто вставить дату, а произвести с ней какие-либо действия: прибавить дни, вычесть месяцы, сравнить с другой датой или преобразовать в строку особого формата. Для этого во встроенном языке 1С есть специальные функции.
Основные функции для работы с датами:
- 📅
ТекущаяДата()— возвращает текущую дату и время. - 📅
НачалоДня(Дата)— обнуляет время, оставляя только дату. - 📅
КонецДня(Дата)— устанавливает время на 23:59:59. - 📅
ДобавитьМесяц(Дата, Количество)— добавляет указанное количество месяцев. - 📅
РазницаДат(Дата1, Дата2, ЕдиницаИзмерения)— вычисляет разницу между датами в днях, месяцах или годах.
Пример 1: Добавление дней к дате
Допустим, вам нужно рассчитать дату оплаты через 10 дней после даты заказа:
ДатаОплаты = ДобавитьДень(Документ.Дата, 10);
Пример 2: Проверка просроченных документов
Чтобы найти все неоплаченные счета с просрочкой более 30 дней:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СчетаКОплате.Ссылка КАК Ссылка
|ИЗ
| Документ.СчетКОплате КАК СчетаКОплате
|ГДЕ
| СчетаКОплате.ДатаОплаты < ТекущаяДата() - 30
| И СчетаКОплате.СтатусОплаты = Значение(Перечисление.СтатусыОплаты.НеОплачен)";
Пример 3: Форматирование даты для отчета
Если нужно вывести дату в нестандартном формате (например, "15 мая 2026 года"):
ФорматированнаяДата = Формат(ТекущаяДата(), "ДФ='dd MMMM yyyy года'");
| Функция | Пример использования | Результат |
|---|---|---|
Год(Дата) |
Год(ТекущаяДата()) |
2026 |
Месяц(Дата) |
Месяц(ТекущаяДата()) |
5 (для мая) |
ДеньНедели(Дата) |
ДеньНедели(ТекущаяДата()) |
3 (среда, если 1 — понедельник) |
НачалоКвартала(Дата) |
НачалоКвартала('15.05.2026') |
01.04.2026 |
⚠️ Внимание: При работе с датами в 1С:Предприятие 8.3 и выше учитывайте, что функцииДобавитьМесяц()иДобавитьГод()корректно обрабатывают переходы через границы месяцев и високосные годы. Однако в старых версиях платформы (8.2 и ниже) могут возникать ошибки при добавлении месяцев к датам вроде31.01.2026 + 1 месяц(результат будет28.02.2026, а не31.03.2026).
Как 1С обрабатывает несуществующие даты?
При добавлении месяцев к датам, которые не существуют в целевом месяце (например, 31 января + 1 месяц), 1С автоматически корректирует дату до последнего дня месяца. Например:
- 31.01.2026 + 1 месяц = 29.02.2026 (високосный год)
- 31.03.2026 + 1 месяц = 30.04.2026 (в апреле 30 дней)
- 31.12.2026 + 1 месяц = 31.01.2026
Это правило работает во всех современных версиях платформы 1С (8.3 и выше).
5. Типичные ошибки при работе с датами и как их избежать
Ошибки с датами — одна из самых распространенных причин сбоев в 1С. Они могут приводить к неправильным расчетам, ошибкам при проведении документов или даже потере данных. Разберем самые частые проблемы и способы их решения.
Ошибка 1: Несоответствие форматов при обмене данными
При импорте/экспорте данных (например, через Com-соединение или XML) даты могут искажаться, если форматы в источниках и приемниках не совпадают. Например, дата 05.06.2026 (5 июня) в американском формате будет интерпретирована как 6 мая.
Решение: Всегда проверяйте настройки обмена и при необходимости используйте функции преобразования формата, например:
ДатаДляЭкспорта = Формат(Документ.Дата, "ДФ=yyyy-MM-dd");
Ошибка 2: Пустые даты в обязательных полях
Некоторые документы (например, Поступление товаров или Реализация) требуют обязательного заполнения даты. Если поле остается пустым, документ не проведется.
Решение: Используйте конструкцию для проверки заполненности:
Если Документ.Дата = '00010101' Тогда
Сообщить("Дата не заполнена!");
Возврат;
КонецЕсли;
Ошибка 3: Даты вне допустимого диапазона
В 1С даты могут храниться в диапазоне с 01.01.0001 по 31.12.9999. Однако в некоторых конфигурациях (например, 1С:Бухгалтерия) накладываются дополнительные ограничения. Например, дата документа не может быть раньше даты начала ведения учета в информационной базе.
Решение: Проверяйте диапазон допустимых дат через Максимум(Дата1, Дата2) и Минимум(Дата1, Дата2).
Ошибка 4: Разница во временных зонах
Если вы работаете с распределенной информационной базой (например, филиалы в разных часовых поясах), даты в документах могут сдвигаться на несколько часов. Это актуально для конфигураций с учетом времени (например, 1С:ERP с модулем Управление производством).
Решение: Настройте параметры временных зон в конфигураторе или используйте функцию ЛокальнаяДата() для приведения к единому стандарту.
- ⚠️ Последствия ошибок с датами:
- 📉 Неправильный расчет налогов (например, НДС за неверный период).
- 📉 Блокировка проведения документов.
- 📉 Ошибки в отчетах (например, оборотно-сальдовая ведомость покажет неверные остатки).
- 📉 Проблемы при обмене данными с банками или госорганами (например, неверная дата в платежном поручении приведет к отказу в исполнении).
Всегда проверяйте даты в документах, которые влияют на финансовые расчеты или налоговую отчетность. Ошибка даже в один день может привести к штрафам от ФНС.
6. Особенности работы с датами в отчетах
При формировании отчетов (например, Оборотно-сальдовая ведомость, Анализ субконто) даты играют ключевую роль. Они определяют период, за который будут выбраны данные, и влияют на итоговые показатели. Рассмотрим основные нюансы.
Настройка периода в отчетах
Большинство отчетов в 1С имеют поля Начало периода и Конец периода. По умолчанию там часто проставляется текущий месяц, но вы можете изменить его:
- Откройте отчет (например, через меню
Отчеты → Оборотно-сальдовая ведомость). - В верхней части окна найдите поля с датами.
- Введите нужные даты вручную или выберите из календаря (кнопка с тремя точками
...рядом с полем). - Нажмите
Сформировать.
Использование относительных дат
В некоторых отчетах можно указать период не конкретными датами, а относительными значениями, например:
- 📅
Начало недели/Конец недели - 📅
Начало месяца/Конец месяца - 📅
Начало квартала/Конец квартала - 📅
Начало года/Конец года
Это удобно для регулярных отчетов, где не нужно каждый раз вводить даты вручную.
Экспорт отчетов с датами в Excel
При экспорте отчета в Excel даты могут преобразовываться в числовой формат (например, 45341 вместо 01.05.2026). Чтобы этого избежать:
- Перед экспортом откройте настройки выгрузки (обычно кнопка
Еще → Параметры экспорта). - Укажите, что даты должны сохраняться в текстовом формате.
- Или после экспорта в Excel выделите колонку с датами и примените формат
Дата.
⚠️ Внимание: В отчетах по НДС (например, Книга покупок/продаж) даты должны строго соответствовать налоговому периоду. Если вы укажете неверный интервал, отчет может не сойтись с декларацией, что приведет к проблемам при камеральной проверке.
Если вам часто нужны отчеты за стандартные периоды (месяц, квартал, год), сохраните шаблоны настроек. Для этого сформируйте отчет с нужными датами, затем нажмите Еще → Сохранить настройки и укажите имя шаблона.
7. Даты в документообороте: юридические нюансы
В некоторых документах дата имеет не только техническое, но и юридическое значение. Например:
- 📄 В платежных поручениях дата определяет срок исполнения банком.
- 📄 В договорах дата подписания влияет на начало действия обязательств.
- 📄 В счетах-фактурах дата определяет налоговый период для НДС.
- 📄 В кадровых документах (приказы о приеме/увольнении) дата влияет на расчет стажа и выплат.
Особенности для бухгалтеров:
- 💰 Дата в платежном поручении не может быть раньше даты его создания в 1С (иначе банк отклонит платеж).
- 💰 Дата счета-фактуры должна попадать в тот же налоговый период, что и дата отгрузки (для НДС).
- 💰 В авансовых отчетах дата должна быть не позже даты, указанной в приказе о командировке.
Особенности для кадровиков:
- 👔 Дата приказа о приеме на работу не может быть позже даты фактического выхода сотрудника.
- 👔 Дата увольнения должна совпадать с последним рабочим днем (иначе могут быть проблемы с трудовой инспекцией).
- 👔 В больничных листах даты должны строго соответствовать периоду нетрудоспособности (расхождения даже в один день приводят к отказам в выплатах от ФСС).
Для документов с юридической силой рекомендуется:
- Всегда проверять даты на соответствие первичным документам (договорам, актам, приказам).
- Использовать функцию
КонтрольДат()в 1С для проверки логической последовательности (если она доступна в вашей конфигурации). - Ведите журнал изменений дат в критически важных документах (например, через механизм версионности в 1С).
⚠️ Внимание: В конфигурациях 1С:Зарплата и Управление Персоналом и 1С:ERP даты в кадровых документах блокируются для редактирования после проведения. Чтобы изменить дату, нужно сначала сделать документ непроведенным.
8. Продвинутые приемы: работа с датами через запросы
Для сложных отчетов или аналитики часто требуется выбирать данные по датам с использованием языка запросов 1С. Это позволяет гибко фильтровать информацию, группировать её по периодам и строить динамические отчеты.
Пример 1: Выборка документов за текущий месяц
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Документ.Ссылка КАК Ссылка,
| Документ.Дата КАК Дата,
| Документ.Сумма КАК Сумма
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Документ
|ГДЕ
| Документ.Дата МЕЖДУ НачалоМесяца(ТекущаяДата()) И КонецМесяца(ТекущаяДата())";
Пример 2: Группировка по годам
Если нужно посчитать суммы продаж по годам:
Запрос.Текст =
"ВЫБРАТЬ
| ГОД(Документ.Дата) КАК Год,
| СУММА(Документ.Сумма) КАК Итого
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Документ
|СГРУППИРОВАТЬ ПО
| ГОД(Документ.Дата)";
Пример 3: Сравнение с датой относительно текущей
Найти документы, которые были созданы ровно год назад:
Запрос.Текст =
"ВЫБРАТЬ
| Документ.Ссылка КАК Ссылка
|ИЗ
| Документ.ПоступлениеТоваровУслуг КАК Документ
|ГДЕ
| Документ.Дата = НачалоДня(ТекущаяДата() - 365)";
Пример 4: Работа с временными интервалами
Выбрать документы, созданные в рабочие дни (понедельник-пятница):
Запрос.Текст =
"ВЫБРАТЬ
| Документ.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаказПокупателя КАК Документ
|ГДЕ
| ДеньНедели(Документ.Дата) МЕЖДУ 2 И 6"; // 2 — вторник, 6 — суббота (1 — понедельник)
Пример 5: Использование параметров в запросах
Чтобы сделать запрос гибким и передавать даты как параметры:
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДатаНачала", НачалоМесяца(ТекущаяДата()));
Запрос.УстановитьПараметр("ДатаОкончания", КонецМесяца(ТекущаяДата()));
Запрос.Текст =
"ВЫБРАТЬ
| Документ.Ссылка КАК Ссылка
|ИЗ
| Документ.Оплаты КАК Документ
|ГДЕ
| Документ.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания";
⚠️ Внимание: В