В процессе работы с конфигурациями на платформе 1С:Предприятие 8.2/8.3 с обычными формами (такими как Управление торговлей 10.3, Управление производственным предприятием 1.3 или Комплексная автоматизация 1.1), пользователи и разработчики часто сталкиваются с интересной особенностью. Платежный документ (например, ПлатежноеПоручениеВходящее) может иметь время 00:00:00, но при просмотре его движений в регистре накопления ВзаиморасчетыСКонтрагентами мы видим время 23:59:59.
Давайте подробно разберем, почему система ведет себя именно так, для чего это нужно и как при необходимости изменить это поведение.
Проанализируем ситуацию. В типовых решениях прошлых поколений реализован специальный механизм управления временем проведения денежных документов. Суть его заключается в том, что при записи движений в регистры накопления система игнорирует реальное время документа, указанное в шапке, и принудительно устанавливает период записи на последнюю секунду текущих суток.
Многие начинающие специалисты ошибочно полагают, что это программная ошибка или сбой в базе данных. Однако это штатный функционал, заложенный разработчиками фирмы «1С». Основная цель этого механизма — минимизация возникновения «пустых» или «технических» авансов.
Рассмотрим пример из практики. Представьте, что в течение одного рабочего дня происходят два события:
РеализацияТоваровУслуг.ПлатежноеПоручениеВходящее с временем 00:00:00 или 09:00:00.Если бы система проводила оплату по фактическому времени (09:00), то на момент проведения платежа долга за контрагентом еще не числилось бы (так как реализация будет создана только в 12:00). В итоге программа зафиксирует аванс. Затем, в 12:00, реализация закроет этот аванс. В рамках дня сальдо будет нулевым, но в отчетах с детализацией по времени или при расчете скидок/бонусов за отсутствие авансов возникнут сложности.
Чтобы избежать этой чехарды и «развернутого сальдо» внутри дня, платежи принудительно переносятся на 23:59:59. Таким образом, сначала в течение дня «накапливаются» все долги от отгрузок, а в самую последнюю секунду дня приходят деньги и закрывают эти долги в хронологическом порядке.
Если в вашей организации бизнес-процессы требуют иного подхода (например, вам важно видеть реальное время оплаты для оперативного контроля), эту логику можно изменить. Рассмотрим по шагам, где найти нужный переключатель в УТ 10.3 или УПП 1.3:
Здесь доступны два варианта:
Дата самого документа.Для программиста важно понимать, как это реализовано «под капотом». За данное поведение отвечает константа УстанавливатьВремяПроведенияПлатежныхДокументовКонцомДня.
В общем модуле, отвечающем за проведение денежных документов (обычно это процедуры в модулях ДенежныеСредства или специализированных модулях по взаиморасчетам), можно встретить логику, подобную следующей:
Если Константы.УстанавливатьВремяПроведенияПлатежныхДокументовКонцомДня.Получить() Тогда
Для Каждого Движение Из Движения.ВзаиморасчетыСКонтрагентами Цикл
Движение.Период = КонецДня(ДатаДокумента);
КонецЦикла;
КонецЕсли;
Проанализируем этот фрагмент: система берет дату документа, извлекает из нее только число, месяц и год, а затем с помощью функции КонецДня() устанавливает время 23:59:59 для каждой записи в наборе движений регистра ВзаиморасчетыСКонтрагентами.
Перед тем как переключить режим проведения на «По времени регистрации», необходимо предупредить пользователей о следующих нюансах:
Проведение документов по восстановлению последовательностей станет критически важной. Любое изменение времени документа «задним числом» может привести к неверному распределению сумм между долгом и авансом.Мы выяснили, что время 23:59:59 в регистрах накопления при времени документа 00:00:00 — это не ошибка, а защитный механизм системы. Он упрощает жизнь бухгалтеру, автоматически «схлопывая» долги и оплаты в пределах одного дня.
Если вы решили отказаться от этой настройки, убедитесь, что в базе настроено регулярное выполнение регламентных заданий по закрытию месяца и восстановлению последовательностей расчетов, чтобы исключить ошибки в управленческом и бухгалтерском учете.