В 1С:Предприятие дата с временем (например, 01.01.2026 14:30:00) часто мешает аналитике, отчетам или интеграциям, где требуется только календарная дата. Проблема усложняется тем, что система по умолчанию хранит дату и время вместе — даже если вам нужны только день, месяц и год. В этой статье разберем все способы «обрезать» время: от простых настроек формата до написания кода на встроенном языке.

Важно понимать: удаление времени не равно его физическому стиранию из базы. В большинстве случаев речь идет о преобразовании отображения или создании новой переменной с «чистой» датой. Исключение — программное обнуление времени до 00:00:00, но и здесь оригинальное значение может сохраниться в истории изменений. Начнем с самых доступных методов, не требующих знаний программирования.

1. Изменение формата отображения даты в отчетах и документах

Самый быстрый способ скрыть время — настроить формат ячейки в отчете или печатной форме. Этот метод не меняет сами данные, но убирает время из видимого представления. Подходит для 1С:Бухгалтерии 3.0, Управления торговлей 11 и других типовых конфигураций.

Как это сделать:

  • 📊 В отчете или печатной форме выделите ячейку с датой, кликните правой кнопкой и выберите Формат (или Свойства).
  • 🔧 В поле Формат замените стандартное значение ДФ="dd.MM.yyyy HH:mm:ss" на ДФ="d" (короткий формат) или ДФ="dd.MM.yyyy" (полный).
  • 💾 Сохраните изменения и обновите отчет — время исчезнет из отображения.
💡

Если формат не применяется, проверьте, не переопределен ли он в макете отчета. Иногда настройки формата дублируются в нескольких местах: в самой ячейке, в параметрах поля и в коде модуля.

Ограничение метода: время остается в исходных данных. Если вы экспортируете отчет в Excel или PDF, формат может сброситься. Для полного удаления времени потребуются другие подходы.

2. Использование функции «НачалоДня» в запросах и коде

Встроенная функция НачалоДня() — стандартный инструмент для обнуления времени до 00:00:00. Она возвращает дату с временем, сброшенным на начало дня, что эквивалентно «удалению» часов, минут и секунд для большинства задач.

Примеры применения:

  • 📝 В запросе 1С:
    ВЫБРАТЬ
    

    НачалоДня(Документ.Дата) КАК ДатаБезВремени

    ИЗ

    Документ.ЗаказКлиента КАК Документ

  • 💻 В коде модуля:
    ДатаБезВремени = НачалоДня(ТекущаяДата);

НачалоДня() работает во всех современных версиях платформы, включая 1С:Предприятие 8.3.20+. Главное преимущество — простота и совместимость. Однако помните: функция не удаляет время физически, а лишь возвращает новую дату с обнуленным временем. Исходное значение в базе остается неизменным.

💡

Функция НачалоДня() — самый универсальный способ для запросов и программной обработки. Она гарантированно поддерживается во всех типовых конфигурациях и не требует прав доступа к конфигуратору.

3. Программное обнуление времени через 1С-код

Если нужно не просто скрыть, а полностью заменить время на 00:00:00 в конкретном документе или справочнике, используйте прямой код. Этот метод требует прав на изменение данных и осторожности — неправильное применение может нарушить логику работы системы.

Пример кода для обнуления времени в документе:

Процедура ОбнулитьВремяВДокументе(ДокументОбъект)

ДатаДокумента = ДокументОбъект.Дата;

ДокументОбъект.Дата = НачалоДня(ДатаДокумента);

ДокументОбъект.Записать();

КонецПроцедуры

Важные нюансы:

  • ⚠️ Права доступа: код выполнится только если у пользователя есть права на изменение документа.
  • 🔄 История изменений: в некоторых конфигурациях (например, 1С:ERP) такое изменение может записаться в журнал аудита.
  • 📅 Зависимые объекты: если дата используется в регистрах или отчетах, обнуление времени может повлиять на расчеты (например, в Управлении производством).
📊 Как часто вам приходится удалять время из дат в 1С?
Регулярно (еженедельно)
Иногда (раз в месяц)
Рядом (раз в квартал)
Никогда

4. Настройка формата даты в пользовательских настройках 1С

В некоторых конфигурациях (например, 1С:Бухгалтерия 3.0 или 1С:Зарплата и Управление Персоналом) можно глобально изменить формат отображения даты для всех пользователей. Это не удалит время из базы, но скроет его в интерфейсе.

Инструкция:

  1. Откройте Администрирование → Настройки программы → Форматы данных.
  2. Найдите параметр Формат даты и установите значение без времени, например, dd.MM.yyyy.
  3. Сохраните настройки и перезапустите сеанс.

Ограничения:

  • 🔒 Настройка доступна только администраторам или пользователям с полными правами.
  • 📊 В некоторых отчетах (например, Оборотно-сальдовая ведомость) формат может игнорироваться.
  • 🖥️ Изменения затронут всех пользователей, что не всегда удобно.
Что делать, если настройки формата заблокированы?

Если пункт Форматы данных недоступен, значит ваша роль в 1С не имеет прав на администрирование. Обратитесь к ИТ-специалисту или попробуйте изменить формат локально через Сервис → Параметры → Форматы (доступно не во всех конфигурациях).

5. Удаление времени при обмене данными (XML, JSON, Excel)

При экспорте данных в внешние системы (например, в Excel или через REST API) время в датах часто становится проблемой. Решить это можно на этапе подготовки данных к выгрузке.

Способы очистки времени перед экспортом:

