Почему при свертке БП 2.0 возникает ошибка «Есть движения по регистрам, удаление отменено»?

Программист 1С v8.3 (Обычные формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

Процесс свёртки информационной базы в 1С:Бухгалтерия предприятие 2.0 — это сложная технологическая операция, которая состоит из нескольких последовательных этапов: формирования остатков, создания документов КорректировкаЗаписейРегистров, очистки движений старых документов и их последующего удаления. Однако часто пользователи сталкиваются с ситуацией, когда после завершения всех этапов документы прошлых периодов остаются в базе с пометкой на удаление или вовсе без неё, а в логе обработки красуется сообщение: «Есть движения по регистрам, удаление отменено».

В этой статье мы подробно разберем, почему стандартные механизмы ведут себя именно так, проанализируем внутреннюю архитектуру связей в «1С:Бухгалтерии» и выясним, как добиться корректного удаления документов при свёртке.

Причина 1: Попытка «частичной» свёртки и нарушение логики регистров

Рассмотрим ситуацию, когда администратор базы решает свернуть только определенные типы документов, например, РеализацияТоваровУслуг и ПоступлениеТоваровУслуг. На первый взгляд это кажется логичным для ускорения процесса, но с точки зрения архитектуры 1С это критическая ошибка. Документ в типовой конфигурации делает записи сразу в несколько регистров:

  1. Бухгалтерский и налоговый учет (регистр бухгалтерии Хозрасчетный).
  2. Регистры накопления НДС (НДСПродажи, НДСПредъявленный, НДСНачисленный и другие).
  3. Регистры партионного учета (если ведется учет по версиям до появления расширенной аналитики).
  4. Регистры сведений (например, ЦеныНоменклатуры, если в документе установлена галочка «Регистрировать цены поставщика»).

Проанализируем ситуацию: если при настройке свёртки вы указали системе обрабатывать только бухгалтерский регистр, обработка очистит проводки, но записи в регистрах НДС или сведениях останутся нетронутыми. Платформа 1С при попытке удаления объекта (метод УдалитьОбъекты) проверяет наличие любых движений. Если у документа осталась хотя бы одна строчка в малозначимом регистре сведений, система заблокирует удаление, чтобы не допустить появления «битых ссылок» в регистрах.

Причина 2: Ссылочная целостность и связанные документы

Выясним, какие объекты могут «держать» наши документы. В «1С:Бухгалтерии 2.0» документы крайне редко существуют изолированно. Посмотрим на типовую цепочку: ПоступлениеТоваровУслуг — СчетФактураПолученный. Если вы пытаетесь свернуть поступления, но не включили в список свёртки счета-фактуры, то ситуация будет следующей:

Аналогичная проблема возникает с документами АктСверкиВзаиморасчетов, Доверенность, ТребованиеНакладная или любыми ручными корректировками, где в качестве субконто на счетах 60 или 62 указан конкретный документ расчетов.

Причина 3: Дата запрета редактирования данных

Часто программисты забывают проверить установленную дату запрета изменения данных. Обработка свёртки работает от имени пользователя, и если дата запрета установлена на конец сворачиваемого периода, программные механизмы отмены проведения могут игнорироваться модулем объекта. Перед началом процедуры свёртки необходимо полностью отключить дату запрета для всех пользователей, включая администраторов.

Как найти «виновника» блокировки удаления?

Если вы столкнулись с тем, что документы не удаляются, проанализируем один из таких объектов вручную. Для этого выполним следующие шаги:

  1. Откройте форму списка проблемных документов.
  2. Выберите один документ и через меню «Перейти» откройте все его движения (Журнал проводок и разделы по регистрам накопления).
  3. Если после работы обработки свёртки в списке остались какие-либо вкладки с записями (кроме бухгалтерского учета, который должен быть пуст), значит, этот регистр не был включен в правила свёртки.
  4. Воспользуйтесь типовой функцией Найти ссылки на объект. Это позволит увидеть все документы и записи регистров, которые содержат ссылку на данный объект.

Рассмотрим пример кода, который поможет вам быстро вывести в сообщение список объектов, мешающих удалению конкретной ссылки:


Процедура НайтиПричинуБлокировкиУдаления(СсылкаНаОбъект)
    МассивСсылок = Новый Массив;
    МассивСсылок.Добавить(СсылкаНаОбъект);
    
    ТаблицаСсылок = НайтиСсылки(МассивСсылок);
    
    Для Каждого Строка Из ТаблицаСсылок Цикл
        Сообщить("Документ " + СсылкаНаОбъект + " используется в: " + Строка.Данные);
    КонецЦикла;
КонецПроцедуры

Методика правильной свёртки в БП 2.0

Чтобы избежать ошибок, рекомендуем придерживаться следующего алгоритма:

Шаг 1: Полная резервная копия. Никогда не проводите свёртку на «живой» базе. Сначала отработайте процесс на копии.

Шаг 2: Тестирование и исправление. Перед свёрткой запустите ТиИ в конфигураторе. Проверьте логическую целостность и удалите объектные ссылки, которые никуда не ведут.

Шаг 3: Масштабная свёртка. Не пытайтесь сворачивать документы выборочно. Выбирайте все регистры и все типы документов за период. Только так можно гарантировать, что все связи будут корректно перенесены в документы КорректировкаЗаписейРегистров.

Шаг 4: Ручная очистка «хвостов». Если после тотальной свёртки остались документы, которые не удаляются из-за связей с объектами более поздних периодов (например, реализация 2017 года привязана к акту сверки 2018 года), вам придется либо пометить на удаление эти акты, либо смириться с тем, что документ останется в базе «пустым» (без проводок).

Нужна ли свёртка для ускорения базы?

Проанализируем целесообразность этой процедуры. На платформе 1С v8 свёртка редко дает значительный прирост производительности, в отличие от старых версий 7.7. Основные причины замедления работы БП 2.0 обычно кроются в:

Если ваша цель — только ускорение, попробуйте сначала выполнить обслуживание базы на уровне СУБД. Свёртка — это крайняя мера, которая лишает бухгалтерию возможности быстро поднять историю операций и усложняет формирование сопоставимой отчетности за разные годы.

Важный итог: Ошибка «Есть движения по регистрам» — это не баг программы, а защитный механизм платформы. Он сигнализирует о том, что вы пытаетесь удалить документ, данные которого все еще используются в других цепочках учета. Для успешного завершения операции необходимо обеспечить «пустоту» документа по всем регистрам и отсутствие ссылок на него со стороны других объектов информационной базы.

← На главную