Как очистить базу 1С:Розница от устаревших данных

· 10 мин

Содержание

Удалить документ в 1С:Розница напрямую нельзя. Сначала объект помечают на удаление, а физически его убирает обработка Удаление помеченных объектов — она же проверяет, не ссылаются ли на него другие документы. Это главный и безопасный способ очистить базу от устаревших данных.

Кроме старых документов и справочников место в базе занимают ещё три вещи: журнал регистрации, история изменений объектов и неоптимизированные таблицы. Разберём каждый источник — от самого безопасного действия к тем, что делаются в конфигураторе и требуют остановки работы кассиров.

Способов очистки, по сути, несколько: пометка и удаление помеченных объектов в режиме предприятия, то же действие на расписании, удаление и реструктуризация через конфигуратор, сокращение журнала регистрации и чистка истории изменений. Какой нужен именно вам — зависит от того, что распухло: сами документы, служебные журналы или файл базы на диске.

Любая чистка — необратимая операция. Перед началом обязательно сделайте резервную копию базы. Без неё ошибочно удалённые данные не вернуть.

Что сделать до начала: копия и монопольный режим

Очистка почти всегда идёт в монопольном режиме — то есть в базе не должно быть активных сеансов. Удаление помеченных объектов формально работает и при других подключениях, но часть объектов тогда не удалится (они окажутся заняты). Тестирование и исправление в конфигураторе требует монополии жёстко.

Поэтому первым делом предупредите кассиров и закройте РМК. Если очистку запустить в рабочее время, у пользователей оборвутся сеансы и продажи встанут. Планируйте работу на вечер или выходной.

Перед очисткой базы
Выполнено: 0 / 1

Резервную копию файловой базы проще всего снять через конфигуратор: Администрирование → Выгрузить информационную базу — получите файл .dt. Для клиент-серверной базы копию делают средствами СУБД (резервная копия SQL Server или PostgreSQL).

В небольшой файловой базе достаточно просто скопировать файл 1Cv8.1CD из каталога базы, предварительно закрыв все сеансы.

Отдельно определите границу периода. Удалять есть смысл данные за годы, по которым уже сдана отчётность и закрыты все смены. Возьмите запас: не трогайте последние 2–3 года, даже если кажется, что данные не нужны, — к ним ещё могут обратиться при сверках и возвратах.

Если база работает в распределённом варианте (РИБ по магазинам — частый случай в Рознице), учитывайте порядок обмена. Удаление в периферийном узле без правильной настройки приведёт к тому, что объекты вернутся при следующей синхронизации. Чистку в РИБ запускают в главном узле и дают данным разойтись по магазинам обменом.

Как удалить документы и справочники: пометка и обработка

Базовая чистка идёт в два приёма.

1. Пометьте объекты на удаление. Откройте список документов, выделите ненужные (мышью с Ctrl/Shift или выделить всё в списке) и в командной панели списка выберите команду пометки на удаление. Помеченный объект отображается с перечёркнутым значком — физически он остаётся в базе.

Чтобы не искать документы по одному, отберите их по дате: откройте нужный журнал, настройте отбор по периоду и пометьте весь отобранный список разом. Какие документы в Рознице обычно убирают первыми:

  • 🗂️ чеки ККМ и отчёты о розничных продажах за закрытые годы — их всегда больше всего;
  • 🗂️ старые приходные накладные, перемещения и списания товаров;
  • 🗂️ закрытые заказы поставщикам и заказы клиентов;
  • 🗂️ отработанные инвентаризации и пересчёты товаров;
  • 🗂️ неактуальную номенклатуру и контрагентов, по которым давно нет движений.

Удаляйте сверху вниз — от документов к справочникам. Пока на номенклатуру или контрагента ссылается хотя бы один непомеченный документ, справочник не удалится, поэтому справочники чистятся последними, когда документы-ссылки уже убраны.

Чеки, поступления, перемещения и списания — это движения по регистрам. Готовой свёртки с вводом начальных остатков в Рознице нет, поэтому массовое удаление движенческих документов пересчитает остатки «с нуля». Если удаляете движения, сначала введите начальные остатки на дату отсечки документом оприходования — тогда текущие остатки сохранятся. Проще всего чистить то, что на остатки и отчётность уже не влияет.

2. Запустите удаление. Откройте Администрирование → Обслуживание и найдите команду Удаление помеченных объектов. Обработка проверит ссылочную целостность: если на помеченный объект ссылается другой непомеченный документ, удаление по нему не пройдёт, а в отчёте вы увидите, кто мешает.

