Процесс свертки (обрезки) старых периодов в 1С:Предприятие 7.7 часто превращается в многочасовое ожидание. Основная причина низкой скорости — штатный механизм удаления документов Документ.Удалить(), который при каждом действии инициирует пересчет бухгалтерских итогов за все последующие периоды. В этой статье мы разберем, как значительно ускорить этот процесс, используя технические хитрости и прямые запросы к базе данных.
Рассмотрим, почему стандартная обработка wrap.ert работает долго. Когда мы удаляем документ в «Бухгалтерии 7.7», система не просто стирает запись. Она проверяет движения документа и корректирует остатки в таблицах итогов. Если мы удаляем документ за 2014 год, а на календаре 2024-й, 1С попытается пересчитать итоги за каждый квартал в этом десятилетнем интервале. Умножьте это на тысячи документов, и вы получите процесс, который не завершится и за неделю.
Выясним, как «обмануть» систему и заставить её игнорировать пересчеты во время удаления.
Проанализируем самый доступный способ, не требующий написания сложного кода. Его суть заключается в том, чтобы временно перенести текущий расчетный период бухгалтерских итогов в далекое прошлое.
wrap.ert вернем расчетный период на актуальную дату и выполним полный пересчет итогов.Важно: Как отмечают опытные разработчики, этот прием позволяет ускорить штатную свертку в несколько раз, не прибегая к опасным манипуляциям с файлами.
Если база данных работает в формате DBF, мы можем применить более радикальный, но эффективный метод. Разберем его по шагам:
1SBKTTL.DBF и 1SBKTTLC.DBF (а также соответствующие им индексные файлы .CDX).Для тех, кто знаком с внешними компонентами (например, 1CPP.dll), оптимальным решением станет удаление записей напрямую из таблиц базы данных. Это исключает работу тяжелых объектных методов 1С. Посмотрим на логику процесса:
При использовании прямых запросов нам необходимо очистить данные в следующих таблицах:
1SJOURN — общий журнал документов (здесь хранятся заголовки).1SOPER — таблица операций.1SENTRY — таблица проводок.DH* и DT* — таблицы шапок и табличных частей конкретных видов документов.Рассмотрим пример логики на языке 1С с использованием прямого запроса для пометки на удаление (для SQL версии):
// Пример упрощенной логики прямого запроса
ТекстЗапроса = "
|UPDATE _1SJOURN
|SET ISMARK = '*'
|WHERE DATE_TIME_IDDOC < '20150101'
|";
// Выполнение запроса через класс ТекстЗапроса компоненты 1CPP
После такого «массового» удаления или пометки необходимо обязательно пересчитать итоги и проверить ссылочную целостность. Помните, что при прямом удалении не срабатывает программный код в модулях документов (например, ПриУдалении), поэтому убедитесь, что вы не удаляете важные периодические реквизиты справочников.
Посмотрим на технические факторы, которые могут тормозить процесс независимо от выбранного метода свертки:
1SYSLOG\links.tmp или аналогичные. Перед сверткой рекомендуется временно отключить логирование в Конфигураторе или просто переименовать папку SYSLOG, чтобы система не тратила ресурсы на запись логов..dbf файлов антивирус может блокировать таблицы для проверки, что замедляет процесс в 5-10 раз.hogik) помогает системе корректно распределять нагрузку.wrap.ert часто включена функция пересчета или очистки периодических реквизитов справочников. Если их очень много, это создает колоссальную нагрузку. Если история изменений не критична, закомментируйте этот блок в коде обработки.Проанализируем важный нюанс, упомянутый экспертами. При обрезке бухгалтерской базы крайне не рекомендуется трогать документы, связанные с Основными Средствами (ОС). Это связано с тем, что расчет амортизации в 7.7 часто опирается на исторические данные документов ввода в эксплуатацию и модернизации. Если эти документы будут удалены, корректный расчет амортизации в будущем может нарушиться. Рекомендуется исключить счета ОС (например, 01, 02) из процесса свертки и оставить документы по ним нетронутыми.
Суммируя все вышесказанное, составим оптимальный план совместной работы над базой:
wrap.ert (только первый этап).wrap.ert, закомментируйте в ней строки, отвечающие за пересчет периодики справочников, если это допустимо в вашей конфигурации.Следуя этим инструкциям, вы сможете сократить время свертки с «целой ночи» до 10–20 минут даже на объемных базах.