Каждый бухгалтер, работающий в программе 1С:Бухгалтерия 3.0 (включая версию КОРП), хотя бы раз сталкивался с ситуацией, когда при попытке закрыть текущий месяц (например, январь 2018 года) система неожиданно выдает предупреждение о необходимости последовательного закрытия всех предыдущих периодов, начиная с какого-нибудь 2015 года. При этом пользователь точно знает, что все эти периоды давно закрыты, отчетность сдана, а балансы сведены. Тем не менее в помощнике закрытия месяца напротив прошлых лет горит упрямый статус «не выполнено».
Давайте подробно разберем, почему возникает эта проблема, какие скрытые механизмы платформы влияют на последовательность проведения документов и как быстро вернуть систему в рабочее состояние без ущерба для сданной отчетности.
Выясняем причины сбоя последовательности закрытия
Для начала проанализируем ситуацию и поймем, из-за чего программа «теряет» информацию о закрытых месяцах. Система 1С:Предприятие строго отслеживает хронологическую последовательность проведения документов. Если в базе происходит событие, затрагивающее прошлые периоды, автоматический механизм помечает все последующие месяцы как неактуальные. Основными причинами такого поведения являются:
Случайные опечатки в датах документов. Самая банальная и частая причина. Вводя документ текущим числом, пользователь может случайно промахнуться по клавиатуре и указать, например, 2015 год вместо 2018. Даже если ошибка была сразу обнаружена и исправлена, для системы факт проведения документа в 2015 году уже состоялся. Граница последовательности автоматически сдвинулась назад.
Редактирование старой учетной политики. Если вместо создания новой записи учетной политики на текущий год путем копирования бухгалтер отредактировал старую запись, которая действует с 2015 года, программа расценит это как глобальное изменение правил учета и потребует пересчитать все итоги заново.
Влияние синхронизации данных. При обмене данными с внешними конфигурациями (например, 1С:ЗУП) могут перезаписываться или перепроводиться документы прошлых лет (отражения зарплаты, ведомости). Если в системе не настроены жесткие ограничения, это гарантированно приведет к сдвигу границы последовательности.
Обновления конфигурации. При переходе на новые релизы разработчики 1С часто меняют структуру регистров регламентных операций или алгоритмы расчетов. Программа может принудительно сбросить статус актуальности старых периодов.
Способ 1. Пропуск операций в помощнике закрытия месяца
Рассмотрим самый простой и безопасный способ, который не требует вмешательства в программный код и программирования. Если нам нужно закрыть январь 2018 года, а программа требует закрытия с января 2015 года, мы можем воспользоваться механизмом пропуска операций.
Разберем этот процесс по шагам:
Перейдем в раздел Операции — Закрытие месяца.
Выберем самый первый месяц, с которого программа требует начать выполнение операций (например, январь 2015 года).
Кликнем левой кнопкой мыши по первой регламентной операции (или по пункту «Перепроведение документов») и выберем команду «Пропустить операцию».
Повторим это действие для последующих месяцев. Стоит отметить, что в зависимости от релиза программы иногда достаточно зайти в последний «лишний» закрытый месяц (декабрь 2017 года) и пропустить операцию перепроведения документов в нем. Программа поймет, что восстанавливать цепочку до этой даты не нужно, и разблокирует закрытие текущего января 2018 года.
Способ 2. Очистка регистра неактуальных регламентных операций
Если ручной пропуск операций в интерфейсе не помогает или месяцев слишком много, нам придется обратиться к системным регистрам. Вся информация о том, какие регламентные операции требуют выполнения, хранится в специальном техническом регистре сведений Неактуальные регламентные операции (или Регламентные операции в зависимости от версии).
Для исправления ситуации выполним следующие действия:
Откроем главное меню программы и перейдем в пункт «Функции для технического специалиста» (в старых версиях — «Все функции»). Если этот пункт не отображается, его необходимо предварительно включить в настройках параметров системы (раздел *Настройки — Параметры — Отображать команду "Все функции"*).
В открывшемся окне найдем раздел Регистры сведений и выберем регистр Неактуальные регламентные операции.
Проанализируем записи в этом регистре. Мы увидим список регламентных операций, которые программа считает устаревшими и требующими повторного расчета.
Для восстановления актуальности очистим записи в этом регистре по проблемной организации за прошлые годы.
Для администраторов и программистов эту задачу можно автоматизировать с помощью написания простой внешней обработки. Посмотрим на пример кода, который очищает записи в регистре сведений:
НаборЗаписей = РегистрыСведений.НеактуальныеРегламентныеОперации.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Организация.Установить(ВыбраннаяОрганизация);
// При необходимости можно установить отбор по периоду регламентных операций
НаборЗаписей.Записать();
После очистки регистра вернемся в форму закрытия месяца и проверим результат — требование перепроведения за прошлые года должно исчезнуть.
Способ 3. Работа с регистром «Задания к закрытию месяца»
Помимо регистра неактуальных операций, за формирование задач перепроведения отвечает регистр сведений Задания к закрытию месяца. Любое изменение документов регистрирует здесь запись-задание на пересчет.
Если предыдущие методы не принесли желаемого результата, проанализируем этот регистр:
Через «Функции для технического специалиста» найдем регистр сведений Задания к закрытию месяца.
Найдем записи, даты которых относятся к старым периодам (с 2015 по 2017 год).
Выделим устаревшие записи и удалим их. Это заставит программу «забыть» о необходимости актуализации прошлых периодов.
Программное удаление таких записей можно реализовать следующим образом:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Задания.Регистратор,
| Задания.Период
|ИЗ
| РегистрСведений.ЗаданияКЗакрытиюМесяца КАК Задания
|ГДЕ
| Задания.Период < &ПредельнаяДата";
Запрос.УстановитьПараметр("ПредельнаяДата", '20180101000000');
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Набор = РегистрыСведений.ЗаданияКЗакрытиюМесяца.СоздатьНаборЗаписей();
Набор.Отбор.Период.Установить(Выборка.Период);
Набор.Записать(); // Очищаем запись
КонецЦикла;
Способ 4. Использование регистра «Исключенные из перепроведения месяцы»
В современных конфигурациях 1С:Бухгалтерия 3.0 существует встроенный штатный механизм для игнорирования ошибок прошлых периодов. Чтобы заставить программу обходить проверку старых данных, мы можем внести записи в специальный регистр:
Найдем через поиск функций технического специалиста регистр сведений Исключенные из перепроведения месяцы.
Создадим новые записи для нашей организации, последовательно указав все закрытые периоды прошлых лет (с 2015 по 2017 год включительно).
После сохранения этих настроек система перестанет анализировать любые изменения документов внутри указанных периодов и позволит спокойно закрывать текущие месяцы.
Меры профилактики: как избежать проблемы в будущем?
Чтобы раз и навсегда обезопасить базу данных от случайных сдвигов границы проведения и исключить необходимость регулярной ручной очистки регистров, обязательно внедрим следующие правила работы:
Установка даты запрета изменения данных. Это самый важный шаг. Перейдем в раздел Администрирование — Настройки пользователей и прав — Даты запрета изменения. Включим этот механизм и установим дату запрета на последний день прошлого закрытого года или квартала (например, 31.12.2017). Это заблокирует возможность случайного проведения документов задним числом для всех пользователей, включая администраторов.
Настройка даты запрета загрузки при синхронизации. Если выполняется обмен с другими конфигурациями (1С:ЗУП, 1С:УТ), перейдем в настройки синхронизации данных и установим там аналогичную дату запрета загрузки. Это предотвратит перезапись старых документов со стороны внешних баз.
Корректное ведение учетной политики. Никогда не изменяйте параметры учетной политики прошлых лет напрямую в существующих записях. При необходимости изменить параметры создавайте новую запись с началом действия от 1 января текущего отчетного года.