Как правильно выполнить свертку (обрезание) базы 1С 7.7: пошаговое руководство

Программист 1С v7.7 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Проблема роста объема базы DBF в 1С:Предприятие 7.7 рано или поздно встает перед каждым администратором или программистом, работающим с давно функционирующими системами. Когда объем регистров RA и RG становится критическим, возникает необходимость проведения свертки (часто называемой «обрезанием»). Давайте разберем, как выполнить эту процедуру безопасно и эффективно, сохранив работоспособность доработанной конфигурации.

Этап 1: Подготовка базы

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

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

Этап 2: Выбор метода свертки

Существует несколько подходов к решению задачи. Рассмотрим наиболее надежные из них.

Метод А: Использование документа «Универсальный двигатель регистров»

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

Рассмотрим структуру такого решения:

  1. Внедряем в конфигурацию универсальный документ, который не имеет жестко заданных реквизитов, но может заполняться движениями по любому из регистров.
  2. На дату свертки (обычно конец года) формируем движения этого документа, соответствующие остаткам по всем регистрам.
  3. После проведения свертки старые документы помечаются на удаление.

Преимущество метода заключается в том, что вам не нужно переписывать модули проведения. Достаточно реализовать Заполнение документа остатками и логику Проведения, которая просто повторяет движения по регистрам.


// Пример логики проведения универсального документа
Процедура ОбработкаПроведения()
    // Проходим по строкам документа, в которых хранятся остатки
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
        Регистр.ОстаткиТМЦ.Товар = Товар;
        Регистр.ОстаткиТМЦ.Склад = Склад;
        Регистр.ОстаткиТМЦ.Количество = Количество;
        Регистр.ОстаткиТМЦ.ТекущийДокумент = ТекущийДокумент();
        Регистр.ОстаткиТМЦ.ДвижениеПриходВыполнить();
    КонецЦикла;
КонецПроцедуры

Метод Б: Выгрузка и загрузка остатков через внешние обработки

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

  1. Пишем внешнюю обработку, которая выгружает остатки номенклатуры и взаиморасчеты в DBF или XML файл.
  2. Очищаем таблицы документов DH и DT, а также файлы RA и RG.
  3. Выполняем «Тестирование и исправление» (ТИИ) с настройкой Очистка битых ссылок.
  4. Загружаем остатки обратно в новую базу с помощью документа Ввод остатков.
  5. Загружаем необходимые документы за последний период (например, за последний месяц) для сохранения оперативной истории.

Важные рекомендации при работе с 7.7

Помните о следующих нюансах, чтобы база не «посыпалась»:

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

← На главную