Как ускорить обрезку базы 1С 7.7 стандартной обработкой wrap.ert и избежать долгих пересчетов

Программист 1С v7.7 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

Процесс свертки (обрезки) старых периодов в 1С:Предприятие 7.7 часто превращается в многочасовое ожидание. Основная причина низкой скорости — штатный механизм удаления документов Документ.Удалить(), который при каждом действии инициирует пересчет бухгалтерских итогов за все последующие периоды. В этой статье мы разберем, как значительно ускорить этот процесс, используя технические хитрости и прямые запросы к базе данных.

Причина медленной работы: бухгалтерские итоги

Рассмотрим, почему стандартная обработка wrap.ert работает долго. Когда мы удаляем документ в «Бухгалтерии 7.7», система не просто стирает запись. Она проверяет движения документа и корректирует остатки в таблицах итогов. Если мы удаляем документ за 2014 год, а на календаре 2024-й, 1С попытается пересчитать итоги за каждый квартал в этом десятилетнем интервале. Умножьте это на тысячи документов, и вы получите процесс, который не завершится и за неделю.

Выясним, как «обмануть» систему и заставить её игнорировать пересчеты во время удаления.

Метод 1: Смещение расчетного периода итогов (самый простой способ)

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

  1. Переносим итоги назад: В режиме «Предприятие» перейдем в меню «Операции» — «Управление бухгалтерскими итогами». Установим расчетный период на самый ранний квартал, который есть в базе (например, 1 квартал 2000 года).
  2. Запускаем удаление: Теперь при удалении документов за 2014 год система не будет видеть «будущих» периодов относительно установленной точки, и пересчет итогов «вперед» выполняться не будет.
  3. Возвращаем итоги: После завершения работы wrap.ert вернем расчетный период на актуальную дату и выполним полный пересчет итогов.

Важно: Как отмечают опытные разработчики, этот прием позволяет ускорить штатную свертку в несколько раз, не прибегая к опасным манипуляциям с файлами.

Метод 2: Физическое удаление файлов итогов

Если база данных работает в формате DBF, мы можем применить более радикальный, но эффективный метод. Разберем его по шагам:

  1. Выполняем первый этап свертки — создание документов ввода остатков.
  2. Закрываем 1С и делаем резервную копию.
  3. В каталоге базы данных физически удаляем файлы, отвечающие за бухгалтерские итоги. Обычно это файлы 1SBKTTL.DBF и 1SBKTTLC.DBF (а также соответствующие им индексные файлы .CDX).
  4. Запускаем 1С в монопольном режиме. Система «поймет», что итогов нет.
  5. Выполняем удаление старых документов. Поскольку таблиц итогов нет или они пусты, удаление пройдет мгновенно.
  6. После завершения удаления заходим в «Управление бухгалтерскими итогами» и выполняем «Полный пересчет итогов».

Метод 3: Использование прямых запросов (Direct Queries)

Для тех, кто знаком с внешними компонентами (например, 1CPP.dll), оптимальным решением станет удаление записей напрямую из таблиц базы данных. Это исключает работу тяжелых объектных методов 1С. Посмотрим на логику процесса:

При использовании прямых запросов нам необходимо очистить данные в следующих таблицах:

Рассмотрим пример логики на языке 1С с использованием прямого запроса для пометки на удаление (для SQL версии):


// Пример упрощенной логики прямого запроса
ТекстЗапроса = "
|UPDATE _1SJOURN
|SET ISMARK = '*'
|WHERE DATE_TIME_IDDOC < '20150101'
|";
// Выполнение запроса через класс ТекстЗапроса компоненты 1CPP

После такого «массового» удаления или пометки необходимо обязательно пересчитать итоги и проверить ссылочную целостность. Помните, что при прямом удалении не срабатывает программный код в модулях документов (например, ПриУдалении), поэтому убедитесь, что вы не удаляете важные периодические реквизиты справочников.

Метод 4: Оптимизация системы и окружения

Посмотрим на технические факторы, которые могут тормозить процесс независимо от выбранного метода свертки:

Особенности свертки ОС и амортизации

Проанализируем важный нюанс, упомянутый экспертами. При обрезке бухгалтерской базы крайне не рекомендуется трогать документы, связанные с Основными Средствами (ОС). Это связано с тем, что расчет амортизации в 7.7 часто опирается на исторические данные документов ввода в эксплуатацию и модернизации. Если эти документы будут удалены, корректный расчет амортизации в будущем может нарушиться. Рекомендуется исключить счета ОС (например, 01, 02) из процесса свертки и оставить документы по ним нетронутыми.

Итоговый алгоритм действий для максимального ускорения

Суммируя все вышесказанное, составим оптимальный план совместной работы над базой:

  1. Создаем полную копию базы данных. Это обязательный шаг!
  2. В копии базы формируем документы ввода остатков штатной обработкой wrap.ert (только первый этап).
  3. Отключаем расчет бухгалтерских итогов (сдвигаем период в прошлое или удаляем файлы итогов).
  4. Отключаем журнал регистрации и антивирус.
  5. Запускаем удаление документов. Если используется wrap.ert, закомментируйте в ней строки, отвечающие за пересчет периодики справочников, если это допустимо в вашей конфигурации.
  6. После удаления выполняем физическое сжатие таблиц (Упаковка в «Тестировании и исправлении»), если работаем с DBF.
  7. Включаем расчет итогов и запускаем полный пересчет.
  8. Проверяем Оборотно-сальдовую ведомость (ОСВ) до и после свертки — данные на дату свертки должны совпадать до копейки.

Следуя этим инструкциям, вы сможете сократить время свертки с «целой ночи» до 10–20 минут даже на объемных базах.

← На главную