Процесс свёртки информационной базы в 1С:Бухгалтерия предприятие 2.0 — это сложная технологическая операция, которая состоит из нескольких последовательных этапов: формирования остатков, создания документов КорректировкаЗаписейРегистров, очистки движений старых документов и их последующего удаления. Однако часто пользователи сталкиваются с ситуацией, когда после завершения всех этапов документы прошлых периодов остаются в базе с пометкой на удаление или вовсе без неё, а в логе обработки красуется сообщение: «Есть движения по регистрам, удаление отменено».
В этой статье мы подробно разберем, почему стандартные механизмы ведут себя именно так, проанализируем внутреннюю архитектуру связей в «1С:Бухгалтерии» и выясним, как добиться корректного удаления документов при свёртке.
Рассмотрим ситуацию, когда администратор базы решает свернуть только определенные типы документов, например, РеализацияТоваровУслуг и ПоступлениеТоваровУслуг. На первый взгляд это кажется логичным для ускорения процесса, но с точки зрения архитектуры 1С это критическая ошибка. Документ в типовой конфигурации делает записи сразу в несколько регистров:
Хозрасчетный).НДСПродажи, НДСПредъявленный, НДСНачисленный и другие).ЦеныНоменклатуры, если в документе установлена галочка «Регистрировать цены поставщика»).Проанализируем ситуацию: если при настройке свёртки вы указали системе обрабатывать только бухгалтерский регистр, обработка очистит проводки, но записи в регистрах НДС или сведениях останутся нетронутыми. Платформа 1С при попытке удаления объекта (метод УдалитьОбъекты) проверяет наличие любых движений. Если у документа осталась хотя бы одна строчка в малозначимом регистре сведений, система заблокирует удаление, чтобы не допустить появления «битых ссылок» в регистрах.
Выясним, какие объекты могут «держать» наши документы. В «1С:Бухгалтерии 2.0» документы крайне редко существуют изолированно. Посмотрим на типовую цепочку: ПоступлениеТоваровУслуг — СчетФактураПолученный. Если вы пытаетесь свернуть поступления, но не включили в список свёртки счета-фактуры, то ситуация будет следующей:
ДокументОснование ссылку на ваше поступление.Аналогичная проблема возникает с документами АктСверкиВзаиморасчетов, Доверенность, ТребованиеНакладная или любыми ручными корректировками, где в качестве субконто на счетах 60 или 62 указан конкретный документ расчетов.
Часто программисты забывают проверить установленную дату запрета изменения данных. Обработка свёртки работает от имени пользователя, и если дата запрета установлена на конец сворачиваемого периода, программные механизмы отмены проведения могут игнорироваться модулем объекта. Перед началом процедуры свёртки необходимо полностью отключить дату запрета для всех пользователей, включая администраторов.
Если вы столкнулись с тем, что документы не удаляются, проанализируем один из таких объектов вручную. Для этого выполним следующие шаги:
Найти ссылки на объект. Это позволит увидеть все документы и записи регистров, которые содержат ссылку на данный объект.Рассмотрим пример кода, который поможет вам быстро вывести в сообщение список объектов, мешающих удалению конкретной ссылки:
Процедура НайтиПричинуБлокировкиУдаления(СсылкаНаОбъект)
МассивСсылок = Новый Массив;
МассивСсылок.Добавить(СсылкаНаОбъект);
ТаблицаСсылок = НайтиСсылки(МассивСсылок);
Для Каждого Строка Из ТаблицаСсылок Цикл
Сообщить("Документ " + СсылкаНаОбъект + " используется в: " + Строка.Данные);
КонецЦикла;
КонецПроцедуры
Чтобы избежать ошибок, рекомендуем придерживаться следующего алгоритма:
Шаг 1: Полная резервная копия. Никогда не проводите свёртку на «живой» базе. Сначала отработайте процесс на копии.
Шаг 2: Тестирование и исправление. Перед свёрткой запустите ТиИ в конфигураторе. Проверьте логическую целостность и удалите объектные ссылки, которые никуда не ведут.
Шаг 3: Масштабная свёртка. Не пытайтесь сворачивать документы выборочно. Выбирайте все регистры и все типы документов за период. Только так можно гарантировать, что все связи будут корректно перенесены в документы КорректировкаЗаписейРегистров.
Шаг 4: Ручная очистка «хвостов». Если после тотальной свёртки остались документы, которые не удаляются из-за связей с объектами более поздних периодов (например, реализация 2017 года привязана к акту сверки 2018 года), вам придется либо пометить на удаление эти акты, либо смириться с тем, что документ останется в базе «пустым» (без проводок).
Проанализируем целесообразность этой процедуры. На платформе 1С v8 свёртка редко дает значительный прирост производительности, в отличие от старых версий 7.7. Основные причины замедления работы БП 2.0 обычно кроются в:
Если ваша цель — только ускорение, попробуйте сначала выполнить обслуживание базы на уровне СУБД. Свёртка — это крайняя мера, которая лишает бухгалтерию возможности быстро поднять историю операций и усложняет формирование сопоставимой отчетности за разные годы.
Важный итог: Ошибка «Есть движения по регистрам» — это не баг программы, а защитный механизм платформы. Он сигнализирует о том, что вы пытаетесь удалить документ, данные которого все еще используются в других цепочках учета. Для успешного завершения операции необходимо обеспечить «пустоту» документа по всем регистрам и отсутствие ссылок на него со стороны других объектов информационной базы.