Что это значит на практике:

  • 🔗 нельзя удалить номенклатуру, если по ней есть непомеченные продажи или остатки;
  • 🔗 нельзя удалить контрагента , пока на него ссылаются действующие документы;
  • 🔗 чтобы убрать цепочку, пометьте на удаление все связанные документы сразу.

Обработка предложит два режима: автоматическое удаление (убирает всё, что можно, и показывает, что помешало) и выборочное, где вы сами решаете по каждому конфликту. Для первой чистки удобнее автоматический: он покажет полную картину связей.

Когда обработка выводит список «не удалено, есть ссылки», не бросайте его. По каждой строке видно, какой документ держит объект. Откройте этот документ прямо из отчёта двойным щелчком: либо он тоже устарел — тогда пометьте на удаление и его, либо он действующий — и объект удалять нельзя. Повторите удаление помеченных ещё раз после того, как снимете все лишние ссылки: обычно хватает двух-трёх проходов, чтобы вычистить связанные цепочки.

Удаление большого объёма чеков и движений по кассе может идти долго — от десятков минут до нескольких часов. Не прерывайте процесс принудительно.

Автоматическое удаление: регламентное задание

Чтобы не чистить базу вручную каждый раз, удаление помеченных объектов можно поставить на расписание. Откройте Администрирование → Обслуживание и найдите список регламентных и фоновых заданий. Среди них есть задание удаления помеченных объектов — задайте ему расписание (например, раз в неделю ночью).

Так помеченные объекты будут убираться сами, без участия администратора. Подходит для баз, где кассиры регулярно помечают ошибочные чеки и возвраты. Единственный нюанс — автоматическое удаление идёт в неполном (неэксклюзивном) режиме, поэтому объекты с активными ссылками оно пропустит и попробует снова в следующий раз. Это нормально: такие объекты либо удалятся позже, либо вы разберёте их вручную.

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

Отдельно в типовых конфигурациях на базе стандартных подсистем есть регламентное задание очистки устаревших данных — оно убирает технические записи (кэш, временные данные, старые уведомления), а не ваши документы. Его трогать не нужно, оно работает по умолчанию.

Очистка через конфигуратор для администраторов

Если в режиме предприятия удаление помеченных недоступно (не хватает прав) или нужно почистить базу перед передачей, воспользуйтесь конфигуратором.

  1. Завершите все сеансы и откройте базу в конфигураторе.
  2. Меню Администрирование → Удаление помеченных объектов. Механизм тот же, что в предприятии, но работает в монопольном режиме и обычно быстрее.
  3. Для файловой базы после удаления запустите Администрирование → Тестирование и исправление.

В окне тестирования и исправления для задачи чистки важны два флага:

  • Реструктуризация таблиц информационной базы — физически пересобирает таблицы и возвращает свободное место на диск. После массового удаления файл 1Cv8.1CD без реструктуризации не уменьшится.
  • Пересчёт итогов — приводит в порядок итоги регистров после удаления движений.

Остальные проверки в этом окне — реиндексация таблиц, контроль логической и ссылочной целостности — к удалению данных прямого отношения не имеют, но запускать их заодно полезно: они находят и чинят мелкие сбои, которые накопились за годы. Для режима работы с найденными ошибками оставьте вариант, который предлагает исправление, а не только проверку.

Тестирование и исправление требует монопольного доступа и может идти долго на большой базе. Запускайте только с актуальной резервной копией и в окно, когда никто не работает.

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

Часто база «распухает» не из-за документов, а из-за служебных данных.

Журнал регистрации хранит все действия пользователей. В файловой базе это файл 1Cv8.lgd рядом с базой, он может весить гигабайты. Сократить журнал надёжнее всего из конфигуратора: Администрирование → Настройка журнала регистрации. Там задаётся период хранения и есть команда сокращения — можно удалить записи старше выбранной даты. Перед сокращением при необходимости выгрузите старые записи в файл.

История изменений (версионирование объектов) хранит прежние версии документов и справочников, если эта возможность включена. Каждая правка документа добавляет ещё одну сохранённую копию, и за годы работы версий накапливаются сотни тысяч. Если база ведёт историю, старые версии чистит отдельное регламентное задание очистки устаревших версий — проверьте в списке заданий Администрирование → Обслуживание. Можно также ограничить срок хранения версий в настройках, чтобы история не копилась бесконечно.

