Почему в 1С 7.7 невозможно провести документ после ТА и точка актуальности смещается на 23:59:59?

Программист 1С v7.7 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При работе в конфигурации «Торговля и Склад 9.2» (или других типовых решениях на платформе 1С:Предприятие 7.7) пользователи и разработчики часто сталкиваются с критической ошибкой: «Невозможно провести документ после ТА! ТА: DD.MM.YY 23:59:59». При этом проведение новых оперативных документов (например, чеков ККМ или накладных) блокируется, а сама Точка Актуальности (ТА) оказывается «зажата» на последней секунде дня.

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

Проанализируем причину смещения Точки Актуальности

Выясним, почему система ведет себя таким образом, даже если в меню «Сервис — Параметры — Оперативный учет» включена опция «При проведении после ТА заменять время на текущее».

Ключевая особенность платформы 1С 7.7 заключается в четком разделении интерактивного и программного поведения:

  1. Интерактивные настройки не действуют в коде: Все флаги и настройки автоматического позиционирования времени из параметров сеанса работают исключительно при действиях пользователя через форму документа. При создании объекта через встроенный язык (например, СоздатьОбъект("Документ.ПриемкаТовара")) платформа игнорирует пользовательские настройки.
  2. Позиционирование по умолчанию: Если при программном создании документ записывается методом Записать() без предварительного указания времени, платформа позиционирует его на конец текущих суток (23:59:59) или непосредственно за текущей ТА.
  3. Предел времени суток: При последующем проведении такого документа Точка Актуальности смещается на 23:59:59. Так как времени позже 23:59:59 в рамках одних суток физически не существует, оперативное проведение любых следующих документов в этой же дате становится невозможным.

Способ 1. Программное управление временем документа в коде 1С

Чтобы избежать смещения ТА на конец дня при работе внешних обработок (например, при импорте данных или загрузке приемок), необходимо перед вызовом метода Записать() явно указать правило позиционирования документа во времени.

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


// Проблемный код: время документа не управляется
Док = СоздатьОбъект("Документ.ПриемкаТовара");
Док.Новый();
Док.ДатаДок = ТекущаяДата();
// Заполнение реквизитов и табличной части...
Док.Записать(); // Документ автоматически попадает на 23:59:59!
Док.Провести();

Для исправления ситуации используем один из штатных методов работы с временем объекта Документ:

  1. АвтоВремяТекущее() — устанавливает время документа равным текущему системному времени.
  2. УстановитьВремя(Час, Минута, Секунда) — задает точное время записанного или нового документа.
  3. АвтоВремяНачалоДня() — помещает документ на 00:00:00 (начало суток).

Разберем исправленный вариант кода с использованием метода АвтоВремяТекущее():


// Корректный код: явно задаем текущее время
Док = СоздатьОбъект("Документ.ПриемкаТовара");
Док.Новый();
Док.ДатаДок = ТекущаяДата();
// Заполнение реквизитов и табличной части...
Док.АвтоВремяТекущее(); // Гарантирует запись на текущую секунду, а не на конец дня
Док.Записать();
Док.Провести();

Если программно загружаемый документ не должен влиять на оперативную последовательность и расчет остатков в реальном времени, проведите его в неоперативном режиме. Для этого передайте параметр 0 в метод Провести():

Док.Провести(0); // Неоперативное проведение (не сдвигает ТА)

Способ 2. Исправление времени у уже созданных документов

Если ошибка уже возникла и множество документов (чеки ККМ, приходные накладные) записались на 23:59:59, сдвинуть ТА простым проведением не получится. Разберем по шагам, как исправить накопленные данные:

  1. Перемещение Точки Актуальности назад: Зайдите в меню «Операции — Управление оперативными итогами» и временно сместите ТА на время до возникновения ошибки (или на начало дня).
  2. Пакетное изменение времени документов: Воспользуйтесь типовой или внешней обработкой «Групповое изменение времени документов». С ее помощью можно автоматически переставить время документов с 23:59:59 на более раннее (например, распределив их с интервалом в 1–5 секунд в течение дня).
  3. Последовательное проведение: После перераспределения времени восстановите последовательность и переместите Точку Актуальности на текущий момент.

Соблюдение правил программного управления временем в 1С 7.7 позволяет полностью исключить блокировки оперативной работы пользователей и предотвратить ошибки позиционирования документов.

← На главную