Уменьшаем базу 1С 8.3: удаляем старые периоды и лишние таблицы

· 9 мин

Содержание

Обрезать базу 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

  1. Разверните копию базы из .dt и сначала выполните свёртку на ней.
  2. Запустите 1С в режиме Предприятия под пользователем с полными правами.
  3. Откройте Администрирование → Обслуживание → Корректировка данных → Свертка информационной базы.
  4. Укажите дату свёртки. Документы с датой раньше неё будут удалены.
  5. Запустите обработку и дождитесь завершения всех этапов. Не закрывайте программу, пока идёт процесс.
  6. Сверьте результат: оборотно-сальдовая ведомость на дату свёртки в копии и в архиве должна совпасть по всем счетам.
  7. Проверьте остатки по регистрам НДС, взаиморасчётов и партий, если вы их видите в отчётах.
  8. Только после сверки повторите операцию на рабочей базе или подмените рабочую базу проверенной копией.

Если в копии вы нашли расхождение, не правьте его вручную в рабочей базе. Разберитесь в причине на копии, исправьте исходные данные в архиве и повторите свёртку.

Если штатной свёртки нет

В других типовых конфигурациях похожая обработка есть не везде. Проверьте раздел Администрирование → Обслуживание: если команды свёртки там нет, используйте перенос остатков в новую базу из следующего раздела. Ручная пометка на удаление старых документов не заменит свёртку: остатки на дату отсечения при этом пропадут.

Обрезка через выгрузку и перенос в новую базу

Есть два разных приёма, которые часто называют «выгрузкой». Их легко перепутать.

МетодЧто даётКогда применятьРиски
Выгрузка и загрузка .dtПересобирает файл базы, освобождает пустое местоПосле удалений, для сжатия файловой базыПочти нет, если .dt сохранён
Новая база + перенос справочников и остатковЧистая база без историиСвёртки нет, база сильно повреждена или доработанаОшибки при переносе остатков
Штатная свёрткаУдаляет документы, сохраняет остаткиЕсть обработка в конфигурацииДолго на больших базах

Выгрузка и загрузка .dt

Этот способ сам ничего не удаляет. Зато после удаления документов или журнала он собирает базу заново, без пустых страниц внутри файла.

  1. Конфигуратор → Администрирование → Выгрузить информационную базу.
  2. Создайте новую пустую базу в списке баз.
  3. Откройте её в Конфигураторе: Администрирование → Загрузить информационную базу, выберите .dt.
  4. Проверьте, что база открывается и отчёты формируются, затем замените старую.

Для загрузки .dt нужен монопольный доступ к базе-приёмнику.

Новая база с переносом остатков

  1. Создайте пустую базу из шаблона той же конфигурации и того же релиза.
  2. Перенесите справочники: контрагентов, номенклатуру, сотрудников, договоры. Для этого подходит обработка Выгрузка и загрузка данных XML из стандартных обработок.
  3. Введите остатки на дату отсечения. В Бухгалтерии 3.0 это делает Главное → Помощник ввода остатков.
  4. Сверьте оборотно-сальдовую ведомость новой базы с остатками в старой.

Старая база остаётся архивом. Пользователи работают в новой с даты отсечения.

Чистка журнала регистрации и таблиц изменений

Эти служебные данные к учёту не относятся, но часто весят больше документов.

Журнал регистрации

В Конфигураторе откройте Администрирование → Настройка журнала регистрации. Там две полезные вещи:

  • 🔧 Уровень регистрации. Для обычной работы достаточно «Регистрировать ошибки» или «Регистрировать ошибки и предупреждения». Режим «Регистрировать все события» быстро раздувает журнал.
  • ✂️ Кнопка «Сократить». Удаляет записи раньше указанной даты. Перед удалением можно сохранить их в отдельный файл.

Журнал хранится в папке 1Cv8Log. У файловой базы она лежит рядом с 1Cv8.1CD. У серверной — в каталоге кластера, обычно srvinfo\reg_1541\<идентификатор базы>\1Cv8Log.

Не удаляйте файлы из 1Cv8Log вручную при работающих пользователях. Журнал станет нечитаемым. Сокращайте его штатной кнопкой.

Таблицы регистрации изменений

Если база когда-то обменивалась данными с другой базой, сайтом или мобильным приложением, каждое изменение объектов регистрируется для узла обмена. Когда обмен заброшен, а узел остался, эти записи копятся годами.

Что сделать:

  1. Откройте настройки синхронизации данных в разделе Администрирование и найдите неиспользуемые обмены.
  2. Удалите настройку обмена с узлом, который больше не работает . Вместе с ней уйдут и регистрации.
  3. Если узел нужен, а регистрации лишние, очистите их программно для конкретного узла:
// Выполнять в привилегированном режиме, на копии сначала
Узел = ПланыОбмена.ОбменСайтом.НайтиПоКоду("001");
ПланыОбмена.УдалитьРегистрациюИзменений(Узел);

