Удаляем записи документа из регистров 1С, не ломая учёт

· 9 мин

Содержание

Очистить движения документа в 1С 8.3 проще всего отменой проведения: выделите документ в списке и выполните команду Ещё → Отменить проведение. Платформа удалит все записи, которые документ сделал в регистрах, а сам документ останется в базе непроведённым.

Типичная ситуация: бухгалтер провёл реализацию задним числом, остатки по складу «уехали», и теперь нужно убрать её записи, не удаляя сам документ. Или наоборот: документа уже нет, а в оборотке висят проводки с регистратором <Объект не найден>. Для каждого случая свой способ. Ниже они идут от самого безопасного к самому радикальному.

Что такое движения документа и что проверить до очистки

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

Документ сам по себе ничего не хранит в остатках. Всё, что видно в отчётах, берётся из регистров. Поэтому «очистить движения» значит удалить записи регистров с этим регистратором.

Перед очисткой стоит сделать три вещи:

  1. 👀 Посмотреть, что именно записал документ. В 1С:Бухгалтерии 3.0 — кнопка ДтКт в форме документа. В 1С:Управлении торговлей 11 и ERP — отчёт «Движения документа» в подменю Отчеты формы документа.
  2. 🔗 Понять, кто зависит от этого документа. Если по реализации уже есть оплата, счёт-фактура или корректировка, после очистки у них поплывут взаиморасчёты и НДС.
  3. 💾 Сделать копию базы , если чистить предстоит много документов или работать кодом. Выгрузка: Конфигуратор → Администрирование → Выгрузить информационную базу.

Один документ отменой проведения можно чистить без копии: действие обратимо, достаточно провести документ снова.

Способ 1. Отмена проведения — стандартная очистка движений

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

Из списка документов

  1. Откройте журнал нужного вида, например Продажи → Реализация (акты, накладные).
  2. Выделите одну строку или несколько, удерживая Ctrl.
  3. Нажмите Ещё → Отменить проведение.

Значок проведения в строке погаснет, записи в регистрах исчезнут сразу.

Из формы документа

Откройте документ и выполните Ещё → Отменить проведение. Если команды не видно в панели, она есть в меню Ещё формы.

Через пометку на удаление

Когда вы ставите пометку на удаление на проведённый документ, 1С сама отменяет его проведение. Движения уходят в тот же момент, а не при окончательном удалении помеченных объектов.

Пометка на удаление тоже очищает движения — не ставьте её «на всякий случай» на документы закрытого месяца.

Как это работает внутри

У каждого документа в конфигураторе есть свойство «Удаление движений». Вариантов три:

ЗначениеЧто происходит при отмене проведения
Удалять автоматическиПлатформа удаляет движения и при отмене проведения, и при перепроведении
Удалять автоматически при отмене проведенияУдаляет только при отмене; при перепроведении записи заменяет код
Не удалять автоматическиУдаление должен выполнить код в модуле документа

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

Способ 2. Ручная корректировка движений документа в Бухгалтерии 3.0

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

Для этого в 1С:Бухгалтерии 3.0 есть ручная корректировка:

  1. Откройте документ и нажмите ДтКт.
  2. Установите флажок «Ручная корректировка (разрешает редактирование движений документа)».
  3. На вкладках регистров удалите лишние строки или очистите вкладку полностью.
  4. Нажмите «Записать и закрыть».

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

Документ с ручной корректировкой не перезаписывает движения при перепроведении. Если потом поменяете сумму в шапке, проводки не обновятся. Чтобы вернуть автоматическое заполнение, снимите флажок и перепроведите документ.

Корректировка регистров отдельным документом

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

Сравнение способов:

СпособКогда подходитРиск
Отмена проведенияНужно убрать документ из учёта целикомМинимальный, обратимо
Ручная корректировкаНужно убрать часть записейДокумент «замораживается», правки легко забыть
Корректировка регистровНужен след правки в учётеЛишний документ в базе
Код или тестирование базыДокумента нет, а записи естьВысокий, только с копией

Права, даты запрета и режим администратора

Часто отменить проведение не получается не из-за ошибки, а из-за настроек доступа.

Права пользователя. Для отмены проведения из интерфейса нужно право «Интерактивная отмена проведения» на этот вид документа. Без него пользователь видит документ, но команды не будет или появится сообщение Нарушение прав доступа!. Проверить и добавить: Администрирование → Настройки пользователей и прав → Группы доступа.

Ручная корректировка в Бухгалтерии требует права на изменение регистров. Рядовому бухгалтеру его обычно не дают. Флажок будет недоступен.

Дата запрета изменения. Если дата документа попадает в закрытый период, программа запретит и отмену проведения, и ручную корректировку. В Бухгалтерии 3.0 дата задаётся в Администрирование → Проведение документов → Даты запрета изменения. Сдвиньте дату, сделайте правку и сразу верните её на место.

Просмотр регистров через «Все функции»

Иногда хочется открыть сам регистр и удалить строку прямо там. Включите команду: главное меню → Сервис → Параметры → флажок «Отображать команду “Все функции”». Затем Все функции → Регистры накопления (или Регистры бухгалтерии).

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

