Вложения раздули базу 1С: находим тяжёлые файлы, удаляем и возвращаем место на диске
Содержание
Присоединенные файлы в 1С очищают в два хода: сначала помечают ненужные вложения на удаление (в карточке документа через «скрепку» или списком через Все функции), затем запускают Администрирование → Обслуживание → Удаление помеченных объектов. Место на диске после этого возвращается не само: файловую базу
нужно сжать, а у SQL-базы — ужать файл данных.
Частое заблуждение — «удалил вложения, значит база похудела». На деле файл 1Cv8.1CD или файл данных SQL Server остаётся прежнего размера. Освободившиеся страницы просто будут использованы заново. Чтобы очистить присоединенные файлы по-настоящему, нужно пройти весь путь: найти, удалить, сжать. Описание ниже — для типовых конфигураций на 8.3 с интерфейсом «Такси»: Бухгалтерия 3.0, ЗУП 3.1, УТ 11. Механизм работы с файлами у них общий.
Где 1С хранит вложения и как понять, что они раздули базу
Каждый скан, PDF или письмо, прикреплённое «скрепкой», хранится в одном из двух мест:
- 🗄️ в самой информационной базе — в служебных таблицах подсистемы работы с файлами. Это режим по умолчанию;
- 💽 в томах на диске — в обычных папках на сервере или в сетевой папке. В базе остаётся только ссылка и описание.
Режим хранения задаётся в настройках работы с файлами в разделе Администрирование → Общие настройки. Если там включено хранение в томах, база вложениями не раздувается — растёт папка тома.
Признаки того, что проблема именно во вложениях:
- 📈 база выросла на гигабайты, хотя документов за период немного;
- 📎 в организации принято прикладывать сканы первичных документов, договоров, фото;
- 📧 в базе работает почта, и письма загружаются вместе с вложениями;
- 🔄 входящие документы ЭДО тоже несут файлы — они хранятся в базе.
Как найти самые тяжёлые таблицы
В клиент-серверном варианте посмотрите размеры таблиц на стороне СУБД. Для MS SQL Server:
SELECT TOP 20
t.name AS table_name,
SUM(ps.reserved_page_count) * 8 / 1024 AS size_mb
FROM sys.dm_db_partition_stats ps
JOIN sys.tables t ON t.object_id = ps.object_id
GROUP BY t.name
ORDER BY size_mb DESC;
Для PostgreSQL:
SELECT relname AS table_name,
pg_size_pretty(pg_total_relation_size(relid)) AS total_size
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC
LIMIT 20;
Имена вида _Reference123 или _InfoRg456 ни о чём не говорят. Чтобы сопоставить их с объектами конфигурации, выполните в базе внешнюю обработку
с серверной процедурой:
&НаСервере
Процедура ПоказатьТаблицыФайловНаСервере()
Структура = ПолучитьСтруктуруХраненияБазыДанных(, Истина);
Для Каждого Строка Из Структура Цикл
Если СтрНайти(Строка.Метаданные, "Файл") > 0 Тогда
Сообщить(Строка.Метаданные + " = " + Строка.ИмяТаблицы);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Второй параметр Истина возвращает имена таблиц в СУБД. Сравните их со списком из запроса — станет видно, какой справочник присоединенных файлов занимает больше всего.
В файловой базе такого инструмента нет. Ориентир простой: размер 1Cv8.1CD в сравнении с выгрузкой .dt. Файлы внутри выгрузки сжаты слабо, поэтому раздутая вложениями база даёт и тяжёлую выгрузку.
Удаление вложений вручную из документов и списков
Для точечной чистки хватит обычного интерфейса.
Из карточки документа
- Откройте документ или элемент справочника.
- Нажмите кнопку со скрепкой — откроется список присоединенных файлов.
- Выделите лишний файл и нажмите
Del(или команду пометки на удаление в менюЕщё). - Подтвердите пометку. Файл получит красный крестик, но физически пока останется в базе.
Массово — через «Все функции»
Когда вложений тысячи, по документам ходить бессмысленно. Удобнее открыть сам справочник файлов.
- Включите команду: главное меню →
Сервис→Параметры→ флаг «Отображать команду “Все функции”». - Откройте
Все функции → Справочники. Найдите справочники, в имени которых есть «ПрисоединенныеФайлы» или «Файлы». - В списке через
Ещё → Изменить формуили настройку списка выведите колонки с размером, расширением и датой создания. - Отсортируйте по размеру или установите отбор по дате. Например, «все файлы старше 2019 года с расширением
.tif». - Выделите строки (
Shift+ клик илиCtrl+A) и пометьте их на удаление.
Чаще всего место съедают сканы в TIFF и BMP, фото с телефона по 5–8 МБ и вложения входящих писем. Начните с них — это даст 80% эффекта за минимум времени.
Окончательное удаление помеченных
Пометка не освобождает места. Нужен отдельный шаг:
- Откройте
Администрирование → Обслуживание → Удаление помеченных объектов. - Выберите режим удаления выбранных объектов и оставьте в списке только файлы, если хотите не задеть остальные помеченные данные.
- Запустите удаление. Программа проверит ссылки и удалит то, на что никто не ссылается.
Если файл лежал в томе на диске, вместе с записью удаляется и сам файл в папке тома.
Если файлы лежат в томах
Со временем в папке тома накапливаются «сироты» — файлы, на которые в базе уже нет записей. Они появляются после сбоев при записи, восстановления базы из старой копии или ручного копирования папок.
Найти их помогает проверка целостности тома. Список томов открывается из настроек работы с файлами в Администрирование → Общие настройки. В карточке тома запустите проверку: отчёт покажет файлы без записей в базе и записи без файлов на диске.
- 🧹 лишние файлы на диске можно удалить или перенести в архивную папку;
- ⚠️ записи без файлов не удаляйте сразу — сначала поищите файлы в резервной копии тома. Возможно, папку просто восстановили не полностью.
Регламентная очистка ненужных файлов и версий
В современных релизах типовых конфигураций есть встроенная очистка ненужных файлов. Она работает по правилам: например, удалять вложения определённого вида старше заданного срока. Ищите её в настройках работы с файлами в Администрирование → Общие настройки — там же задаётся расписание. Название ссылки может отличаться в зависимости от релиза.
Что стоит включить в правила:
- 🗂️ версии файлов. Если файл редактировали через 1С, каждая версия хранится отдельно. Документ на 3 МБ после 10 правок занимает 30 МБ;
- 📨 вложения писем старше нужного срока, если переписка дублируется в почтовой системе;
- 🖼️ временные и служебные файлы, которые приложили «на время».
Когда нужна внешняя обработка
Если встроенной очистки в релизе нет, а файлов десятки тысяч, используют внешнюю обработку. Правила выбора:
- обработка должна помечать на удаление, а не удалять напрямую. Тогда сработает контроль ссылок;
- проверьте её на копии базы и сравните, сколько записей помечено;
- берите обработки из понятных источников и смотрите код: удалить «всё подряд» в ней можно одной строкой.
Сжатие базы и команды администратора после чистки
Здесь начинается та часть, которую чаще всего пропускают.
Сжатие и перезагрузка выполняются только в монопольном режиме. Все пользователи должны выйти из базы — незавершённые сеансы будут прерваны. Планируйте на нерабочее время и сделайте свежую выгрузку .dt.
Файловая база
Вариант 1 — через Конфигуратор:
Администрирование → Тестирование и исправление.- Отметьте «Сжатие таблиц информационной базы». Остальные флаги без необходимости не трогайте.
- Нажмите «Выполнить».
Вариант 2 — выгрузка и загрузка: Администрирование → Выгрузить информационную базу, затем Загрузить информационную базу в новый пустой каталог. Это даёт наиболее компактный 1Cv8.1CD.
То же из командной строки — удобно для ночного задания:
set V8="C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe"
set IB="D:\Bases\Buh"
rem 1. Резервная выгрузка
%V8% DESIGNER /F %IB% /N "Администратор" /P "" /DumpIB "D:\Backup\buh.dt" /Out "D:\Backup\dump.log"
rem 2. Сжатие таблиц
%V8% DESIGNER /F %IB% /N "Администратор" /P "" /IBCheckAndRepair -IBCompression /Out "D:\Backup\compress.log"
Номер версии платформы в пути подставьте свой. Перед запуском убедитесь, что выгрузка из первого шага завершилась без ошибок — проверьте лог.
Клиент-серверная база
Удалённые средствами 1С записи освобождают страницы внутри базы, но файл данных не уменьшается.
- MS SQL Server —
DBCC SHRINKFILEдля файла данных. Операция долгая и даёт фрагментацию индексов, поэтому после неё перестройте индексы в плане обслуживания. - PostgreSQL — обычный
VACUUM(или autovacuum) делает место доступным для повторного использования. Вернуть его операционной системе может толькоVACUUM FULLпо конкретной таблице. Он блокирует таблицу полностью, так что пользователи в это время работать не смогут.
Перед работами заблокируйте начало сеансов в свойствах базы через консоль кластера и посмотрите активные сеансы: rac session list. Сеансы, которые вы завершите принудительно, потеряют несохранённые данные — предупредите людей заранее.
Чистка напрямую через SQL: почему это последний вариант
Удалить строки из таблицы файлов запросом DELETE технически можно. Но последствия неприятные:
| Что ломается | Почему |
|---|---|
| Битые ссылки | Документы и карточки продолжат ссылаться на несуществующие файлы |
| Версии и двоичные данные | Описание файла и его содержимое лежат в разных таблицах — легко удалить одно и оставить другое |
| Тома на диске | SQL не знает о папке тома, физические файлы останутся |
| Поддержка | Состояние базы перестаёт соответствовать тому, что ожидает платформа и конфигурация |
Прямые изменения данных в таблицах 1С в обход платформы — это риск получить базу, которую потом придётся чинить тестированием и исправлением. Используйте SQL только для чтения: найти тяжёлые таблицы, посчитать объём. Удаление — средствами 1С.
Разумная роль SQL в этой задаче — диагностика (запросы из первого раздела) и сжатие файлов после удаления.
Как сделать, чтобы база не росла снова
- 💽 Перенесите файлы в тома. Включите хранение в томах на диске в настройках работы с файлами, создайте том и запустите перенос существующих вложений из базы. База станет меньше, а резервные копии — быстрее. Папку тома при этом нужно бэкапить отдельно и синхронно с базой.
- 📏 Ограничьте размер файла. В настройках работы с файлами задаётся максимальный размер одного вложения. Разумный предел для сканов первички — 10–20 МБ.
- 🚫 Запретите лишние расширения. Там же есть список запрещённых расширений: исполняемые файлы, архивы с образами дисков, видео.
- 🖨️ Настройте сканеры. Скан страницы A4 в ч/б при 200–300 dpi в PDF занимает 50–200 КБ. Тот же лист в цветном TIFF — 5–25 МБ. Разница в сотни раз.
- 🕒 Включите регламентную очистку версий и ненужных файлов по расписанию.
Частые ошибки при очистке вложений
- ❌ Удалили сканы первичных документов. Первичку хранят не менее пяти лет после отчётного года. Если скан — единственный экземпляр, его удалять нельзя. Перенесите в том или в архив.
- ❌ Удалили файлы прямо из папки тома. В базе остаются записи без содержимого, пользователь при открытии получает ошибку. Удалять нужно только через 1С.
- ❌ Удалили, но не сжали. Размер базы не изменился, и кажется, что очистка не сработала.
- ❌ Бэкап тома и базы делают в разное время. После восстановления часть ссылок указывает на файлы, которых нет в копии тома.
- ❌ Удаление помеченных запустили на всю базу. Вместе с файлами ушли объекты, которые коллеги пометили «на подумать». Ограничьте выборку файлами.
Частые вопросы
Можно ли восстановить вложение после удаления помеченных?
Почему после чистки база файловая стала даже больше?
Сколько места реально освободится?
Если перенести файлы в тома, пользователи заметят разницу?
Можно ли чистить вложения, пока люди работают?
Источники
- Федеральный закон от 06.12.2011 № 402-ФЗ «О бухгалтерском учёте», статья 29