Уменьшаем базу 1С 8.3: удаляем старые периоды и лишние таблицы
Содержание
Обрезать базу 1С 8.3 — значит удалить документы и их движения за старые годы, оставив остатки на дату отсечения. В Бухгалтерии 3.0 для этого есть штатная обработка: Администрирование → Обслуживание → Корректировка данных → Свертка информационной базы. После неё файл базы сам по себе не уменьшится: место освобождает только тестирование со сжатием таблиц, выгрузка-загрузка .dt или обслуживание на стороне СУБД.
Частое заблуждение — что база «распухла от документов». На практике половину объёма нередко занимают не проводки, а журнал регистрации, история версий объектов, присоединённые файлы и забытые регистрации изменений для обменов. Поэтому сначала выясните, что именно весит, и только потом решайте, нужно ли удалять историю или хватит чистки служебных таблиц.
Что сделать до обрезки базы
Обрезка необратима: удалённые документы потом не восстановить ничем, кроме архивной копии. Поэтому подготовка занимает больше времени, чем сама операция.
Резервная копия и архив
Сделайте полную выгрузку базы до любых удалений. В Конфигураторе: Администрирование → Выгрузить информационную базу, файл .dt. Для клиент-серверной базы дополнительно сделайте полную резервную копию средствами СУБД.
Эту копию оставьте как архив «до свёртки». Если налоговая запросит документы за удалённый период, вы развернёте архив и сформируете из него нужные отчёты.
Срок хранения архива не короче срока хранения учётных документов: по закону о бухгалтерском учёте это не менее пяти лет после отчётного года. Храните .dt в двух местах, например на сервере и на внешнем диске, и подпишите файл датой свёртки и номером версии платформы. Файл .dt содержит и данные, и конфигурацию, а загружать его надёжнее платформой с номером не ниже той, на которой делали выгрузку.
Раз в год проверяйте, что архив разворачивается: загрузите .dt в пустую базу и откройте оборотно-сальдовую ведомость. Повреждённый архив обнаруживается обычно в самый неудобный момент.
Что проверить перед стартом
- 📅 Дата отсечения. Обычно это начало года, за который ещё могут быть вопросы. Налоговую проверку проводят за три года, предшествующих году решения о проверке, поэтому многие оставляют в рабочей базе последние 3–4 года.
- 🔒 Закрытый период. Все месяцы до даты отсечения должны быть закрыты, с выполненной процедурой закрытия месяца и выставленной датой запрета изменения.
- 💾 Свободное место. На диске нужно хотя бы вдвое больше свободного места, чем занимает база: обработка и выгрузка создают временные данные.
- 👥 Окно работ. На больших базах операция идёт часами. Планируйте её на выходные и предупредите пользователей, что база будет недоступна.
- 🧾 Нетиповые доработки. Если конфигурация доработана, штатная свёртка может не учитывать ваши регистры. Проверьте результат на копии.
Как понять, что занимает место
В файловой базе посмотрите размер файла 1Cv8.1CD и папки 1Cv8Log рядом с ним. Если журнал весит гигабайты, начните с него.
В клиент-серверной базе на MS SQL Server постройте в Management Studio отчёт Disk Usage by Top Tables. В 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;
Имена таблиц будут служебными (_AccRg1234, _InfoRg567). Чтобы понять, какому объекту 1С они соответствуют, используйте метод ПолучитьСтруктуруХраненияБазыДанных() во внешней обработке или консоли кода.
Свёртка базы 1С 8.3 штатной обработкой
Свёртка — главный способ удалить движения документов за прошлые годы, не трогая справочники.
Как работает свёртка
Обработка рассчитывает остатки по регистрам на дату свёртки и записывает их служебными документами. Затем документы до этой даты вместе с их движениями удаляются. Справочники, настройки учётной политики и пользователи остаются.
После свёртки отчёты за удалённый период покажут только итоговые остатки на дату отсечения. Оборотов и детализации по старым документам в рабочей базе больше не будет.
Пошагово в Бухгалтерии 3.0
- Разверните копию базы
из
.dtи сначала выполните свёртку на ней. - Запустите 1С в режиме Предприятия под пользователем с полными правами.
- Откройте
Администрирование → Обслуживание → Корректировка данных → Свертка информационной базы. - Укажите дату свёртки. Документы с датой раньше неё будут удалены.
- Запустите обработку и дождитесь завершения всех этапов. Не закрывайте программу, пока идёт процесс.
- Сверьте результат: оборотно-сальдовая ведомость на дату свёртки в копии и в архиве должна совпасть по всем счетам.
- Проверьте остатки по регистрам НДС, взаиморасчётов и партий, если вы их видите в отчётах.
- Только после сверки повторите операцию на рабочей базе или подмените рабочую базу проверенной копией.
Если в копии вы нашли расхождение, не правьте его вручную в рабочей базе. Разберитесь в причине на копии, исправьте исходные данные в архиве и повторите свёртку.
Если штатной свёртки нет
В других типовых конфигурациях похожая обработка есть не везде. Проверьте раздел Администрирование → Обслуживание: если команды свёртки там нет, используйте перенос остатков в новую базу из следующего раздела. Ручная пометка на удаление старых документов не заменит свёртку: остатки на дату отсечения при этом пропадут.
Обрезка через выгрузку и перенос в новую базу
Есть два разных приёма, которые часто называют «выгрузкой». Их легко перепутать.
| Метод | Что даёт | Когда применять | Риски |
|---|---|---|---|
Выгрузка и загрузка .dt | Пересобирает файл базы, освобождает пустое место | После удалений, для сжатия файловой базы | Почти нет, если .dt сохранён |
| Новая база + перенос справочников и остатков | Чистая база без истории | Свёртки нет, база сильно повреждена или доработана | Ошибки при переносе остатков |
| Штатная свёртка | Удаляет документы, сохраняет остатки | Есть обработка в конфигурации | Долго на больших базах |
Выгрузка и загрузка .dt
Этот способ сам ничего не удаляет. Зато после удаления документов или журнала он собирает базу заново, без пустых страниц внутри файла.
- Конфигуратор →
Администрирование → Выгрузить информационную базу. - Создайте новую пустую базу в списке баз.
- Откройте её в Конфигураторе:
Администрирование → Загрузить информационную базу, выберите.dt. - Проверьте, что база открывается и отчёты формируются, затем замените старую.
Для загрузки .dt нужен монопольный доступ к базе-приёмнику.
Новая база с переносом остатков
- Создайте пустую базу из шаблона той же конфигурации и того же релиза.
- Перенесите справочники: контрагентов, номенклатуру, сотрудников, договоры. Для этого подходит обработка
Выгрузка и загрузка данных XMLиз стандартных обработок. - Введите остатки на дату отсечения. В Бухгалтерии 3.0 это делает
Главное → Помощник ввода остатков. - Сверьте оборотно-сальдовую ведомость новой базы с остатками в старой.
Старая база остаётся архивом. Пользователи работают в новой с даты отсечения.
Чистка журнала регистрации и таблиц изменений
Эти служебные данные к учёту не относятся, но часто весят больше документов.
Журнал регистрации
В Конфигураторе откройте Администрирование → Настройка журнала регистрации. Там две полезные вещи:
- 🔧 Уровень регистрации. Для обычной работы достаточно «Регистрировать ошибки» или «Регистрировать ошибки и предупреждения». Режим «Регистрировать все события» быстро раздувает журнал.
- ✂️ Кнопка «Сократить». Удаляет записи раньше указанной даты. Перед удалением можно сохранить их в отдельный файл.
Журнал хранится в папке 1Cv8Log. У файловой базы она лежит рядом с 1Cv8.1CD. У серверной — в каталоге кластера, обычно srvinfo\reg_1541\<идентификатор базы>\1Cv8Log.
Не удаляйте файлы из 1Cv8Log вручную при работающих пользователях. Журнал станет нечитаемым. Сокращайте его штатной кнопкой.
Таблицы регистрации изменений
Если база когда-то обменивалась данными с другой базой, сайтом или мобильным приложением, каждое изменение объектов регистрируется для узла обмена. Когда обмен заброшен, а узел остался, эти записи копятся годами.
Что сделать:
- Откройте настройки синхронизации данных в разделе
Администрированиеи найдите неиспользуемые обмены. - Удалите настройку обмена с узлом, который больше не работает . Вместе с ней уйдут и регистрации.
- Если узел нужен, а регистрации лишние, очистите их программно для конкретного узла:
// Выполнять в привилегированном режиме, на копии сначала
Узел = ПланыОбмена.ОбменСайтом.НайтиПоКоду("001");
ПланыОбмена.УдалитьРегистрациюИзменений(Узел);
Имя плана обмена и код узла подставьте свои. После очистки обмен с этим узлом потребует полной повторной выгрузки.
История версий и файлы внутри базы
- 🗂️ Версии объектов. Если включено версионирование, каждое изменение документа сохраняет копию. В настройках истории изменений задайте срок хранения и удалите устаревшие версии.
- 📎 Присоединённые файлы. Сканы и вложения по умолчанию хранятся в самой базе. В общих настройках администрирования можно включить хранение файлов в томах на диске и перенести их туда.
Удаление ненайденных объектов и битых ссылок
После свёртки и переноса в базе остаются ссылки на объекты, которых уже нет. В формах они выглядят как <Объект не найден> (123:...).
Удаление помеченных объектов
Начните с Администрирование → Обслуживание → Удаление помеченных объектов. Программа удаляет только объекты, на которые нет ссылок, а остальные показывает списком с причиной. Если удаление не проходит, откройте объект из списка и уберите ссылку на него.
Тестирование и исправление
- Завершите сеансы всех пользователей: тестированию нужен монопольный доступ.
- Конфигуратор →
Администрирование → Тестирование и исправление. - Отметьте «Проверка логической целостности информационной базы» и «Проверка ссылочной целостности информационной базы».
- Выберите режим «Тестирование и исправление».
- Для ссылок на несуществующие объекты выберите «Очищать ссылки», если такие объекты точно не нужны. Вариант «Создавать объекты» создаст пустые элементы-заглушки, которые потом придётся разбирать.
Сначала запустите режим «Только тестирование» и прочитайте отчёт. Так вы увидите масштаб проблемы до того, как программа что-то изменит.
Сжатие таблиц и обслуживание СУБД после обрезки
Удаление записей освобождает место внутри файлов базы, но сами файлы на диске остаются прежнего размера.
Файловая база
В том же окне тестирования отметьте «Сжатие таблиц информационной базы». Это переписывает таблицы без пустых страниц и уменьшает 1Cv8.1CD. Альтернатива — выгрузка и загрузка .dt, описанная выше. Она обычно даёт такой же результат и заодно проверяет, что база выгружается без ошибок.
MS SQL Server
- Если модель восстановления
Full, сначала сделайте резервную копию журнала транзакций: иначе файл.ldfне уменьшится. - Перестройте индексы и обновите статистику планом обслуживания или вручную.
- Сожмите файл данных, только если место на диске действительно нужно:
USE [buh_base];
DBCC SHRINKFILE (N'buh_base', 0);
Имя базы и логическое имя файла подставьте свои. Сжатие фрагментирует индексы, поэтому после него снова перестройте индексы.
PostgreSQL
После массовых удалений выполните VACUUM FULL ANALYZE; для базы. Команда блокирует таблицы на время работы, поэтому запускайте её, когда пользователи не работают. Обычный VACUUM ANALYZE без FULL место на диске почти не возвращает, но и не блокирует.
Обслуживание СУБД на рабочей базе выполняйте вне рабочих часов. Длинные операции тормозят или блокируют сеансы пользователей 1С.
Пересчёт итогов
После свёртки и сжатия пересчитайте итоги: в окне тестирования отметьте «Пересчёт итогов». Это убирает расхождения между остатками в отчётах и движениями.
Когда обрезать базу не нужно
Свёртка решает проблему объёма, но не скорости в любом случае. Не делайте её, если:
- ⏳ медленно открывается одна форма или отчёт: причина обычно в запросе или настройках, а не в истории;
- 📉 база весит меньше 10–20 ГБ и диск не переполнен: выигрыш будет небольшим;
- 🧮 вы не можете закрыть старые периоды: свёртка зафиксирует ошибки в остатках;
- 🔄 тормозит сервер целиком: сначала проверьте память, диск и обслуживание СУБД.
Вопросы про обрезку базы 1С
Можно ли обрезать базу, не выгоняя пользователей?
.dt требуют монопольного доступа.Сколько лет хранить в рабочей базе?
Уменьшится ли база после удаления помеченных объектов?
Ускорит ли обрезка работу 1С?
Можно ли отменить свёртку?
Источники
- Налоговый кодекс РФ, ст. 89
- Федеральный закон от 06.12.2011 № 402-ФЗ «О бухгалтерском учете», ст. 29