Почему в ЗУП документы не находятся по дате и где скрывается время документа?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом IT и автоматизация бизнеса
← На главную

При работе с документами в системе 1С:ЗУП пользователи часто сталкиваются с ситуацией, когда попытка отбора документов за конкретную дату не дает ожидаемых результатов. Например, при использовании стандартной обработки Групповое изменение реквизитов документы, созданные «этим же днем», игнорируются фильтром. Давайте разберемся, почему так происходит и как правильно работать с датами в 1С.

Природа даты в платформе 1С

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

В базе данных значение такой даты выглядит как 30.04.2023 00:00:00. Однако, если документ был создан автоматически, путем копирования или через программный код, в поле времени могут быть записаны данные, отличные от полуночи (например, 30.04.2023 14:35:12).

Почему поиск по условию «Равно» работает некорректно?

Когда вы устанавливаете отбор в Групповом изменении реквизитов или в Консоли запросов по условию Дата Равно 30.04.2023, система интерпретирует ваше условие как поиск значения 30.04.2023 00:00:00. Если же у документа в базе время заполнено (отличается от нуля), условие равенства не выполняется, так как 14:35:12 не равно 00:00:00.

Именно поэтому возникает ощущение, что «документы пропали» или «фильтр не работает». На самом деле они просто не соответствуют строгому условию равенства.

Как правильно искать документы с учетом времени

Чтобы найти все документы за конкретный день, вне зависимости от того, какое время в них указано, необходимо использовать диапазон дат. Вместо оператора Равно применяйте конструкцию «Больше или равно начала дня» и «Меньше или равно конца дня».

Рассмотрим, как это выглядит в коде 1С, если вы пишете свой алгоритм или запрос:


// Пример правильного формирования отбора за день
НачалоДня = НачалоДня(ДатаДокумента);
КонецДня = КонецДня(ДатаДокумента);

Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |    НачислениеЗарплаты.Ссылка
    |ИЗ
    |    Документ.НачислениеЗарплатыИВзносов КАК НачислениеЗарплаты
    |ГДЕ
    |    НачислениеЗарплаты.Дата МЕЖДУ &НачалоДня И &КонецДня";

Запрос.УстановитьПараметр("НачалоДня", НачалоДня);
Запрос.УстановитьПараметр("КонецДня", КонецДня);
Результат = Запрос.Выполнить();

Почему время у документов вообще меняется?

Разберем типичные сценарии, при которых время документа становится отличным от 00:00:00:

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

Если вам нужно выяснить, какое именно время записано в конкретном документе, не обязательно обращаться к программисту. Вы можете воспользоваться встроенными средствами:

  1. Откройте нужный документ.
  2. В верхней панели выберите меню Еще.
  3. Нажмите Показать значения полей (может называться Техническая информация).
  4. В появившемся окне найдите свойство Дата — там будет отображено полное значение с часами, минутами и секундами.

Выводы и рекомендации

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

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

← На главную