Имя плана обмена и код узла подставьте свои. После очистки обмен с этим узлом потребует полной повторной выгрузки.

История версий и файлы внутри базы

  • 🗂️ Версии объектов. Если включено версионирование, каждое изменение документа сохраняет копию. В настройках истории изменений задайте срок хранения и удалите устаревшие версии.
  • 📎 Присоединённые файлы. Сканы и вложения по умолчанию хранятся в самой базе. В общих настройках администрирования можно включить хранение файлов в томах на диске и перенести их туда.

Удаление ненайденных объектов и битых ссылок

После свёртки и переноса в базе остаются ссылки на объекты, которых уже нет. В формах они выглядят как <Объект не найден> (123:...).

Удаление помеченных объектов

Начните с Администрирование → Обслуживание → Удаление помеченных объектов. Программа удаляет только объекты, на которые нет ссылок, а остальные показывает списком с причиной. Если удаление не проходит, откройте объект из списка и уберите ссылку на него.

Тестирование и исправление

  1. Завершите сеансы всех пользователей: тестированию нужен монопольный доступ.
  2. Конфигуратор → Администрирование → Тестирование и исправление.
  3. Отметьте «Проверка логической целостности информационной базы» и «Проверка ссылочной целостности информационной базы».
  4. Выберите режим «Тестирование и исправление».
  5. Для ссылок на несуществующие объекты выберите «Очищать ссылки», если такие объекты точно не нужны. Вариант «Создавать объекты» создаст пустые элементы-заглушки, которые потом придётся разбирать.

Сначала запустите режим «Только тестирование» и прочитайте отчёт. Так вы увидите масштаб проблемы до того, как программа что-то изменит.

Сжатие таблиц и обслуживание СУБД после обрезки

Удаление записей освобождает место внутри файлов базы, но сами файлы на диске остаются прежнего размера.

Файловая база

В том же окне тестирования отметьте «Сжатие таблиц информационной базы». Это переписывает таблицы без пустых страниц и уменьшает 1Cv8.1CD. Альтернатива — выгрузка и загрузка .dt, описанная выше. Она обычно даёт такой же результат и заодно проверяет, что база выгружается без ошибок.

MS SQL Server

  1. Если модель восстановления Full, сначала сделайте резервную копию журнала транзакций: иначе файл .ldf не уменьшится.
  2. Перестройте индексы и обновите статистику планом обслуживания или вручную.
  3. Сожмите файл данных, только если место на диске действительно нужно:
USE [buh_base];
DBCC SHRINKFILE (N'buh_base', 0);

Имя базы и логическое имя файла подставьте свои. Сжатие фрагментирует индексы, поэтому после него снова перестройте индексы.

PostgreSQL

После массовых удалений выполните VACUUM FULL ANALYZE; для базы. Команда блокирует таблицы на время работы, поэтому запускайте её, когда пользователи не работают. Обычный VACUUM ANALYZE без FULL место на диске почти не возвращает, но и не блокирует.

Обслуживание СУБД на рабочей базе выполняйте вне рабочих часов. Длинные операции тормозят или блокируют сеансы пользователей 1С.

Пересчёт итогов

После свёртки и сжатия пересчитайте итоги: в окне тестирования отметьте «Пересчёт итогов». Это убирает расхождения между остатками в отчётах и движениями.

Когда обрезать базу не нужно

Свёртка решает проблему объёма, но не скорости в любом случае. Не делайте её, если:

  • ⏳ медленно открывается одна форма или отчёт: причина обычно в запросе или настройках, а не в истории;
  • 📉 база весит меньше 10–20 ГБ и диск не переполнен: выигрыш будет небольшим;
  • 🧮 вы не можете закрыть старые периоды: свёртка зафиксирует ошибки в остатках;
  • 🔄 тормозит сервер целиком: сначала проверьте память, диск и обслуживание СУБД.
Порядок работ по обрезке базы
Выполнено: 0 / 9

Вопросы про обрезку базы 1С

Можно ли обрезать базу, не выгоняя пользователей?
Свёртку на рабочей базе лучше делать без пользователей. Тестирование, сжатие таблиц и загрузка .dt требуют монопольного доступа.
Сколько лет хранить в рабочей базе?
Обычно оставляют три–четыре последних года: это охватывает срок выездной налоговой проверки. Более старые данные храните в архивной копии.
Уменьшится ли база после удаления помеченных объектов?
Файл на диске не уменьшится. Нужно сжатие таблиц для файловой базы или обслуживание СУБД для серверной.
Ускорит ли обрезка работу 1С?
Ускорит отчёты и запросы по остаткам и оборотам, где таблиц много. Если тормозит открытие форм или обмен, причина в другом.
Можно ли отменить свёртку?
Нет. Вернуть удалённые документы можно только из архивной копии, сделанной до свёртки.

Источники

  • Налоговый кодекс РФ, ст. 89
  • Федеральный закон от 06.12.2011 № 402-ФЗ «О бухгалтерском учете», ст. 29