Эти два источника дают основной прирост размера в старых базах, где документов немного, а файл всё равно большой. Если файл базы вырос до нескольких гигабайт, а документов в журналах заметно меньше, чем кажется по размеру, почти наверняка «виноваты» именно журнал регистрации и история изменений — начните чистку с них, это быстро и безопасно.

Как ускорить базу после очистки

Удаление данных само по себе базу не ускоряет — наоборот, после массового удаления итоги и индексы могут быть «разрыхлены». Приведите базу в порядок:

  • 🚀 Файловая база — Тестирование и исправление в конфигураторе с флагами реструктуризации таблиц и пересчёта итогов. Это одновременно сожмёт файл и пересчитает регистры.
  • 🚀 Клиент-серверная база — обслуживание на стороне СУБД: переиндексация и обновление статистики таблиц. Это задача администратора сервера, в 1С она не делается.
  • 🚀 Пересчёт итогов после удаления движений по регистрам накопления и бухгалтерии — через то же тестирование и исправление.

Регулярная чистка помеченных объектов плюс пересчёт итогов раз в месяц держат базу в тонусе лучше, чем редкая «генеральная уборка» раз в год.

После оптимизации сравните размер базы и скорость открытия отчётов — если файл не уменьшился, значит реструктуризация таблиц не выполнялась.

Если файловая база заметно выросла и тормозит даже после чистки, это сигнал к переходу на клиент-серверный вариант. Файловая 1С:Розница комфортно работает примерно до нескольких гигабайт и небольшого числа одновременных касс; дальше узким местом становится сам файловый доступ, и никакая чистка это не исправит — помогает только СУБД.

Порядок действий для разовой генеральной уборки получается такой:

  1. резервная копия;
  2. пометка устаревших документов на удаление с отбором по периоду;
  3. удаление помеченных объектов;
  4. сокращение журнала регистрации и чистка истории изменений;
  5. тестирование и исправление с реструктуризацией и пересчётом итогов;
  6. контрольная резервная копия уже почищенной базы.

Частые ошибки при очистке базы

  • ❌ Чистят без резервной копии. Самая дорогая ошибка: восстановить удалённые данные без копии невозможно.
  • ❌ Удаляют документы «задним числом» в открытом периоде. Если убрать поступления или продажи, по которым уже сданы отчёты и закрыты смены, себестоимость и остатки поедут. Чистите только действительно устаревшие и закрытые периоды.
  • ❌ Путают пометку на удаление с удалением. Помеченный объект остаётся в базе и продолжает занимать место, пока не отработает обработка удаления.
  • ❌ Ждут, что файл уменьшится сам. Без реструктуризации таблиц файловая база после удаления не сжимается.
  • ❌ Запускают чистку в рабочее время. Монопольные операции обрывают сеансы кассиров и останавливают продажи.
Можно ли очистить базу 1С:Розница, не удаляя остатки и продажи текущего года?
Да. Помечайте на удаление только документы за закрытые прошлые периоды. Обработка удаления не тронет данные, на которые ссылаются действующие документы, — остатки и продажи текущего года останутся.
Почему после удаления документов файл базы не стал меньше?
Физически место освобождает только реструктуризация таблиц. Запустите в конфигураторе Тестирование и исправление с флагом «Реструктуризация таблиц информационной базы» — после этого файл 1Cv8.1CD уменьшится.
Есть ли в 1С:Розница свёртка базы, как в Бухгалтерии?
Готового механизма свёртки с формированием входящих остатков в Рознице нет. Устаревшие данные убирают пометкой на удаление и обработкой удаления помеченных объектов, а размер базы снижают чисткой журнала и реструктуризацией.
Удаление помеченных объектов зависло — что делать?
На большом объёме чеков обработка идёт долго, это нормально. Не прерывайте её принудительно. Если процесс действительно оборвался, восстановите базу из копии и повторите удаление частями, помечая объекты порциями.
Можно ли очистить базу от данных одного магазина или кассы?
Напрямую отфильтровать удаление по магазину обработка не умеет. Отберите нужные документы в списках по этому магазину или кассе, пометьте их на удаление и затем запустите обработку — она уберёт помеченное.
Что станет с текущими остатками товаров, если удалить старые поступления?
Остатки в Рознице не хранятся готовым числом — программа пересчитывает их по всей цепочке движений. Если удалить поступления прошлых лет, а начальные остатки на дату отсечки не ввести, текущий остаток уменьшится на удалённый приход. Прежде чем удалять движенческие документы, введите начальные остатки документом оприходования на дату отсечки — иначе сократите журнал регистрации и историю изменений, этого обычно достаточно для размера.