Как восстановить закрытие месяца в УТ 11 после изменения документа трехлетней давности

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Ситуация, когда в системе 1С:Управление торговлей 11 (или ERP) случайно перепроводят документ многолетней давности, является критической для администратора базы данных. Система автоматически фиксирует изменения в служебных регистрах и «откатывает» статус закрытия всех последующих месяцев. В результате бухгалтер видит требование пересчитать себестоимость за огромный период (например, за 3 года), что физически невозможно или крайне рискованно из-за возможного изменения финансовых показателей.

В данной статье мы разберем, как технически «обмануть» систему, очистить задания к расчету и восстановить корректную работу без тотального пересчета прошлых периодов. Мы проанализируем механизмы работы заданий к закрытию месяца и научимся точечно исправлять последствия таких «диверсий».

Почему «слетает» закрытие месяца?

Прежде всего, выясним причину такого поведения программы. В УТ 11 реализован механизм отложенных расчетов. Как только любой документ, влияющий на остатки или стоимость, проводится или изменяется, система создает запись в специальных регистрах сведений (заданиях). При запуске обработки «Закрытие месяца» программа проверяет наличие записей в этих регистрах начиная с самой ранней даты. Если вы изменили документ 2021 года, система создала задание на расчет именно с этой даты, и пока оно не будет выполнено, все последующие месяцы будут считаться неактуальными.

Шаг 1. Очистка регистров заданий к расчету

Чтобы программа перестала требовать закрытие прошлых периодов, нам необходимо удалить записи из служебных регистров. Рассмотрим подробнее, где именно хранятся эти «метки».

Для доступа к этим регистрам перейдем в меню «Функции для технического специалиста» (ранее — «Все функции»). В строке поиска наберем слово «Задания». Нас интересуют следующие регистры сведений:

  1. Задания к расчету себестоимости — основной регистр, который инициирует пересчет стоимостных оценок.
  2. Задания к распределению расчетов — отвечает за расчеты с поставщиками и клиентами (взаиморасчеты).
  3. Задания к расчету партий товаров — если в вашей базе используется партионный учет версии 2.2.
  4. Задания к отражению в регламентированном учете — если база синхронизирована с бухгалтерией или ведется регл. учет. При наличии нескольких информационных баз для контроля правильности проводок после ручных правок используйте автоматическую сверку данных через COM-соединение.
  5. Задания к расчету НДС — актуально для организаций-плательщиков НДС.

Важное правило: Мы не рекомендуем очищать регистры полностью за все время. Нам нужно удалить только те записи, у которых поле Месяц или Дата возникновения меньше начала текущего отчетного (рабочего) периода. Все задания за текущий рабочий месяц лучше оставить, чтобы система корректно завершила текущие расчеты.

Шаг 2. Использование отчета «Периоды заданий к расчету»

Проанализируем ситуацию с помощью встроенных средств диагностики. В самой обработке «Закрытие месяца», если нажать кнопку «Еще», можно найти отчет «Периоды заданий к расчету».

Этот отчет наглядно показывает, какой именно регистр и какой конкретно документ «тянет» последовательность назад. Это позволяет не действовать вслепую, а точечно найти записи в регистрах сведений и удалить только те, которые относятся к злополучному документу ввода остатков трехлетней давности.

Шаг 3. Решение проблемы с разрывом ГТД

Просто очистить регистры часто недостаточно. Разберем пример: вы изменили номер ГТД в документе трехлетней давности. За эти три года товар с этим ГТД уже был неоднократно продан. Теперь в системе возник коллизия: по старым записям списан ГТД «№1», а в остатках теперь числится ГТД «№2». Это приведет к ошибке «Отрицательные остатки по номерам ГТД» или «Развернутое сальдо по видам запасов» уже в текущем месяце. Для автоматического исправления таких разрывов подойдёт помощник корректировки отрицательных остатков по ГТД в текущем периоде.

Вместо того чтобы пересчитывать 3 года, применим следующий алгоритм:

  1. В текущем (открытом для редактирования) месяце создадим документ «Корректировка видов запасов» (находится в разделе Финансовый результат и контроллинг — Обслуживание — Исправление данных).
  2. Этот документ позволяет вручную «перебросить» остатки. Мы списываем ошибочный остаток, который «завис» из-за правки старого документа, и приходуем верный ГТД.
  3. Таким образом мы «схлопываем» остатки в текущем периоде. Система увидит, что на начало месяца всё корректно, и позволит закрыть текущий месяц без обращения к истории.

Шаг 4. Восстановление документа через режим разработчика

Если вы понимаете, что правка старого документа была ошибкой и хотите вернуть всё «как было», но бэкап разворачивать слишком долго, воспользуемся советом опытных программистов:

Рассмотрим вариант выгрузки документа из архивной копии. Если у вас есть копия базы, где документ еще в старом состоянии, можно выгрузить его через обработку «Выгрузка и загрузка данных XML» и загрузить в рабочую базу в режиме разработчика (с отключением обработки ПередЗаписью и ПриЗаписи). Это позволит вернуть данные в документе, не вызывая повторного срабатывания механизмов регистрации заданий к закрытию.

Пример программного кода для записи объекта без регистрации изменений (в консоли кода):


ДокументОбъект = Документы.ВводОстатков.НайтиПоНомеру("001", ДатаДокумента).ПолучитьОбъект();
ДокументОбъект.ОбменДанными.Загрузка = Истина; // Отключаем проверки и регистрацию заданий
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);

Использование свойства ОбменДанными.Загрузка = Истина является ключевым методом для исправления технических ошибок в закрытых периодах, когда нужно изменить реквизит без инициации пересчета себестоимости.

Шаг 5. Профилактика и установка даты запрета

Чтобы подобные ситуации не повторялись, проанализируем настройки безопасности. В 1С:УТ 11 существует Дата запрета редактирования. Однако, как показывает практика, пользователи с полными правами часто её игнорируют или временно отключают.

Рекомендация: Всегда устанавливайте дату запрета не только для пользователей, но и для администраторов. Если необходимо внести текстовое исправление в старый документ (например, поправить опечатку в комментарии или номере ГТД, которая не влияет на суммы), используйте обработку «Групповое изменение реквизитов».

В дополнительных настройках этой обработки включите флаг «Записывать объекты без проверок». Это позволит изменить текстовое поле, не вызывая срабатывания механизмов «Заданий к закрытию месяца».

Резюме по шагам

Если вы столкнулись со «слетевшим» закрытием месяца за несколько лет:

  1. Не паникуйте и не запускайте автоматическое закрытие за все годы.
  2. Перейдите в регистры сведений заданий к расчету и точечно удалите записи за старые периоды.
  3. Проверьте текущие остатки по ГТД и видам запасов — при необходимости исправьте их документом «Корректировка видов запасов» в текущем месяце.
  4. Убедитесь, что Дата запрета редактирования установлена корректно. Для регулярного создания резервных копий и технического обслуживания систем можно использовать автоматическое архивирование и обновление нескольких баз.
  5. Закройте только текущий месяц.

Помните, что вмешательство в данные трехлетней давности — это крайняя мера. Если отчетность уже сдана, любые исправления лучше вносить корректировками текущего периода. При значительном объеме исторических данных для очистки базы и формирования остатков можно запустить многопоточную свёртку 1С:ERP.

← На главную