К статье
Практический материал

Администрирование · 10 мин

Как удалить записи регистра в 1С

Как удалить записи регистра в 1С: через обработку, запрос и код. Способы очистки регистров сведений и накопления, риски, проверка результата и типичные ошибки.

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

Выбор способа зависит от задачи: нужно ли очистить регистр полностью, удалить движения конкретного документа, убрать записи за старый период или исправить «висячие» остатки. У каждого варианта есть свои ограничения и риски, особенно если регистр участвует в расчёте итогов или связан с другими данными.

Перед любыми манипуляциями с регистрами сделайте резервную копию базы. Удаление записей регистра — необратимая операция, и восстановить данные без копии будет невозможно. В файловой базе достаточно скопировать файл 1Cv8.1CD, в клиент-серверной — выполнить выгрузку через конфигуратор или средствами СУБД.

Что такое записи регистра и когда их нужно удалять

Регистр в 1С — это таблица, где хранятся движения документов или независимые сведения. Регистры накопления хранят обороты и остатки (товары, деньги, взаиморасчёты), регистры сведений — произвольные данные (цены, курсы валют, адреса), регистры бухгалтерии — проводки, регистры расчёта — начисления и удержания.

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

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

Удаление движений конкретного документа

Самый безопасный сценарий — убрать записи, которые сделал один документ. Штатный способ: откройте документ и нажмите «Отменить проведение». При этом платформа автоматически удалит все движения документа во всех регистрах, по которым он проводится.

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

bsl
НаборЗаписей = РегистрыНакопления.ТоварыНаСкладах.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(СсылкаНаДокумент);
НаборЗаписей.Записать(Истина); // пустой набор заменяет старые движения

Ключевой момент: метод Записать(Истина) с пустым набором удаляет существующие записи по установленному отбору. Если забыть установить отбор по регистратору, платформа либо выдаст ошибку, либо (для независимых регистров сведений) очистит весь регистр — это одна из самых опасных ошибок.

Полная очистка регистра

Полное удаление всех записей регистра применяют при подготовке тестовых баз, при обнулении остатков перед началом учёта или при очистке технических регистров сведений (например, регистров кэша или очередей обмена).

bsl
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Записать(Истина); // очищает весь регистр сведений

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

Также существуют типовые и сторонние обработки «Удаление движений документов» и «Очистка регистров», которые позволяют выполнить эти операции интерактивно без написания кода. Используйте только обработки из доверенных источников и обязательно в режиме, где сначала показывается, что будет удалено.

Удаление записей за период и свёртка базы

Если цель — избавиться от старых данных, не трогая текущий учёт, правильный инструмент — свёртка базы. В типовых конфигурациях (Бухгалтерия, Управление торговлей, ERP) есть штатная обработка свёртки: она формирует документы ввода остатков на дату свёртки и помечает на удаление все документы и их движения за прошлые периоды.

Альтернатива — установка даты запрета изменения данных и удаление помеченных объектов через штатную обработку «Удаление помеченных объектов». Документы удаляются вместе со своими движениями, если на них нет ссылок из более поздних данных.

Сравнение вариантов

Отмена проведения документа

Подходит для точечного удаления движений одного документа. Безопасно, штатно, но долго при большом количестве документов.

Очистка набора записей кодом

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

Свёртка базы

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

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

Штатная очистка вместе с документами. Не сработает, если на документы есть ссылки из актуальных данных.

Особенности для разных типов регистров

Регистры сведений независимые — самые простые: записи можно удалять произвольным отбором через набор записей или запрос. Периодические регистры сведений (цены, курсы) очищаются так же, но проверяйте, не используются ли эти данные в проведении документов задним числом.

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

Регистры расчёта (начисления зарплаты) дополнительно хранят данные фактического периода действия и связаны с перерасчётами. Удаление записей без очистки связанных перерасчётов приведёт к ошибкам при следующем расчёте. В зарплатных конфигурациях используйте штатные механизмы отмены документов начисления.

Проверка результата и типичные ошибки

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

Контрольные точки

Как проверить результат

Отчёт по регистру после очистки
Норма

Удалённые записи отсутствуют, остальные данные на месте

Тревожный признак

Пропали лишние записи или остались старые движения

Проведение новых документов
Норма

Документы проводятся без ошибок, остатки считаются корректно

Тревожный признак

Ошибки контроля остатков, отрицательные остатки из ниоткуда

Итоги регистров накопления
Норма

Остатки в отчётах совпадают с обороткой

Тревожный признак

Расхождение оборотов и остатков — нужен пересчёт итогов

Типичные ошибки
01
Запись пустого набора без отбора для регистра сведений — очищается весь регистр вместо нужных строк.
02
Удаление записей без резервной копии — при ошибке данные восстановить нечем.
03
Очистка движений без отмены проведения документа — документ выглядит проведённым, но отчёты его не видят, возникает рассинхронизация.
04
Удаление записей регистра расчёта без очистки перерасчётов — следующий расчёт зарплаты падает с ошибками.
05
Забытый пересчёт итогов после массового удаления — отчёты показывают устаревшие остатки.

Ограничения и когда привлекать специалиста

Самостоятельная работа оправдана для тестовых баз, точечной отмены проведения документов и очистки технических регистров сведений. Для массовых операций в рабочей базе — свёртки, очистки регистров накопления за периоды, исправления остатков — разумно привлечь специалиста по 1С, особенно если база клиент-серверная и в ней работают пользователи.

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

Итог

Что важно запомнить

Движения одного документа удаляйте отменой проведения или очисткой набора записей по регистратору, весь регистр сведений — записью пустого набора, старые периоды — свёрткой базы. Всегда делайте резервную копию, устанавливайте отборы перед записью и после массового удаления пересчитывайте итоги.

Частые вопросы

Можно ли удалить записи регистра без программирования?

Да. Отмена проведения документа удаляет его движения штатно. Для очистки целых регистров существуют готовые обработки («Очистка регистров», «Удаление движений документов»), которые работают через интерфейс без написания кода. Используйте обработки только из доверенных источников и на копии базы.

Что будет, если удалить движения, но оставить документ проведённым?

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

Как удалить записи регистра за определённый период?

Для регистров сведений — набор записей с отбором по периоду или запрос с последующим удалением найденных записей. Для регистров, подчинённых регистраторам, корректный способ — свёртка базы на дату или отмена проведения документов за период. Прямое удаление движений за период без обработки остатков нарушит учёт.

Уменьшится ли размер базы после удаления записей регистра?

Не сразу. В файловой базе нужно выполнить сжатие таблиц через тестирование и исправление. В клиент-серверной базе физическое уменьшение файлов зависит от СУБД: для MS SQL потребуется shrink базы или файлов, для PostgreSQL — vacuum full. Без этих операций место освобождается внутри базы для будущих данных.

Как восстановить ошибочно удалённые записи регистра?

Штатных средств отмены удаления в 1С нет. Варианты: восстановление из резервной копии, повторное проведение документов-регистраторов (если удалены только движения, а документы целы) или загрузка данных из копии через обработку выгрузки-загрузки. Поэтому резервная копия перед операцией обязательна.

Нужно ли пересчитывать итоги после удаления записей?

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