Администрирование · 11 мин
Как удалить записи из регистра накопления в 1С
Как удалить записи из регистра накопления 1С: через документ, обработкой, кодом на встроенном языке. Риски, проверка результата, типичные ошибки.
Регистр накопления в 1С хранит обороты и остатки — товары на складах, взаиморасчёты, денежные средства. Записи в него почти всегда попадают через документы-регистраторы, поэтому «лишние» строки в регистре — это симптом, а не самостоятельная проблема: где-то есть проведённый документ, который эти записи сформировал.
Прямое удаление записей из регистра накопления — операция с высоким риском. Если убрать строки, не тронув документ-регистратор, при следующем перепроведении документа записи вернутся, а отчёты до этого момента будут показывать некорректные остатки. Поэтому первый вопрос всегда один: нужно ли удалять записи напрямую или правильнее устранить причину — отменить проведение, пометить документ на удаление или скорректировать его движения.
Ниже разобраны все рабочие способы: от штатной отмены проведения до программной очистки регистра кодом, с условиями выбора, проверкой результата и типичными ошибками.
Как устроены движения регистра накопления и почему это важно
Каждая строка регистра накопления обязательно связана с регистратором — документом, который её создал. Поле «Регистратор» есть в каждой записи, и именно по нему система понимает, кому принадлежит движение. Самостоятельных «висячих» записей в штатной работе не существует: если строка есть в регистре, значит, есть документ, который её записал при проведении.
Из этого следует главное правило: записи регистра накопления удаляются вместе с движениями документа. Когда вы отменяете проведение, 1С автоматически стирает все строки этого документа из всех регистров, по которым он двигается. Когда документ проводится заново — записи формируются снова по модулю проведения.
Ручное вмешательство в регистр разрывает эту связь. Документ остаётся проведённым, а его движений нет: отчёты по остаткам «съезжают», последовательности документов требуют восстановления, а при перепроведении документа записи появятся снова — и вся «чистка» окажется бессмысленной.
Способ 1. Отмена проведения и удаление документа-регистратора
Штатный и безопасный путь — работать не с регистром, а с документом. Если записи в регистре ошибочны, найдите документ-регистратор и отмените его проведение: в форме документа или в журнале через контекстное меню «Отменить проведение». Все движения документа по всем регистрам будут удалены автоматически.
Если документ вообще не нужен в базе, пометьте его на удаление. Пометка автоматически отменяет проведение, движения исчезают. После этого выполните «Удаление помеченных объектов» (раздел «Администрирование»), чтобы физически убрать документ из базы.
Если документ нужен, но движения неверны — например, не та номенклатура или склад, — исправьте данные в самом документе и перепроведите его. Регистр обновится корректно: старые записи будут удалены, новые записаны.
- 1Найдите документ-регистратор через отчёт по регистру или структуру подчинённости
- 2Отмените проведение документа из журнала или формы документа
- 3При необходимости пометьте документ на удаление
- 4Выполните «Удаление помеченных объектов» в разделе «Администрирование»
- 5Проверьте отчётом, что записи из регистра исчезли
Способ 2. Ручная корректировка движений документа
В типовых конфигурациях у многих документов есть флаг «Ручная корректировка» на вкладке «Дополнительно» или в меню «Ещё». После его установки движения документа становятся доступными для редактирования: откройте список движений (кнопка «Дт/Кт» или «Перейти → Движения документа»), выделите нужный регистр и удалите лишние строки вручную.
Этот способ подходит, когда документ в целом корректен, но отдельные движения нужно убрать или изменить — например, исключить движение по одному регистру, оставив остальные. Учтите: при перепроведении документа ручные правки будут перезаписаны модулем проведения, если флаг ручной корректировки не установлен.
Минус очевиден: ответственность за корректность остатков полностью переходит к вам. Система перестаёт контролировать эти движения, и расхождения с первичкой придётся отслеживать вручную.
Способ 3. Программное удаление записей кодом
Для технических задач — очистка тестовой базы, исправление последствий сбоя обмена, удаление движений по выборочному регистратору — используется встроенный язык. Основной инструмент: объект РегистрыНакопления.ИмяРегистра.СоздатьНаборЗаписей() с установленным отбором по регистратору и записью пустого набора.
НаборЗаписей = РегистрыНакопления.ТоварыНаСкладах.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ДокументСсылка);
НаборЗаписей.Записать(Истина); // запись пустого набора удаляет движения
Полная очистка всего регистра выполняется записью пустого набора без отбора: создайте набор записей, не устанавливайте отбор и вызовите Записать(). Это удалит все строки регистра. Операция необратима — убедитесь, что регистраторы либо не нужны, либо тоже будут очищены.
Для выборочного удаления по условию (например, по организации или периоду) сначала запросом выберите уникальных регистраторов, затем в цикле очищайте наборы записей по каждому. Прямого удаления «по измерениям» без регистратора у набора записей нет — отбор возможен только по регистратору.
Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ Регистратор ИЗ РегистрНакопления.ТоварыНаСкладах ГДЕ Организация = &Орг");
Запрос.УстановитьПараметр("Орг", Организация);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Набор = РегистрыНакопления.ТоварыНаСкладах.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(Выборка.Регистратор);
Набор.Записать();
КонецЦикла;Способ 4. Групповое перепроведение и восстановление последовательностей
Иногда задача ставится наоборот: записи не удалить, а привести в соответствие документам после сбоя. Для этого используется «Групповое перепроведение документов» (в типовых — раздел «Операции» или «Администрирование → Обслуживание»). Перепроведение за период пересоздаст движения: лишние записи, не подтверждённые документами, исчезнут, а корректные — запишутся заново.
Если в конфигурации используются последовательности документов, после массовых изменений движений восстановите их через «Проведение по последовательностям». Это гарантирует правильный порядок расчёта остатков и партий.
Дополнительно в «Тестировании и исправлении» информационной базы есть проверки логической целостности, которые выявляют «битые» ссылки и расхождения в регистрах. Запускайте его только на копии или после выгрузки: отдельные режимы исправления могут удалять объекты с повреждёнными ссылками.
Сравнение способов
Штатный и безопасный вариант. Подходит всегда, когда проблема в конкретном документе. Ограничение: удаляет движения по всем регистрам документа.
Для точечного изменения отдельных строк. Ограничение: правки теряются при перепроведении, контроль ложится на пользователя.
Для массовых технических задач и тестовых баз. Ограничение: разрывает связь с регистраторами, требует копии и понимания последствий.
Для восстановления соответствия движений документам после сбоев. Ограничение: долго на больших периодах, требует монопольного доступа.
Проверка результата после удаления
После любого способа убедитесь, что записи действительно удалены и учёт не развалился. Откройте отчёт по регистру — «Остатки и обороты» или универсальный отчёт по регистру накопления — и проверьте, что целевые строки исчезли, а итоговые остатки соответствуют ожиданиям.
Если удаляли программно, проверьте связь с регистраторами: откройте документ, чьи движения удалили, и убедитесь, что он либо не проведён, либо осознанно оставлен без движений. Проведённый документ без движений — источник расхождений при следующем перепроведении периода.
Финальный контроль — сверка ключевых отчётов (складские остатки, взаиморасчёты) с данными до операции. Если копия базы сохранилась, поднимите отчёт из копии и сравните итоги.
Как проверить результат
Целевые строки отсутствуют, итоги сходятся с ожиданиями
Строки на месте или остатки изменились непредсказуемо
Документ не проведён или удалён
Документ проведён, но движений нет — при перепроведении записи вернутся
Данные стабильны
Удалённые записи появились снова
Типичные ошибки и ограничения
Самая частая ошибка — удаление записей запросом напрямую в СУБД средствами SQL. Это нарушает внутренние служебные таблицы итогов регистров и приводит к рассинхронизации остатков, которую штатными средствами исправить сложно. Все манипуляции выполняйте только через объектную модель 1С.
Вторая ошибка — очистка регистра без анализа регистраторов. Если документы остаются проведёнными, любое регламентное перепроведение или восстановление последовательностей вернёт движения обратно, и работа будет проделана впустую.
Третья группа ошибок — права и блокировки. У пользователя должны быть права на изменение регистра; в клиент-серверном варианте массовая очистка в многопользовательском режиме может упираться в блокировки — выполняйте её в монопольном режиме или в нерабочее время.
Частые вопросы
Можно ли удалить записи регистра накопления, не трогая документ?
Технически да — через набор записей с отбором по регистратору и записью пустого набора. Но документ останется проведённым без движений, и при любом перепроведении записи вернутся. Такой приём оправдан только как временная техническая мера.
Как удалить все записи регистра накопления целиком?
Создайте набор записей регистра без установки отбора и вызовите метод Записать() — пустой набор сотрёт все строки. Предварительно сделайте выгрузку базы и решите, что делать с документами-регистраторами: обычно их тоже отменяют или удаляют.
Почему после удаления записей они появились снова?
Потому что документ-регистратор остался проведённым. При перепроведении — вручную, групповой обработкой или восстановлением последовательностей — модуль проведения формирует движения заново. Сначала отмените проведение документа, потом чистите регистр.
Чем очистка регистра отличается от свёртки базы?
Свёртка — штатная процедура, которая формирует документы ввода остатков на дату и удаляет старые документы вместе с движениями. Это корректный способ «обрезать» историю. Ручная очистка регистра такой целостности не обеспечивает.
Нужны ли особые права для удаления движений?
Да. Для отмены проведения нужны права на документ, для программной очистки — права на изменение регистра, а для массовых операций в клиент-серверной базе желателен монопольный доступ, иначе возможны конфликты блокировок.
Как удалить движения только по одному регистру, не затрагивая остальные?
Программно: установите отбор набора записей по регистратору именно нужного регистра и запишите пустой набор — движения документа по другим регистрам не пострадают. Интерактивно это делает ручная корректировка движений в форме документа.
Что важно запомнить
Записи регистра накопления принадлежат документам-регистраторам. Штатный путь — отмена проведения или удаление документа; программная очистка набором записей — только для технических задач, после резервной копии и с последующей проверкой отчётами.