Свертка информационной базы в 1С:Бухгалтерия 3.0 — это стандартная, но часто болезненная процедура, особенно если учет ведется давно и с активным использованием исправлений «вручную». Одной из самых распространенных проблем является ситуация, когда после завершения работы стандартного помощника свертки в базе остаются десятки тысяч документов прошлых периодов. Эти документы не помечаются на удаление и продолжают хранить свои движения, потому что в них установлен флаг «Ручная корректировка».
В этой статье мы разберем, почему стандартный механизм «пасует» перед такими документами, и проанализируем эффективные методики очистки базы, которые позволят избавиться от лишних данных, сохранив при этом целостность учета.
Рассмотрим логику работы типового алгоритма. Программа 1С при свертке стремится заменить все обороты за прошлые годы сводными документами Операция (бухгалтерский и налоговый учет). Однако, когда система встречает документ с установленным флагом РучнаяКорректировка = Истина, она «считает», что пользователь внес в проводки или регистры уникальные данные, которые невозможно корректно свернуть автоматически без риска потери информации. Чтобы не допустить расхождения баланса, свертка просто оставляет такие объекты нетронутыми.
Документы могут оставаться проведенными из-за записей в регистрах Раздельный учет НДС или НДС предъявленный, так как они являются «партиобразующими» для будущих периодов.
Если документов слишком много для ручного разбора (например, 50 000), мы можем воспользоваться программным методом. Суть заключается в том, чтобы оставить документы в базе для ссылочной целостности, но полностью очистить их движения, сохранив статус Проведен. Это позволит документам выглядеть «настоящими» для системы, но они не будут дублировать остатки, введенные сверткой.
Проанализируем шаги реализации этого метода:
Проведен, используя режим ОбменДанными.Загрузка = Истина, чтобы не спровоцировать повторное формирование проводок.Пример кода для такой обработки может выглядеть следующим образом:
Для Каждого СсылкаИзСписка Из МассивДокументов Цикл
ДокОбъект = СсылкаИзСписка.ПолучитьОбъект();
ДокОбъект.ОбменДанными.Загрузка = Истина;
// Очищаем движения
Для Каждого Движение Из ДокОбъект.Движения Цикл
Движение.Прочитать();
Движение.Очистить();
Движение.Записать();
КонецЦикла;
ДокОбъект.ПометкаУдаления = Ложь;
ДокОбъект.Проведен = Истина;
ДокОбъект.РучнаяКорректировка = Истина;
Попытка
ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
Исключение
Сообщить("Ошибка записи: " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
Важный нюанс: Такой подход позволяет комфортно работать со списком документов на удаление (особенно если задействовать удаление с предварительным отбором объектов), так как «хвосты» больше не будут мешать контролю ссылочной целостности при окончательной очистке базы.
Если ваша цель — максимально уменьшить размер базы и полностью избавиться от «тяжелых» документов прошлых лет (таких как РеализацияТоваровУслуг или ПоступлениеТоваровУслуг), рассмотрим метод замены ссылок. В 1С:Бухгалтерии существует специальный тип объекта — Документ расчетов с контрагентом (ручной учет).
Разберем алгоритм действий:
Операция заменяем ссылки на старые документы реализации/поступления на ссылки на эти новые «пустые» объекты.Этот метод считается более «чистым» (особенно если применить фоновое удаление документов), так как база избавляется от лишних метаданных, табличных частей и тяжелых реквизитов старых документов.
Если вы только готовитесь к свертке и понимаете, что «ручных» документов тысячи, попробуем выяснить причину их появления. Часто бухгалтеры ставят флаг ручной корректировки, чтобы просто проверить проводки, при этом сами проводки не отличаются от типовых.
Мы можем разработать скрипт, который:
РучнаяКорректировка снимается.После такой подготовки стандартная свертка увидит эти документы как обычные и успешно их обработает.
Рассмотрим критическую ситуацию: если документ с ручной правкой не был помечен сверткой на удаление и при этом остался проведенным, его движения продолжают влиять на баланс. В то же время свертка создала документ Операция, который также ввел остаток по этому же счету и аналитике. В результате вы получите удвоение суммы остатка.
Рекомендация: После любой свертки в первую очередь формируйте Оборотно-сальдовую ведомость по счету 000. Если он не закрыт в ноль на дату начала нового периода, значит, часть документов прошлых периодов сохранила свою активность и «наложилась» на новые остатки. Выясним причину через карточку счета и примените Метод 1 для очистки лишних движений.
Работа с ручными корректировками при свертке требует индивидуального подхода. Если документов немного — их проще разобрать вручную. Но при масштабах в 50 000 «случаев» единственным выходом остается автоматизация. Используйте ОбменДанными.Загрузка = Истина для безопасного изменения статуса документов и не забывайте про регистры НДС, которые часто удерживают документы от удаления даже после обнуления бухгалтерских счетов.