В процессе работы с программой 1С:Бухгалтерия 3.0 (БП 3.0) нередко возникают ситуации, когда случайное перепроведение или изменение документа в глубоко закрытом периоде (например, несколько лет назад) приводит к «слёту» границы последовательности. В результате помощник Закрытие месяца требует перепровести все документы, начиная с той самой даты в прошлом, что недопустимо для уже сданной отчетности. Разберем подробно, как устроена эта система и как вернуть актуальность данных без физического вмешательства в старые периоды.
Для начала проанализируем механизм, который заставляет программу выдавать подобные предупреждения. В системе 1С существует объект метаданных — Последовательность. В конфигурации Бухгалтерия предприятия основной является последовательность ДокументыОрганизаций. У этой последовательности есть ключевое понятие — Граница. Это точка на временной оси (конкретный документ), до которой все данные считаются корректными и рассчитанными.
Когда вы открываете документ 2018 года и нажимаете «Провести», программа логично предполагает, что данные этого документа могли измениться, а значит, все последующие документы, которые опираются на эти данные (остатки на счетах, себестоимость, партии), могут стать неверными. Система автоматически сдвигает Границу последовательности на этот старый документ. С этого момента всё, что было создано позже, помечается как «неактуальное».
Рассмотрим техническую сторону вопроса. Многие пользователи ищут конкретный Регистр сведений, чтобы удалить из него «неправильную» запись. Однако данные о последовательностях хранятся в специальных внутренних таблицах базы данных. Тем не менее, механизм закрытия месяца активно взаимодействует со следующими регистрами:
Но важно понимать: просто удалив запись в одном из этих регистров, вы не решите проблему «улетевшей» границы последовательности ДокументыОрганизаций.
Это самый простой и рекомендуемый способ для бухгалтера. Нам не нужно искать регистры, мы воспользуемся встроенным функционалом «обмана» системы, подтвердив, что данные актуальны.
Разберем ситуацию по шагам:
Проанализируем, что произойдет в этот момент: программа принудительно запишет в систему новую Границу последовательности, установив её на конец выбранного вами месяца. Все изменения в 2018 году будут проигнорированы, и система вновь будет считать данные актуальными.
Иногда полезно посмотреть, где именно «застряла» граница. Для этого воспользуемся стандартной обработкой:
Внимание: не нажимайте кнопку «Выполнить» в этом окне, если не хотите реально перепроводить документы за несколько лет! Эта обработка используется здесь только для визуального контроля.
Если интерфейсные методы не помогают или нужно автоматизировать процесс для нескольких организаций, можно воспользоваться встроенным языком 1С. Мы можем принудительно установить границу последовательности ДокументыОрганизаций на нужный момент времени.
Посмотрим на пример кода, который можно запустить через Консоль кода или внешнюю обработку:
// Определяем момент времени, на который хотим передвинуть границу
// Например, конец октября 2023 года
ДатаГраницы = КонецДня('20231031');
Граница = Новый МоментВремени(ДатаГраницы);
// Устанавливаем новую границу для последовательности
Последовательности.ДокументыОрганизаций.УстановитьГраницу(Граница);
Сообщить("Граница последовательности успешно перенесена на " + ДатаГраницы);
Этот метод является наиболее «чистым» с точки зрения архитектуры платформы 1С. Метод УстановитьГраницу напрямую меняет состояние таблицы последовательности, не затрагивая сами документы и не изменяя их движения.
Чтобы не сталкиваться с необходимостью «двигать границы» вручную, рекомендуем придерживаться следующих правил:
Таким образом, мы выяснили, что информация о необходимости перепроведения хранится в объекте Последовательности. Исправить ситуацию можно как через визуальный интерфейс помощника Закрытие месяца, так и программно, используя метод УстановитьГраницу. Главное — помнить, что физическое перепроведение старых периодов в рабочей базе практически всегда влечет за собой нежелательные изменения в учете.