Многие пользователи конфигурации «1С:Бухгалтерия предприятия 3.0» сталкиваются с ситуацией, когда при создании нового документа Поступление наличных (Приходный кассовый ордер) система автоматически назначает ему время 17:00:00. При этом текущее системное время компьютера игнорируется, а попытки очистить кэш, переустановить платформу или выполнить тестирование базы не приносят результата. В этой статье мы подробно разберем, почему так происходит, как работает этот механизм и какими способами можно вернуть запись документов по фактическому времени.
Рассмотрим ситуацию, описанную пользователем: в типовой конфигурации без доработок документы записываются строго в определенное время. Проанализируем настройки программы. В современных версиях 1С реализован специальный функционал, который призван минимизировать ошибки, связанные с нарушением последовательности документов. Это позволяет избежать проблем с отрицательными остатками и некорректным зачетом авансов, даже если бухгалтер вводит документы в произвольном порядке в течение рабочего дня.
За эту логику отвечает настройка «Время документов устанавливать автоматически». Когда она включена, программа игнорирует текущее время создания документа и подставляет заранее определенное значение, закрепленное за конкретным видом метаданных.
Посмотрим на логику, заложенную разработчиками. Чтобы обеспечить корректную последовательность операций, документы распределяются по временным интервалам:
Для документа Поступление наличных выбрано фиксированное время 17:00:00. Это сделано для того, чтобы оплата всегда следовала за реализацией, если они проведены одним днем, обеспечивая автоматический зачет аванса без лишних ручных корректировок.
Разберем по шагам, что нужно сделать, если вы хотите, чтобы документы записывались текущим временем компьютера:
Важный нюанс: После отключения этой опции все новые документы будут записываться с текущим системным временем. Однако помните, что теперь ответственность за соблюдение последовательности (чтобы поступление было раньше реализации) ложится на пользователя. Вам придется внимательнее следить за временем, чтобы не возникало проблем при закрытии месяца.
Проанализируем ситуацию с точки зрения кода. Если вы хотите изменить время по умолчанию только для одного вида документа, не отключая общую настройку, вам потребуется вмешательство в логику через расширение конфигурации.
Механизм реализован через подписку на событие УстановитьВремяНовогоДокумента. В менеджере каждого документа или в общем модуле вызывается метод ВремяДокументаПоУмолчанию. Основная логика распределения сосредоточена в общем модуле ОбщегоНазначенияБПСобытия.
Рассмотрим пример того, как это выглядит в программном коде (упрощенная структура):
// Фрагмент логики определения времени
Если ВидДокумента = Метаданные.Документы.ПоступлениеНаличных Тогда
Смещение = 17 * 3600; // 17 часов в секундах
КонецЕсли;
Чтобы переопределить это поведение, можно использовать расширение, перехватив процедуру ПриУстановкеВремениНовогоДокумента. Однако для большинства пользователей достаточно штатного отключения настройки в интерфейсе.
Если вы не хотите отключать автоматическую настройку глобально, но для конкретного документа Поступление наличных вам жизненно важно другое время, можно воспользоваться следующим приемом:
Подведем итог: «магии» в установке времени 17:00 нет — это строгий расчет разработчиков 1С для упрощения бухгалтерского учета. Мы выяснили причину, рассмотрели способы управления этой настройкой и теперь можем осознанно выбирать между автоматическим порядком и ручным контролем времени документов.