Почему при записи новых документов в 1С автоматически устанавливается разное время?

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

При создании и первой записи документов в типовых решениях «1С:Предприятие 8» (например, в «1С:Бухгалтерии 3.0») пользователи и разработчики часто замечают особенность: если создать документ на произвольную дату с нулевым временем 00:00:00, то после записи система автоматически подставляет определенное время. Например, для документа «Реализация (акты, накладные, УПД)» выставляется 14:00:00, а для документа «Перемещение товаров» — 11:00:00. Разберем подробно, почему это происходит, какая логика заложена разработчиками платформы и конфигурации, а также как управлять этим поведением.

Логика работы механизма распределения времени

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

Если все документы одного дня будут записаны на начало дня (00:00:00) или на произвольное системное время, возникают типовые коллизии учета:

  1. Отрицательные остатки на складах: списание или перемещение товара может зарегистрироваться на доли секунды раньше, чем документ его поступления от поставщика.
  2. Искажение взаиморасчетов и фиктивные авансы: если платежное поручение запишется раньше накладной реализации, программа зарегистрирует аванс от покупателя (счет 62.02) и сформирует проводки по НДС с авансов, даже если отгрузка и оплата прошли в один день в рамках единой сделки.

Чтобы избежать подобных коллизий, в типовых конфигурациях реализована жесткая суточная сетка времени по видам документов:

  1. 07:00:00 — Поступление товаров и услуг (акты, накладные, УПД);
  2. 11:00:00 — Перемещение товаров между складами;
  3. 12:00:00 — Требование-накладная (списание материалов в производство);
  4. 13:00:00 — Отчет производства за смену, выпуск готовой продукции;
  5. 14:00:00 — Реализация товаров и услуг;
  6. 17:00:00 — Поступление на расчетный счет / Приходный кассовый ордер (ПКО);
  7. 18:00:00 — Списание с расчетного счета / Расходный кассовый ордер (РКО).

Программная реализация в конфигурации

Посмотрим на программный код, который отвечает за установку времени. В модуле менеджера каждого типового документа присутствует специальная экспортная функция ВремяДокументаПоУмолчанию(). Именно она возвращает структуру с часами и минутами, которые подставляются в реквизит Дата при записи нового объекта.

Рассмотрим пример функции из модуля менеджера документа «Реализация товаров и услуг»:


Функция ВремяДокументаПоУмолчанию() Экспорт
    Возврат Новый Структура("Часы, Минуты", 14, 0);
КонецФункции

Для документа «Перемещение товаров» в его модуле менеджера заданы другие параметры:


Функция ВремяДокументаПоУмолчанию() Экспорт
    Возврат Новый Структура("Часы, Минуты", 11, 0);
КонецФункции

При записи объекта подписка на события проверяет, является ли документ новым и включена ли соответствующая опция в системе. Если время не было явно скорректировано пользователем с точностью до секунд, вызывается менеджер соответствующего документа и дата дополняется часами и минутами из этой функции.

Пользовательские настройки: как отключить автоустановку времени

Если для бизнес-процессов компании требуется сохранять реальное системное время создания документов либо вручную контролировать таймстампы, автоматическое распределение можно отключить в пользовательском режиме.

Разберем порядок действий в интерфейсе «1С:Бухгалтерии 3.0»:

  1. Перейдем в раздел Администрирование.
  2. Выберем пункт Проведение документов.
  3. Найдем флаг Время документов устанавливать автоматически.
  4. Снимем этот флаг для перевода системы в ручной режим управления временем.

Проанализируем, как поведет себя программа при отключенном флаге:

  1. Для документов, создаваемых на текущую календарную дату, будет подставляться текущее системное время компьютера (например, 10:24:35).
  2. Для документов, вводимых задним числом или будущей датой (когда время не указано явно и равно полуночи), платформа установит нейтральное фиксированное значение середины дня — 12:00:00.

Способы кастомизации и переопределения времени

Если стандартная сетка распределения часов не подходит (например, отгрузки регулярно происходят раньше 14:00, а поступления проводятся вечером), разработчик может изменить логику следующими способами:

  1. Переопределение через расширение конфигурации: чтобы не снимать конфигурацию с поддержки, создадим расширение и переопределим функцию ВремяДокументаПоУмолчанию() нужного документа с помощью аннотации &Вместо:
    
    &Вместо("ВремяДокументаПоУмолчанию")
    Функция Расш_ВремяДокументаПоУмолчанию() Экспорт
        // Устанавливаем собственное время реализации на 09:30 утра
        Возврат Новый Структура("Часы, Минуты", 9, 30);
    КонецФункции
    
  2. Групповая корректировка существующих данных: если документы уже проведены с нежелательным временем, исправить их можно с помощью стандартной обработки «Групповое изменение реквизитов» либо написав внешнюю обработку, которая программно сдвигает поле Дата на нужное количество часов и минут перед повторным проведением по регистрам.

Нюансы при интеграциях и обмене данными

Обратим внимание на работу интеграционных механизмов (REST API, Web-сервисы, обмен с WMS-системами, сайтами и кассами). При программном создании документов через код внешняя система может передавать точное время совершения хозяйственной операции.

Если запись объекта выполняется стандартным методом ДокументОбъект.Записать(), типовые подписки БСП могут перезаписать переданное точное время дефолтными значениями (например, 14:00:00). Чтобы этого избежать, при разработке обменов необходимо либо передавать признак загрузки данных (ДокументОбъект.ОбменДанными.Загрузка = Истина), либо заполнять соответствующие дополнительные свойства объекта, информирующие подсистему БСП о том, что время корректировать не требуется.

← На главную