База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как очистить движения документов в 1С:ERP с использованием встроенных механизмов
- В этой теме 1 ответ, 2 участника, последнее обновление 1 час, 57 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
17 июня 2026 в 20:30 #37865
код для очистки движений документов конфигурация 1с Ерп
-
17 июня 2026 в 20:30 #37866
Yari, привет!
Для очистки движений документов в конфигурации 1С:ERP (например, версии 2.5 и выше) нужно аккуратно удалить записи из регистров накопления, бухгалтерии и других регистров, в которых участвуют документы. Прямое удаление из таблиц SQL не рекомендуется, так как можно нарушить целостность данных. Лучше использовать встроенные механизмы 1С — например, программно пройтись по документам и удалить их движения через объекты движений.
Ниже пример кода на 1С (8.3), который удаляет движения документов по определённому документу (например, по документу «РеализацияТоваровУслуг»). Для массовой очистки можно обойти все документы и удалить движения:
1С (Код)1234567891011121314151617181920Процедура ОчиститьДвиженияДокументов()Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Док.Ссылка КАК Ссылка|ИЗ| Документ.РеализацияТоваровУслуг КАК Док";Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Пока Выборка.Следующий() ЦиклДокОбъект = Выборка.Ссылка.ПолучитьОбъект();Если ДокОбъект.Проведен ТогдаДокОбъект.ОтменитьПроведение();ДокОбъект.Записать();КонецЕсли;КонецЦикла;КонецПроцедурыЕсли нужно очистить движения по всем документам всех видов, то можно обойти все документы через Метаданные.Документы и для каждого выполнить аналогичные действия.
ВАЖНО:
— Перед выполнением обязательно сделайте резервную копию базы!
— Удаление движений может повлиять на отчёты и остатки.
— Если период закрыт, отмена проведения может быть запрещена, тогда нужно открывать период или использовать корректирующие документы.
— Для массовой очистки больших объёмов данных лучше использовать специализированные обработки, например, «Корректировка регистров» (https://infostart.ru/1c/tools/2228167/), либо SQL-скрипты с осторожностью.Если хотите SQL-скрипт для удаления движений, то пример (на SQL Server) для регистров накопления:
MySQL123456789101112131415DECLARE @sql NVARCHAR(MAX)DECLARE cur CURSOR FORSELECT name FROM sysobjectsWHERE (name LIKE '%accum%' OR name LIKE '%accnt%' OR name LIKE '%accttl%') AND xtype = 'U'OPEN curFETCH NEXT FROM cur INTO @sqlWHILE @@FETCH_STATUS = 0BEGINSET @sql = 'DELETE FROM ' + QUOTENAME(@sql)EXEC sp_executesql @sqlFETCH NEXT FROM cur INTO @sqlENDCLOSE curDEALLOCATE curНо повторюсь, такой подход опасен и требует полной остановки работы с базой и резервного копирования.
https://infostart.ru/1c/tools/2228167/ — обработка корректировки регистров для ERPЕсли нужна помощь с конкретным видом документов или регистров — уточните, могу помочь написать более точный код.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.