При работе в современных конфигурациях на базе платформы 1С:Предприятие 8.3, таких как «Управление торговлей 11.4», «Комплексная автоматизация 2.4» или «ERP 2.4», пользователи часто сталкиваются с ситуацией, когда помощник закрытия месяца настойчиво предлагает выполнить операции, начиная с очень старой даты. Например, из-за одной опечатки менеджера, указавшего в документе май 2000 года вместо мая текущего года, система «запоминает» необходимость пересчета итогов именно с этого момента. Даже если дата в документе исправлена или сам документ помечен на удаление, в служебных таблицах системы остаются «фантомные» записи, которые блокируют нормальную работу.
Разберем подробно, почему так происходит и как полностью очистить базу от последствий подобных ошибок.
В отличие от старых версий (например, УТ 10.3), где пересчет итогов часто выполнялся «по факту», в УТ 11 используется событийная модель. При проведении, отмене проведения или изменении даты любого финансово значимого документа система автоматически создает запись в специальных Регистрах сведений. Эти регистры называются «Задания к...».
Проанализируем ситуацию: когда менеджер сохранил документ за 2000 год, система мгновенно создала запись в регистре заданий, сигнализирующую: «В мае 2000 года произошли изменения, нужно пересчитать себестоимость и расчеты с этого месяца и далее по цепочке до текущего момента». Проблема заключается в том, что при простом исправлении даты документа старое задание на 2000 год не всегда удаляется автоматически — система добавляет новое задание на актуальную дату, но «хвост» в прошлом остается.
Чтобы восстановить корректную последовательность закрытия месяца, нам необходимо найти и удалить записи в группе регистров «Задания». Рассмотрим основной список регистров, которые могут содержать ошибочные даты:
Прежде чем что-то удалять, выясним точный масштаб проблемы. Воспользуемся стандартным инструментом «Универсальный отчет» (раздел «НСИ и администрирование» — «Печатные формы, отчеты и обработки»):
РегистрСведений.ЗаданияКРасчетуСебестоимости.Месяц (или Момент времени), указав условие «Меньше» и дату начала реальной работы в базе (например, 01.01.2024).После формирования отчета мы увидим все записи, которые «тянут» систему в прошлое. Обратите внимание на колонку «Объект записи» или «Месяц» — там будет фигурировать тот самый злополучный май 2000 года.
Рассмотрим два способа очистки: ручной (для единичных записей) и автоматизированный (если ошибочных записей много).
Способ А: Ручное удаление через функции технического специалиста
Если записей немного, мы можем перейти непосредственно в список регистра:
Задания к расчету себестоимости.Del).Способ Б: Программное удаление (через групповую обработку)
Если записей сотни, воспользуемся обработкой «Групповое изменение реквизитов»:
Задания к расчету себестоимости (необходимо включить отображение служебных объектов в настройках обработки).Месяц Меньше 01.01.2024.Для программиста решение в коде будет выглядеть следующим образом:
НаборЗаписей = РегистрыСведений.ЗаданияКРасчетуСебестоимости.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Месяц.Установить(Дата(2000, 05, 01));
// Если нужно удалить за весь период, фильтруем программно в цикле или через запрос
НаборЗаписей.Записать(); // Запись пустого набора удаляет данные по отбору
Проанализируем еще одну возможную причину. При переносе данных из УТ 10.3 часто используются документы Ввод начальных остатков. Если в табличной части такого документа (например, в данных о партиях товаров или датах возникновения задолженности) закралась дата из 2000 года, система будет считать этот период началом учета.
Необходимо проверить все документы в разделе «НСИ и администрирование» — «Начальное заполнение» — «Документы ввода начальных остатков». Убедимся, что ни в одном из них нет ссылок на некорректные даты прошлого века.
Выясним причину, по которой менеджер вообще смог записать документ за 2000 год. Это произошло из-за отсутствия жестких ограничений в системе. Чтобы ситуация не повторилась, выполним следующие действия:
После удаления записей из регистров Задания к... форма «Закрытие месяца» может не сразу отобразить изменения. Это связано с кэшированием данных в сеансе пользователя или работой фонового задания по расчету статусов. Посмотрим, как принудительно обновить состояние:
Пересчитать все статусы (доступна через меню «Еще»).Теперь система должна корректно определить, что ближайший месяц, требующий внимания — это апрель 2024 года (или тот период, с которого вы реально начали вести учет в базе). Процедуры за 2000 год исчезнут из списка необходимых действий.