Генератор SQL-скрипта очистки тестовой базы 1С:ERP - освобождаем ~30% места
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Зачем это нужно
Копии боевой базы для разработки и тестирования быстро «тяжелеют». Значительная часть объёма - не бизнес-данные, а служебные таблицы:
| Группа | Что внутри |
|---|---|
| Замеры | ЗамерыВремени, ЗамерыВремениТехнологические, ЗамерыСтатистики |
| Почта и взаимодействия | уведомления, электронные письма, вложения, контакты взаимодействий |
| Сообщения системы | СообщенияСистемы |
| Адресный классификатор (ФИАС) | дома, земельные участки, адресные объекты, иерархии и др. |
| Версионирование | ВерсииОбъектов (БСП) и платформенная история данных (_DataHistory*) |

На тестовой базе эти данные обычно не нужны, а места занимают много. В нашем случае после очистки удалось освободить около 30% объёма данных базы (результат зависит от вашей копии: у кого история данных и замеры разрослись сильнее, эффект больше).
Имена физических таблиц SQL (_InfoRg87542, _Document2059 и т.д.) отличаются от базы к базе. Править скрипт вручную неудобно - для этого и сделана обработка: она берёт имена из ПолучитьСтруктуруХраненияБазыДанных() текущей базы, в которой открыта.
Для кого
- Разработчики и тестировщики 1С:ERP / ERP УХ;
- администраторы тестовых и промежуточных стендов (MS SQL Server).
Что делает обработка
- Собирает список SQL-таблиц по фиксированному набору служебных объектов (основные, табличные части, таблицы регистрации изменений).
- Добавляет таблицы платформенной истории данных (версии, «последние версии», очереди).
- Показывает всё в таблице с галками. По умолчанию включены все строки.
- Формирует текст SQL-скрипта:
USE, контроль количества строк до очистки, транзакция сTRUNCATE TABLE, контроль после, подсказка поDBCC SHRINKDATABASE.
Обработка ничего не выполняет в SQL и не изменяет данные в 1С - только генерирует текст. Запуск скрипта - в SQL Server Management Studio (или sqlcmd) осознанно, вручную.
Как пользоваться
- Сделайте резервную копию базы и убедитесь, что это тестовая/копия, а не боевая база.
- Откройте обработку в той базе 1С, которую будете чистить: Файл → Открыть → выберите
.epf(либо подключите как дополнительную обработку БСП). - Проверьте поле «Имя SQL-базы» (подставляется из строки соединения; при необходимости исправьте - это имя базы в SQL Server).
- В таблице снимите галки с тех таблиц, которые чистить не нужно. Кнопки «Установить флажки» / «Снять флажки» отмечают все строки сразу.
- Нажмите «Сформировать скрипт» и скопируйте текст из нижнего поля.
- Завершите сеансы 1С к этой базе (желательно) и выполните скрипт в SSMS на нужном сервере.
- При необходимости после очистки выполните
DBCC SHRINKDATABASE(закомментирован в конце скрипта), чтобы вернуть место файловой системе.
Кнопка «Обновить список» перечитывает структуру хранения (например, после обновления конфигурации).

Пример фрагмента сгенерированного скрипта
USE [MyTestDB];
GO
SET NOCOUNT ON;
SET XACT_ABORT ON;
GO
BEGIN TRANSACTION;
GO
-- РегистрСведений.ЗамерыВремени
TRUNCATE TABLE dbo._InfoRgChngR87558; -- РегистрацияИзменений
TRUNCATE TABLE dbo._InfoRg87542; -- Основная
-- платформа:ИсторияДанных
TRUNCATE TABLE dbo._DataHistoryVersions; -- ВерсииИсторииДанных
GO
COMMIT TRANSACTION;
PRINT N'CLEANUP OK';
GO
Про таблицы индексов
Отдельных SQL-таблиц «только под индексы» в клиент-серверном режиме 1С нет: индексы - это индексы СУБД на тех же таблицах данных. TRUNCATE TABLE освобождает и данные, и страницы индексов этой таблицы. Отдельно «чистить индексы» не требуется.
Что не очищается
В скрипт намеренно не попадают настройки:
НастройкиВерсионированияОбъектов;- платформенные
НастройкиИсторииДанныхиМетаданныеИсторииДанных.
То есть после очистки версионирование и история данных остаются настроенными - просто «обнуляются» накопленные версии и очереди.
Последствия очистки (читайте до запуска)
TRUNCATEнеобратим без восстановления из backup.- После очистки ФИАС подсказки адресов в контактной информации не работают, пока снова не загрузите классификатор.
- Пропадают письма и связанные взаимодействия из выбранных таблиц.
- Пропадают накопленные версии объектов и история данных (отчёты «История изменений» и т.п. будут пустыми по прошлому периоду).
- Используйте только на тестовых базах и копиях. На боевой базе - не применять.
Техническая информация
| Параметр | Значение |
|---|---|
| Конфигурация (тестировалось) | 1С:ERP. Управление холдингом (ERP УХ), релиз 3.2.12.9 |
| Платформа | 1С:Предприятие 8.3.27.2214 |
| СУБД | Microsoft SQL Server (клиент-серверная ИБ; в тесте - SQL Server 2019) |
| Режим | Внешняя обработка (.epf), управляемая форма; опционально - дополнительная обработка БСП |
| Выполнение SQL | Только вручную, вне 1С |
| Исходный код | Открыт: модуль объекта и модуль формы |
Проверено на локальной копии базы: список таблиц формируется по структуре хранения, скрипт содержит ожидаемые TRUNCATE; при снятии галки соответствующая таблица пропадает из текста.
Другие релизы ERP / УХ и платформы 8.3 выше 8.3.15 должны работать (используется стандартный метод ПолучитьСтруктуруХраненияБазыДанных), но отдельно не тестировались. Набор объектов (регистры замеров, ФИАС, почта) должен существовать в конфигурации; отсутствующие объекты пропускаются.
Ограничения
- Только MS SQL Server (синтаксис
TRUNCATE/sys.tables/DBCC). Для PostgreSQL скрипт потребует доработки. - Фиксированный набор «служебных» объектов; свои таблицы нужно добавлять в код обработки.
- Нужны права на выполнение скрипта в СУБД - они не относятся к 1С.
Проверено на следующих конфигурациях и релизах:
- 1С:Управление холдингом 3.2 (русский и английский интерфейсы), релизы 3.2.11.20
Вступайте в нашу телеграмм-группу Инфостарт