Формат выгрузки Метод удаления времени Пример кода
Excel (XDTO) Преобразование через НачалоДня() ДатаДляExcel = НачалоДня(ИсходнаяДата);
JSON Сериализация с кастомным форматом ЗаписьJSON.ДобавитьДата(НачалоДня(Дата), "dd.MM.yyyy");
XML (УФ) Параметр формата в схеме <xs:date format="dd.MM.yyyy"/>

Критическая деталь: при обмене с 1С:EDT или 1С:Fresh некоторые поля даты могут автоматически дополняться текущим временем. В этом случае используйте обработку ПередЗаписью на стороне получателя, чтобы принудительно обнулять время.

6. Автоматическое обнуление времени через обработки и регламентные задания

Если время в датах мешает регулярно (например, в документах Поступление товаров или Реализация), автоматизируйте его удаление с помощью регламентных заданий или обработок. Это актуально для 1С:Управление торговлей 11 и 1С:ERP, где даты часто используются в аналитике.

Пример создания регламентного задания:

  1. Откройте Администрирование → Регламентные задания.
  2. Создайте новое задание с типом Обработка объектов.
  3. В модуле обработки добавьте код:
    Для Каждого Док Из Документы.ПоступлениеТоваровУслуг Цикл
    

    Если Док.Дата <> НачалоДня(Док.Дата) Тогда

    Док.Дата = НачалоДня(Док.Дата);

    Док.Записать();

    КонецЕсли;

    КонецЦикла;

  4. Настройте расписание (например, ежедневное выполнение в 2:00).

🔹 Создать резервную копию базы

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

🔹 Ограничить обработку тестовым периодом (например, последней неделей)

🔹 Убедиться, что в конфигурации разрешено программное изменение документов-->

⚠️ Внимание: массовое изменение дат в документах может нарушить последовательность операций (например, в 1С:Бухгалтерии, где дата влияет на проводки). Перед запуском протестируйте обработку на копии базы.

7. Особенности работы с датами в разных конфигурациях 1С

Не все методы удаления времени универсальны. В некоторых конфигурациях есть ограничения или специфические настройки:

  • 📚 1С:Бухгалтерия 3.0: в документах Банковская выписка дата с временем используется для сортировки операций. Обнуление времени может нарушить порядок проводок.
  • 🛒 1С:Управление торговлей 11: в заказах клиентов время учитывается при расчете сроков доставки. Удаление времени может исказить аналитику логистики.
  • 🏭 1С:ERP: в производственных заданиях время используется для планирования. Его обнуление требует дополнительной синхронизации с графиком работ.

В 1С:Зарплата и Управление Персоналом даты в документах Начисление зарплаты часто привязаны к табелям учета времени. Здесь удаление часов и минут может привести к ошибкам в расчетах, если время используется для определения смены или переработок.

💡

Перед массовым изменением дат в специализированных конфигурациях (ERP, ЗУП, УТ) обязательно проверьте, не используется ли время в бизнес-логике. Например, в 1С:Розница время фиксирует момент продажи для X-отчетов.

Частые ошибки и как их избежать

При работе с датами в 1С пользователи часто сталкиваются с типичными проблемами. Вот самые распространенные из них и способы их решения:

  • Ошибка: После применения НачалоДня() дата в документе не меняется.
    Решение: Проверьте, не заблокирован ли документ для редактирования или не стоит ли галочка Оперативное проведение, которая запрещает изменять дату.
  • Ошибка: В отчете дата отображается без времени, но при экспорте в Excel время появляется снова.
    Решение: Используйте ФорматЯчейки в макете экспорта или обработайте данные перед выгрузкой.
  • Ошибка: При массовом обнулении времени в регламентном задании возникает ошибка «Нарушение последовательности документов».
    Решение: Отсортируйте документы по дате перед обработкой и изменяйте их в хронологическом порядке.

⚠️ Внимание: В конфигурациях с поддержкой версий (например, 1С:Документооборот) изменение даты документа может создать новую версию. Это увеличит объем базы и усложнит аудит изменений. Перед массовыми операциями отключите ведение версий или настройте правила их создания.

FAQ: Ответы на частые вопросы

Можно ли полностью удалить время из базы 1С, а не только скрыть его?

Нет, в стандартных конфигурациях время хранится вместе с датой на уровне СУБД (например, в Microsoft SQL Server или PostgreSQL). Вы можете только обнулить его до 00:00:00 или скрыть при отображении. Полное удаление потребует изменения структуры базы, что не поддерживается типовыми решениями.

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

В некоторых конфигурациях (например, 1С:Бухгалтерия) дата и время документа используются для определения периода проводок. Если вы обнулили время в документе, который относится к закрытому периоду, система может заблокировать проведение. Решение: проверьте настройки учетной политики или перенесите документ на актуальную дату.

Как убрать время в дате при загрузке данных из Excel в 1С?

При импорте из Excel используйте обработку ПередЗаписью в правиле обмена. Пример кода:

Процедура ПередЗаписью(Объект)

Если ТипЗнч(Объект.Дата) = Тип("Дата") Тогда

Объект.Дата = НачалоДня(Объект.Дата);

КонецЕсли;

КонецПроцедуры

Это гарантирует, что время будет обнулено до сохранения данных в базе.

Влияет ли удаление времени на производительность запросов?

Да, но не всегда критично. Если в запросе используется индекс по полю даты, обнуление времени (например, через НачалоДня()) может помешать использованию индекса, так как функция преобразует значение. Для ускорения запросов создайте вычисляемое поле с обнуленным временем и индексируйте его.

Можно ли настроить 1С так, чтобы время в датах не сохранялось вообще?

В стандартных конфигурациях — нет. Дата и время хранятся вместе на уровне платформы. Альтернатива: создайте дополнительное поле типа Дата (без времени) и используйте его для аналитики, оставляя оригинальное поле с временем для внутренних процессов.