Ситуация, когда при попытке закрыть текущий месяц (например, сентябрь 2020 года) система внезапно начинает перепроводить документы и регламентные операции за 2017 или 2018 годы, является классической для конфигураций на платформе 1С:Предприятие 8, таких как «1С:Комплексная автоматизация 2» и «1С:ERP Управление предприятием». Разберем подробно, почему это происходит, как провести расследование и какие шаги предпринять для исправления ситуации.
Первым делом проанализируем техническую сторону вопроса. В современных конфигурациях 1С расчет себестоимости и распределение затрат работают на основе механизма «Заданий к расчету». Рассмотрим основные причины возникновения «цепной реакции»:
РегистрСведений.ЗаданияКРасчетуСебестоимости. Как только в них появляется запись за старую дату, ПомощникЗакрытияМесяца будет считать этот период неактуальным и требовать его перезакрытия.Когда бухгалтер утверждает, что «программа сама все запустила», нам необходимо проверить факты. Разберем, на что обратить внимание в Журнале регистрации:
Посмотрим на события, предшествующие запуску закрытия месяца. Ищем записи с событием «Данные. Изменение» или «Проведение» по документам старых периодов. Если мы видим, что перед началом регламентных заданий пользователь открывал и проводил РеализацияТоваровУслуг или ПоступлениеТоваровУслуг за 2017 год, значит, причина в ручном вмешательстве.
Обратим внимание на колонку «Приложение». Если там указано Тонкий клиент, значит, документ провел человек. Если указано Фоновое задание, значит, перепроведение инициировано самой системой в рамках процесса закрытия месяца. Важно найти ту самую первую «доминошку», которая запустила процесс.
Если процесс перезакрытия уже запущен и «поплыли» остатки прошлых лет, восстанавливать учет в текущей базе может быть слишком трудозатратно. Проанализируем алгоритм действий по спасению базы:
1. Восстановление из резервной копии. Это самый надежный способ. Если изменения затронули данные трехлетней давности, ручная корректировка остатков практически невозможна без потери точности. Развернем последний бэкап, сделанный до начала закрытия месяца.
2. Блокировка полных прав. Выясним, почему дата запрета не сработала. Проверим настройку ДатаЗапретаИзменения. Убедимся, что установлена галочка «Применять для пользователей с полными правами». Без этой опции любой администратор или главный бухгалтер может случайно разрушить учет прошлых лет.
3. Очистка регистров заданий. Чтобы система перестала требовать закрытия 2017 года, необходимо «хирургически» удалить записи из технических регистров. Рассмотрим список регистров, которые нужно проверить:
ЗаданияКРасчетуСебестоимостиЗаданияКРаспределениюРасчетовСПоставщикамиЗаданияКРаспределениюРасчетовСКлиентамиЗаданияКОтражениюВРегламентированномУчетеДля очистки можно воспользоваться обработкой «Групповое изменение реквизитов» или написать небольшой код для удаления записей за ненужный период. Пример логики удаления (использовать с осторожностью):
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Период ИЗ РегистрСведений.ЗаданияКРасчетуСебестоимости ГДЕ Период < &ДатаОтсечки";
Запрос.УстановитьПараметр("ДатаОтсечки", '20200101');
// Далее следует очистка выбранных наборов записей
Разберем, как правильно действовать в Помощнике закрытия месяца, если он показывает ошибки прошлых лет:
ЗаданияКРасчетуСебестоимости, как описано выше.Нужно понимать, что в версиях 2.4 и выше используется партионный учет 2.2. Если ваша база обновлялась с очень старых версий (где был партионный учет 2.1), то любое перепроведение документов в периоде работы старого движка приведет к непредсказуемым результатам. Программа попытается сформировать движения по новым регистрам, которых раньше не существовало, что вызовет разрыв в остатках на стыке периодов.
Рекомендация: При переходе на новые мажорные версии конфигурации всегда выполняйте окончательную фиксацию периодов и «отсекайте» возможность любого редактирования старых данных, даже для целей исправления опечаток в комментариях или нефинансовых реквизитах.
Чтобы избежать подобных ситуаций в будущем, выполним следующие действия:
Журнал регистрации, не запуская автоматический расчет.Следование этим правилам позволит сохранить целостность данных и избежать многочасовых (а иногда и многодневных) работ по восстановлению партионного учета и себестоимости в 1С.