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

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

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

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

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

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

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

Почему запись нельзя просто удалить из таблицы регистра

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

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

Ещё одно следствие: у пользователя должны быть права не только на регистр, но и на документ-регистратор. Если прав на документ нет, распровести его не получится, даже если ошибка в регистре очевидна — придётся привлекать администратора или пользователя с полными правами.

Способ 1. Отмена проведения или удаление документа-регистратора

Самый безопасный и правильный способ. Сначала нужно найти, какой документ создал ошибочную запись. Откройте регистр: в управляемом приложении это делается через «Все функции» (или «Операции») → «Регистры накопления» → нужный регистр. В списке записей включите отображение колонки «Регистратор» и найдите строку с ошибочными данными.

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

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

Порядок действий при отмене проведения
  1. 1
    Откройте регистр накопления и найдите ошибочную запись
  2. 2
    Определите документ-регистратор по колонке «Регистратор»
  3. 3
    Откройте документ и нажмите «Отменить проведение» или установите пометку удаления
  4. 4
    Обновите список регистра и убедитесь, что запись исчезла
  5. 5
    Сформируйте отчёт по остаткам для контроля итогов

Способ 2. Корректировка регистров документом «Операция» или «Корректировка регистров»

Когда исходный документ трогать нельзя (закрытый период, документ из другой системы, нужно исправить только часть движений), используют ручную корректировку. В типовых конфигурациях для этого есть документ «Операция» (Бухгалтерия), «Корректировка регистров» (УТ, ERP) или «Корректировка записей регистров» в старых конфигурациях.

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

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

Способ 3. Программное удаление через набор записей

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

НаборЗаписей = РегистрыНакопления.ТоварыНаСкладах.СоздатьНаборЗаписей();

НаборЗаписей.Отбор.Регистратор.Установить(СсылкаНаДокумент);

НаборЗаписей.Прочитать();

НаборЗаписей.Очистить();

НаборЗаписей.Записать(Истина);

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

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

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

Способ 4. Универсальные обработки и консоли

Для разовых задач администраторы часто используют готовые инструменты: «Групповую обработку справочников и документов» (есть в составе БСП и на диске ИТС), консоль запросов, консоль кода. С их помощью можно найти документы с движениями по определённому регистру и массово отменить проведение.

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

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

Сравнение способов удаления

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

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

Корректировка регистров

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

Программная очистка набора записей

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

Универсальные обработки

Быстрый вариант для администратора без написания кода. Риск зависит от конкретной обработки — избегайте прямой правки таблиц.

Как проверить результат и убедиться, что учёт не сломан

После удаления записей обязательно сверьте итоги. Сформируйте отчёт по регистру (например, «Остатки товаров на складах» или универсальный отчёт по регистру) до и после операции — разница должна точно соответствовать удалённому количеству. Если регистр связан с бухгалтерским учётом (типично для ERP и УТ), сверьте оборотно-сальдовую ведомость с данными регистра.

Дополнительно проверьте периодические итоги: если удаление затронуло прошлые периоды, итоги могли быть рассчитаны ранее и требуют пересчёта. В меню «Операции» → «Управление итогами» убедитесь, что расчёт итогов актуален; при необходимости выполните пересчёт. В файловых базах после массовых операций полезно запустить «Тестирование и исправление» в режиме проверки логической целостности.

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

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

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

Список записей регистра по регистратору
Норма

По документу нет строк (или остались только нужные)

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

Ошибочная строка на месте — возможно, её создал другой документ

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

Изменение остатка равно удалённому количеству

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

Остаток изменился больше или меньше — удалено лишнее или не всё

Статус документа-регистратора
Норма

Документ распроведён или помечен на удаление

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

Документ проведён, но движений нет — рассинхронизация

Периодические итоги регистра
Норма

Итоги пересчитаны, отчёты за прошлые периоды корректны

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

Отчёт за прошлый месяц показывает старые значения

Типичные ошибки и ограничения

Чаще всего проблемы возникают не из-за самого удаления, а из-за неверного понимания структуры движений. Ниже — ситуации, с которыми сталкиваются чаще всего.

Типичные ошибки
01
Удаление записи без анализа регистратора: строку создал другой документ, и после перепроведения «правильного» документа ошибка возвращается
02
Запись набора без параметра Записать(Истина): новые строки добавляются к существующим вместо замещения, движения задваиваются
03
Очистка движений без отмены проведения: документ остаётся проведённым, при следующем перепроведении записи восстанавливаются
04
Работа в закрытом периоде без корректировки: распроведение документа прошлого периода ломает уже сданную отчётность
05
Запуск массовой обработки без резервной копии: ошибка в отборе приводит к потере движений за большой период

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

Маршрут решения

Как выбрать действие

Известен ошибочный документ, период открытОтмените проведение документа или исправьте и перепроведите его
Документ в закрытом периоде или трогать его нельзяСоздайте документ корректировки регистров со сторнирующей записью текущей датой
Движения остались, а регистратор удалён или недоступенОчистите набор записей программно с отбором по регистратору, предварительно сделав копию базы
Нужно удалить записи у множества документовСформируйте список регистраторов запросом и обработайте их пакетно через отмену проведения
База участвует в обмене даннымиИсправляйте движения в узле-источнике данных и дождитесь синхронизации

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

Можно ли удалить запись регистра накопления напрямую через SQL-запрос?

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

Распровёл документ, а запись в регистре осталась. Почему?

Скорее всего, эту строку создал другой документ с той же аналитикой — откройте список регистра и посмотрите колонку «Регистратор» у оставшейся записи. Вторая причина: документ формирует движения через обработку проведения, которая подтягивает данные из других источников, и при отмене проведения очистился не тот регистр. Третья — движения пришли по обмену и будут восстанавливаться до исправления в узле-источнике.

Как удалить все записи регистра накопления целиком?

Штатного способа «очистить регистр» в интерфейсе нет. Программно это делается записью пустого набора без отбора по регистратору — но такая операция уничтожит все движения, и документы останутся проведёнными. Правильный путь полного очищения — массовая отмена проведения всех регистраторов (например, обработкой «Групповое изменение реквизитов» или кодом). Любой вариант выполняйте только после резервной копии.

Чем отличается удаление записей в регистре остатков от регистра оборотов?

В регистре оборотов нет видов движения «Приход/Расход» и не хранятся остатки — только обороты за период. Механика удаления одинаковая (через регистратор или набор записей), но сторнирование в регистре оборотов делается записью с отрицательным значением ресурса, а не сменой вида движения. Также для оборотных регистров неактуальна проблема отрицательных остатков при проверке результата.

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

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

Что делать, если нет прав на документ-регистратор?

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

Итог

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

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