Свертка базы данных 1С:УПП 1.3, размер которой превышает 700 Гб, является серьезной технической задачей. При таких объемах стандартные механизмы свертки могут работать крайне медленно или приводить к блокировкам. Рассмотрим пошагово, как реализовать процесс очистки регистра бухгалтерии, сохраняя целостность учетных данных.
Основная идея заключается в переносе остатков на дату свертки в документ Корректировка записей регистров с активностью Ложь (для обеспечения возможности проведения документов при необходимости) и последующей очистке движений за прошлые периоды. Важно понимать, что в РегистрБухгалтерии данные хранятся в нескольких физических таблицах, поэтому простое удаление записей из одной таблицы недопустимо.
Для корректной очистки необходимо воздействовать на две основные структуры: основную таблицу движений и таблицу субконто. Разберем пример реализации процедуры, которая позволяет программно «обрезать» записи в SQL:
Процедура ОчиститьРегистрБухгалтерииВSQL(ИмяРегистра, Дата2) Экспорт
ОбъектМетаданных = Метаданные.РегистрыБухгалтерии[ИмяРегистра];
МассивМД = Новый Массив;
МассивМД.Добавить(ОбъектМетаданных);
ТаблицаБД = ПолучитьСтруктуруХраненияБазыДанных(МассивМД, Истина);
// Очистка основной таблицы движений
ИмяТаблицы = ТаблицаБД.Найти("Основная", "Назначение").ИмяТаблицыХранения;
ОбрезатьТаблицуВSQL(ИмяТаблицы, ИмяРегистра, Дата2);
// Очистка таблицы субконто
ИмяТаблицы = ТаблицаБД.Найти("ЗначенияСубконто", "Назначение").ИмяТаблицыХранения;
ОбрезатьТаблицуВSQL(ИмяТаблицы, ИмяРегистра, Дата2);
КонецПроцедуры
Данная процедура опирается на метод ПолучитьСтруктуруХраненияБазыДанных, который позволяет определить точные имена таблиц в СУБД для конкретного объекта конфигурации. При выполнении Delete в SQL обязательно учитывайте следующие важные аспекты:
Пересчет итогов, чтобы актуализировать данные на дату свертки.Delete не уменьшает размер файла базы на диске. Чтобы вернуть пространство операционной системе, потребуется операция Shrink, которая также сильно фрагментирует индексы.При свертке регистра бухгалтерии часто забывают про сопутствующие структуры. Проанализируйте ситуацию с регистрами аналитики и накопления. Для таких конфигураций как УПП, где учет НДС и себестоимости реализован крайне сложно, свертка только одного РегистрБухгалтерии может привести к «разрыву» связей с регистрами накопления (например, СписанныеТовары или НДСПредъявленный). Рекомендуем очищать данные последовательно, начиная с самых «жирных» регистров, которые больше не несут оперативной ценности.
Рассмотрим дополнительные методы, которые помогут сделать базу более управляемой без радикальной «хирургии»:
Только чтение. Это самый безопасный способ сохранить историю и при этом существенно уменьшить размер рабочей базы.Реструктуризация таблиц (через конфигуратор) позволяет «уплотнить» данные эффективнее, чем ручная чистка, так как платформа сама пересоздает таблицы и переносит в них данные.В завершение работы обязательно сравните ОСВ (Оборотно-сальдовую ведомость) до и после процедуры. Любые отклонения в итоговых суммах на дату свертки сигнализируют об ошибке в логике переноса остатков или о нарушении структуры связей. Работайте аккуратно, всегда имейте под рукой актуальную резервную копию.