Удаление записей регистров и документов в 1С 8.3
Содержание
Чтобы удалить реестр документов в 1С, документы сначала помечают на удаление (клавиша Del или команда Пометить на удаление в списке), а затем запускают обработку Администрирование → Обслуживание → Удаление помеченных объектов. Вместе с документом уходят и его движения по регистрам. Отдельные записи регистра сведений чистят иначе — через набор записей или прямо в списке регистра, если он выведен в интерфейс.
Слово «реестр» в 1С понимают по-разному: это и список документов одного вида («реестр поступлений»), и внутренняя таблица-регистр, где хранятся движения. Удаляются они разными способами, и путать их опасно — можно снести данные, которые пересчитать уже не получится. Ниже — все рабочие методы и границы, за которые лучше не заходить.
Что такое регистр и что значит его «удалить»
Регистр в 1С — это таблица, куда документы записывают результаты своих действий. Сам по себе он не удаляется: его структуру задаёт конфигурация. Удалить можно только записи внутри регистра.
Основные типы регистров:
- 📊 Регистр накопления — остатки и обороты (товары на складах, взаиморасчёты, НДС).
- 📒 Регистр бухгалтерии — проводки по счетам (хозрасчётный план счетов ).
- 📝 Регистр сведений — справочные значения: курсы валют, цены номенклатуры, кадровые данные.
- 🧮 Регистр расчёта — начисления в ЗУП.
Записи регистров делятся на два вида по способу хранения:
| Вид записей | Кто создаёт | Как удаляются |
|---|---|---|
| Подчинённые регистратору | документ при проведении | при отмене проведения или удалении документа |
| Независимые | вручную или обменом | через набор записей или список регистра |
Это ключевое различие. Движения, которые записал документ, нельзя стереть напрямую — они уйдут только вместе с документом или при отмене его проведения. А независимый регистр сведений (например, «Цены номенклатуры») живёт сам по себе, и его записи редактируются отдельно.
Ещё одна деталь, о которой забывают: у регистров накопления и бухгалтерии рядом с таблицей движений платформа ведёт служебные таблицы итогов. Из них отчёты берут остатки быстро, не пересчитывая всю историю. Поэтому после любого массового удаления движений итоги нужно пересчитать — иначе отчёт покажет остаток, которого в движениях уже нет.
Пометка документов на удаление и очистка реестра
Самый безопасный путь — работать через документы. Движения регистров удалятся автоматически.
- Откройте нужный список, например
Продажи→Реализация (акты, накладные). - Отфильтруйте реестр, чтобы не зацепить лишнее: по периоду, контрагенту или организации. В списке это команда
Ещё→Настроить списоклибо быстрый отбор в шапке. - Выделите строки реестра. Диапазон —
Shift+клик, вразнобой —Ctrl+клик, всё сразу —Ctrl+A. - Нажмите
Delили командуЕщё→Пометить на удаление / Снять пометку. - Подтвердите пометку. Строки отметятся значком с красным крестиком.
Пометка ничего не удаляет и не трогает учёт — её можно снять в любой момент той же командой. Фактическое удаление происходит только на следующем шаге.
Важная тонкость: помеченный на удаление документ продолжает проводить движения и участвовать в учёте, пока вы его реально не удалили. Пометка — это только «флажок к удалению», а не выключение документа. Если нужно именно убрать влияние на остатки, отменяйте проведение, а не ограничивайтесь пометкой.
Если нужно снять проведение (убрать движения по регистрам, но сам документ оставить), используйте в списке команду Ещё → Отменить проведение. После этого остатки и проводки по этому документу исчезнут, а документ останется в реестре как непроведённый.
Отмена проведения в рабочей базе меняет остатки и взаиморасчёты задним числом. Делайте это, понимая, какие отчёты «поедут».
Обработка «Удаление помеченных объектов»
Это штатный инструмент, который физически удаляет всё помеченное и контролирует ссылки.
Путь в типовых конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11):
Администрирование → Обслуживание → Удаление помеченных объектов.
Обработка работает в два прохода:
- Поиск и проверка ссылок. Программа ищет все помеченные объекты и проверяет, не ссылается ли на них что-то ещё. Документ, на который ссылается другой документ, удалён не будет.
- Удаление. Объекты без «висящих» ссылок удаляются, их движения по регистрам уходят вместе с ними.
Если удаление не прошло, обработка покажет список объектов и то, что на них ссылается. Типичная причина — документ-основание, по которому введён другой документ. Нужно либо удалить и зависимые объекты, либо вручную убрать ссылку (например, очистить поле «Основание»).
Удаление помеченных объектов блокирует работу с удаляемыми данными и может идти долго на большой базе. Запускайте его, когда другие пользователи не работают с этими документами, а ещё лучше — вне рабочего времени. Перед массовым удалением сделайте резервную копию базы.
Очистка независимого регистра сведений
Записи регистра накопления или бухгалтерии нельзя удалить отдельно от документа — их создаёт регистратор. А вот независимый регистр сведений чистится напрямую.
Если регистр выведен в интерфейс (кадровые данные, курсы валют, цены), откройте его список и удаляйте строки клавишей Del — здесь она удаляет сразу, без пометки, потому что регистр не участвует в ссылочной целостности.
Многие регистры в интерфейсе не показаны. Тогда записи чистят кодом — набором записей с отбором по измерениям:
НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Номенклатура.Установить(ВыбраннаяНоменклатура);
НаборЗаписей.Записать(); // пустой набор заменяет записи по отбору — очищает их
Принцип прост: пустой набор с установленным отбором замещает все записи, подходящие под отбор, то есть удаляет их. Чтобы очистить регистр целиком, нужно перебрать комбинации измерений запросом и очистить каждую — одним пустым набором без отбора весь регистр не стереть.
Отдельно стоит учитывать периодические регистры сведений. У них помимо измерений есть период (дата или период регистратора), и записи хранятся по этому периоду. При очистке такого регистра отбор задают не только по измерениям, но и ограничивают период, иначе легко стереть историю, которая нужна для срезов последнего и первого значения.
Распространённое заблуждение: «очистить регистр через консоль запросов». Язык запросов 1С умеет только читать данные — командами SELECT. Удалять или менять записи он не может. Консоль запросов помогает найти, что именно лежит в регистре, но саму очистку делает набор записей или обработка.
Если регистр заполняется обменом или интеграцией, разумнее не чистить его руками, а найти и исправить источник — иначе записи вернутся при следующей синхронизации.
Прямое удаление через SQL: почему так лучше не делать
В клиент-серверном варианте данные лежат в СУБД (MS SQL или PostgreSQL), и соблазн почистить таблицу запросом DELETE велик. Делать этого нельзя.
Причины:
- 🔗 В SQL нет контроля ссылочной целостности на уровне 1С — останутся «битые» ссылки на удалённые объекты.
- 📉 Рядом с таблицей регистра лежат служебные таблицы итогов и срезов.
DELETEв основной таблице их не пересчитает — остатки разъедутся. - 🧩 Имена таблиц (
_Document123,_AccumRg456) платформа генерирует сама и меняет при реструктуризации. Запрос, написанный сегодня, завтра удалит не то. - 🚫 Прямое изменение данных не поддерживается фирмой «1С». После такого вмешательства гарантий на корректность базы нет.
SQL уместен только для чтения — диагностики, анализа объёмов, поиска «тяжёлых» таблиц. Например, запросом к системным представлениям удобно увидеть, какой регистр занимает больше всего места и стоит ли его чистить штатными средствами. Но для любого изменения данных возвращайтесь в 1С: обработка удаления помеченных объектов, набор записей, отмена проведения. Это дольше, но база останется целой и поддерживаемой.
Если задача — радикально уменьшить объём базы (убрать старые периоды целиком), для этого есть типовая обработка «Свёртка информационной базы»: она формирует остатки на выбранную дату и удаляет движения до неё корректно, через механизмы платформы, а не напрямую в таблицах.
Восстановление целостности после удаления
После массового удаления полезно проверить базу и пересчитать итоги , иначе отчёты могут показывать мусор.
Пересчёт итогов. Для регистров накопления и бухгалтерии: Все функции → Стандартные → Управление итогами. Выберите регистры и пересчитайте — программа заново соберёт остатки из движений. (Пункт Все функции включается в Главное → Настройки → Параметры → галочка «Отображать команду Все функции».)
Тестирование и исправление. В Конфигураторе: Администрирование → Тестирование и исправление. Отметьте нужные проверки:
Реиндексация таблиц— перестраивает индексы, ускоряет работу после больших удалений.Проверка логической целостности— ищет битые ссылки и ошибки структуры.Пересчёт итогов— то же, что управление итогами, но из Конфигуратора.
Тестирование и исправление требует монопольного доступа — все пользователи должны выйти из базы. На большой базе процедура идёт долго. Запускайте её по резервной копии или вне рабочего времени, предупредив, что сеансы оборвутся.
Для файловой базы физическую целостность файла проверяет отдельная утилита chdbfl.exe из каталога установки платформы — её запускают при выходе базы с ошибкой, тоже по копии.
После всех операций сверьте ключевые отчёты (оборотно-сальдовую ведомость, остатки на складах) с тем, что было до удаления по неизменённым периодам. Если цифры совпадают — целостность не пострадала.
Частые ошибки при удалении реестра
Чистка данных чаще всего ломается не на технике, а на непонимании, что и чем удаляется. Вот ситуации, которые регулярно всплывают:
- ❌ Удалили документы, а остатки не изменились. Значит, остатки формирует что-то ещё: другой документ того же периода, ручная операция или документ «Ввод остатков ». Проверьте регистр отчётом по регистратору — он покажет, кто именно двигает остаток.
- ❌ Пометили на удаление и считают, что дело сделано. Пока обработка не отработала, документы живы и влияют на учёт. Пометка без удаления только засоряет реестр.
- ❌ Пытаются стереть движения через SQL, потому что «так быстрее». Быстрее — до первого расхождения в отчётах. Восстановить согласованность таблиц потом дороже, чем сделать всё штатно.
- ❌ Удаляют элемент справочника, а он не удаляется. На справочник ссылаются документы и записи регистров. Сначала убирают ссылки (или удаляют связанные объекты), и только потом элемент.
- ❌ Запускают удаление в разгар рабочего дня. Обработке
Удаление помеченных объектовмонопольный режим не нужен, но она блокирует затронутые объекты и нагружает базу. Тяжёлую чистку лучше вынести на нерабочее время.
Общее правило: прежде чем удалять что-либо из реестра, поймите, подчинены записи регистратору или независимы. От этого зависит, нужен ли вам документ, отмена проведения или набор записей.