Почему в 1С:Бухгалтерия 3.0 автоматически меняется время нового документа на 17:00 и как это исправить?

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

При разработке или автоматизации в конфигурации «1С:Бухгалтерия предприятия 3.0» (БП 3.0) программисты часто сталкиваются с загадочным поведением системы: вы программно устанавливаете документу одно время (например, конец дня 23:59:59), но после записи или проведения программа настойчиво меняет его на 17:00:00 или другое «странное» значение. Разберем детально, почему это происходит, как устроена внутренняя логика системы и какими способами можно добиться желаемого результата.

Причина: встроенная «сетка времени» документов

В типовом решении БП 3.0 реализована специальная механика автоматического распределения документов внутри дня. Это сделано для того, чтобы минимизировать ошибки бухгалтерского учета, связанные с «перехлестом» авансов. Проанализируем ситуацию: если оплата от покупателя и отгрузка товара произошли в один день, бухгалтеру важно, чтобы оплата не «повисла» на счете авансов (например, 62.02), а сразу закрыла дебиторскую задолженность на счете 62.01.

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

  1. 00:00:00 — Время для документов ввода остатков.
  2. 07:00:00 — Складские документы (перемещения, требования-накладные).
  3. 12:00:00 — Документы реализации товаров и услуг.
  4. 17:00:00 — Поступление денежных средств (тот самый Приходный кассовый ордер или Поступление на расчетный счет).
  5. 19:00:00 — Выбытие денежных средств (Расходный кассовый ордер, Списание с расчетного счета).
  6. 23:59:59 — Регламентные операции и отчеты о розничных продажах.

Именно поэтому, когда мы создаем ПКО, система автоматически «пододвигает» его к 17:00, считая, что к этому моменту основная часть реализаций уже зафиксирована в базе. Для переопределения стандартного интервала подойдёт расширение для автоматической установки времени документов в зависимости от их вида.

Способ 1: Отключение автоматической настройки в интерфейсе

Если такая логика мешает корректному учету или специфике вашего бизнеса, первым делом проверим настройки программы. Выясним, где спрятан этот «переключатель»:

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

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

Способ 2: Программный обход через свойство ОбменДанными

Если мы создаем документ программно (например, при загрузке из внешней системы или чеков ККМ) и не хотим менять глобальные настройки базы, проанализируем возможность использования режима загрузки. Когда мы устанавливаем признак Загрузка = Истина, большинство подписок на события и проверок (включая установку времени) игнорируются.

Посмотрим на пример кода:


НовыйДок = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент();
// Заполнение реквизитов документа
НовыйДок.Дата = КонецДня(ДатаЗагрузки); 
НовыйДок.ОбменДанными.Загрузка = Истина;
НовыйДок.Записать(РежимЗаписиДокумента.Запись);

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

Способ 3: Использование ДополнительныхСвойств

В некоторых версиях конфигураций БП 3.0 логика установки времени проверяет наличие определенных флагов в структуре ДополнительныеСвойства объекта. Проанализируем работу общего модуля ОбщегоНазначенияБП. Там часто встречается проверка, является ли объект «новым» для логики распределения времени. Мы можем попробовать «обмануть» систему, добавив свойство:


ДокОбъект.ДополнительныеСвойства.Вставить("ЭтоНовыйОбъект", Ложь);
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);

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

Конфликт Отчета о розничных продажах и ПКО

Рассмотрим специфическую ситуацию, упомянутую в обсуждении. Если Отчет о розничных продажах (ОРП) создается в 23:59:59, а ПКО на его основании создается в 17:00:00, то формально оплата в базе появляется раньше, чем сам факт продажи.

Чем это грозит? Для бухгалтерского учета в 1С:Бухгалтерии последовательность внутри дня критически важна. Если ПКО стоит раньше ОРП, система зафиксирует «Аванс от покупателя» на счете 62.02 (или 90.хх в зависимости от настроек). В момент проведения ОРП этот аванс будет зачтен. В итоге оборотно-сальдовая ведомость «раздуется» на лишние суммы зачета авансов, что может привести к путанице в налоговом учете по НДС (потребность формировать счета-фактуры на аванс, которых по факту быть не должно).

Рекомендации по автоматизации

Проанализировав ситуацию, можно дать следующие советы при программном создании документов:

  1. Синхронизация времени: Если вы создаете ПКО на основании ОРП, старайтесь устанавливать время ПКО на ту же секунду, что и в документе-основании, либо на 1 секунду позже.
  2. Отключение автоматики: Если ваша задача — точный перенос данных из внешней системы «один в один», лучше отключить настройку автоматического времени в меню Проведение документов. При переходе на новую конфигурацию подобрать правила миграции поможет раздел решений для переноса данных в БП.
  3. Проверка неоперативности: Помните, что логика «17:00» срабатывает в основном при неоперативной записи (задним числом). При записи документа текущим временем система чаще всего использует текущую секунду компьютера.

Таким образом, автоматическое изменение времени — это не ошибка, а штатная фича 1С:Бухгалтерии, направленная на стандартизацию учета. Понимание работы подписки УстановитьВремяНовогоДокумента позволяет гибко управлять этим процессом и избегать лишних проводок по зачету авансов.

← На главную