Работа с базами данных критического объема (от 1 ТБ и выше) в 1С:УПП требует особого подхода, особенно когда стоит задача не просто «свернуть» базу для работы, а подготовить легкую демонстрационную копию за последние 3–4 месяца. Рассмотрим пошагово, как проанализировать структуру данных, очистить лишнее и технически грамотно уменьшить размер файла базы данных.
Прежде чем приступать к удалению, разберем ситуацию: почему база весит так много? В 1С:УПП основную нагрузку на дисковое пространство часто создают не сами документы, а сопутствующая техническая информация. Выясним причину, используя специализированные обработки (например, с портала Инфостарт) или SQL-запросы, показывающие размер таблиц. Проанализируем самые тяжелые объекты:
_InfoRg (регистр сведений «Версии объектов») может занимать до половины объема всей базы.IMAGE или VARBINARY), это лавинообразно увеличивает размер файла .mdf.Разберем важный технический момент: массовое удаление данных из 1С порождает гигантский объем логов транзакций. Если база работает в режиме Full Recovery Model, ваш диск переполнится файлом .ldf еще до того, как вы закончите очистку. Перед началом работ выполним следующие действия:
Переведем базу в режим Simple. Это позволит SQL-серверу не накапливать историю каждой удаленной записи в логе. Также крайне важно выполнять все манипуляции только на копии базы, так как процесс удаления без проверки ссылочной целостности необратим.
Посмотрим на ситуацию со стороны джуна: стандартная свертка через Обработка.СверткаИнформационнойБазы на терабайтной базе может длиться неделями. Если нам нужна именно «демка», воспользуемся более агрессивными методами. Проанализируем алгоритм быстрого удаления:
Для очистки регистров накопления и сведений за периоды, предшествующие нашим 3–4 месяцам, эффективнее всего использовать запись пустого набора записей с установленным фильтром по периоду. Рассмотрим пример логики:
Набор = РегистрыНакопления.Продажи.СоздатьНаборЗаписей();
Набор.Отбор.Период.Установить(ДатаНачала, ДатаКонца);
Набор.Записать(); // Запись пустого набора очищает данные в указанном периоде
Если база нужна исключительно для ознакомления («посмотреть интерфейс»), можно прибегнуть к радикальному удалению документов до определенной даты без проверки ссылок. Это создаст «битые» ссылки в оставшихся объектах (вместо авторов или оснований будет написано «Объект не найден»), но база станет легкой и работоспособной для демо-показа.
Рассмотрим более чистый способ, который часто оказывается быстрее «резки» огромного массива. Вместо того чтобы удалять 90% данных из 1 ТБ, мы создадим новую пустую базу той же конфигурации и перенесем в нее только нужные 10% данных. Разберем шаги:
В этом случае система сама найдет все связанные справочники (контрагентов, номенклатуру, склады), которые фигурируют в этих документах, и перенесет только их. Проанализируем ситуацию: на выходе мы получим идеально чистую базу объемом в несколько гигабайт вместо терабайта «мусора».
Важно помнить: удаление данных внутри 1С или через SQL не уменьшает размер файла .mdf на диске автоматически. SQL-сервер просто помечает это место как свободное внутри файла (White space). Чтобы вернуть место операционной системе, выполним Shrink Database:
В консоли SQL Server Management Studio (SSMS) выберем базу, перейдем в Tasks — Shrink — Database. Это перестроит страницы данных и реально уменьшит размер файла на диске. Рассмотрим этот шаг как финальный аккорд технической части.
Поскольку вы готовите демонстрационную базу, проанализируем риски разглашения коммерческой тайны. Просто «порезать» базу недостаточно. Необходимо программно обработать конфиденциальную информацию. Разберем, что нужно сделать:
Итог: Создание демо-базы из 1 ТБ данных — это комплексная задача. Для джуниора оптимальным путем будет использование метода Выгрузки/Загрузки XML за период, так как это минимизирует риски работы с тяжелыми SQL-таблицами и гарантирует получение «живой» базы без лишнего технического мусора.