Как движения хранятся в базе и как очистить их кодом

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

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

Пример для внешней обработки, который отменяет проведение существующего документа штатно:

ДокументОбъект = СсылкаНаДокумент.ПолучитьОбъект();
ДокументОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);

Пример очистки одного регистра по регистратору, когда документа нет:

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

Имя регистра подставьте своё. Если регистров несколько, повторите для каждого из тех, куда писал документ.

Как найти все регистры, куда писал документ

Список регистров, в которые документ вообще может писать, виден в конфигураторе: свойства документа, закладка «Движения». Но удобнее проверить фактические записи запросом в консоли запросов, например для регистра бухгалтерии Бухгалтерии 3.0:

ВЫБРАТЬ
    Хозрасчетный.Период,
    Хозрасчетный.СчетДт,
    Хозрасчетный.СчетКт,
    Хозрасчетный.Сумма
ИЗ
    РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
ГДЕ
    Хозрасчетный.Регистратор = &Документ

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

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

Почему не стоит чистить таблицы SQL напрямую

В клиент-серверной базе записи лежат в таблицах СУБД, и соблазн удалить их запросом DELETE велик. Не делайте этого. Платформа держит отдельные таблицы итогов, и после такого удаления остатки в отчётах разойдутся с оборотами. Кроме того, такие правки не видит механизм обмена, и в распределённой базе узлы разойдутся.

Движения без документа: битые ссылки и «Тестирование и исправление»

Бывает, что документ удалён, а записи с ним остались. В отчётах вместо регистратора видно <Объект не найден> и длинный идентификатор. Обычно это следствие сбоя обмена или аварийного завершения работы.

Штатный способ — проверка ссылочной целостности:

  1. Сделайте копию базы.
  2. Откройте Конфигуратор → Администрирование → Тестирование и исправление.
  3. Отметьте «Проверка ссылочной целостности информационной базы».
  4. Выберите режим «Тестирование и исправление».
  5. В пункте «При наличии ссылок на несуществующие объекты» выберите действие.

Варианты действия при битых ссылках:

ВариантЧто сделаетКогда выбирать
Создавать объектыСоздаст пустой документ-заглушкуХотите найти записи и решить вручную
Удалять ссылкиОчистит ссылку в записяхРедко; записи останутся без регистратора
Не изменятьТолько покажет проблемуДля разведки без правок

Практичный путь — «Создавать объекты». Появится документ-заглушка с теми же движениями. Его можно открыть, посмотреть, что он записал, отменить проведение и пометить на удаление.

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

Пересчёт итогов после очистки движений

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

Пересчитывать итоги стоит, если:

  • 📉 после очистки движений кодом остатки в отчёте не совпадают с оборотами;
  • 🧮 оборотно-сальдовая ведомость показывает сальдо, которого нет в разрезе субконто;
  • 🛠 после тестирования базы отчёты по остаткам ведут себя странно.

Как пересчитать:

  • В режиме Предприятие: Все функции → Стандартные → Управление итогами, команда «Пересчитать итоги». Удобно, если нет доступа в Конфигуратор.
  • В Конфигураторе: Администрирование → Тестирование и исправление, флажок «Пересчёт итогов».

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

В «Управлении итогами» на вкладке со всеми функциями видно период рассчитанных итогов. Если он сильно отстаёт, отчёты по остаткам строятся долго, и пересчёт заодно ускорит работу.

Частые ошибки при очистке движений

Диагностика: выберите симптом

Пара правил, которые снимают большинство проблем:

  • 🔒 Не отключайте даты запрета «насовсем». Открыли период, исправили, закрыли.
  • 📅 После очистки движений в прошлом периоде повторите закрытие месяца в Бухгалтерии, перерасчёт себестоимости в УТ или ERP.
  • 🔁 В распределённой базе очищайте движения в главном узле. Иначе следующий обмен вернёт записи обратно.
  • 🧾 Ручную корректировку отмечайте в комментарии документа: через полгода никто не вспомнит, почему проводки не совпадают с табличной частью.

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

Чем отмена проведения отличается от удаления документа?
Отмена проведения убирает только записи в регистрах, документ остаётся в списке. Удаление стирает документ целиком, и его движения уходят вместе с ним.
Можно ли вернуть очищенные движения?
Да, если документ на месте: проведите его снова, и записи сформируются заново по текущим данным. Движения, удалённые кодом при удалённом документе, вернёт только резервная копия.
Нужен ли монопольный доступ для отмены проведения?
Нет. Отменять проведение и делать ручную корректировку можно при работающих пользователях. Монопольный режим нужен только для тестирования и исправления базы.
Как очистить движения сразу у сотни документов?
Выделите их в списке через Ctrl или Shift и выполните отмену проведения одной командой. Для разных видов документов удобнее внешняя обработка с методом записи в режиме отмены проведения.
Почему после перепроведения месяца очищенная проводка появилась снова?
Групповое перепроведение проводит документ заново, и он формирует движения по своим данным. Чтобы запись не возвращалась, исправьте сам документ или используйте ручную корректировку.