В процессе работы с программами на платформе 1С:Предприятие 8.3 часто возникает необходимость массово удалить документы. Казалось бы, типовая обработка Групповое изменение реквизитов должна справляться с этой задачей мгновенно. Однако многие пользователи сталкиваются с неприятной ситуацией: флаг «Пометка на удаление» установлен, но документ продолжает «делать движения», влияя на остатки, взаиморасчеты и финансовый результат. В этой статье мы подробно разберем, почему так происходит и как выполнить групповое удаление правильно.
Для начала разберем техническую сторону вопроса. В платформе 1С существует принципиальная разница между простым изменением значения реквизита и вызовом специального метода объекта. Когда мы вручную помечаем документ на удаление в списке, платформа вызывает метод УстановитьПометкуУдаления(Истина). Этот метод выполняет транзакционное действие: он не только меняет значение ПометкаНаУдаление на Истина, но и автоматически вызывает процедуру отмены проведения, которая очищает все записи в регистрах (движения).
Проанализируем ситуацию с обработкой Групповое изменение реквизитов. Если в настройках этой обработки включены специфические режимы, она может выполнять «упрощенную» запись объекта. В этом случае просто меняется значение булева реквизита, а стандартные обработчики событий (такие как ПередЗаписью или ПриЗаписи), отвечающие за очистку движений, попросту игнорируются.
Как выяснилось в ходе обсуждения, наиболее частой причиной «зависших» движений является включенный Режим разработчика в дополнительных параметрах обработки. Рассмотрим подробнее, как это работает.
В современных конфигурациях на базе БСП (Библиотека стандартных подсистем) при включении режима разработчика обработка устанавливает свойство ОбменДанными.Загрузка = Истина. Для платформы это сигнал: «Я просто загружаю готовые данные, не нужно проверять логику, не нужно удалять движения, просто запиши то, что я даю». Это ускоряет процесс, но нарушает целостность учета.
Что нужно сделать:
Групповое изменение реквизитов.После отключения режима разработчика обработка начнет записывать объекты в стандартном режиме, и движения будут очищаться корректно.
Если документов, которые нужно удалить, не сотни тысяч, а несколько сотен или пара тысяч, самым надежным способом будет использование стандартного функционала формы списка. Этот метод гарантированно вызывает УстановитьПометкуУдаления.
Разберем этот способ по шагам:
Ctrl + A, чтобы выделить все строки.Delete на клавиатуре или выберите в контекстном меню (правая кнопка мыши) пункт Пометить на удаление / Снять пометку.Этот метод считается «золотым стандартом» для обычного пользователя, так как он исключает ошибки, связанные с некорректной настройкой технических обработок.
Иногда требуется более тонкая настройка. В некоторых версиях обработки Групповое изменение реквизитов доступна вкладка «Произвольный код». Мы можем написать небольшой фрагмент на языке 1С, который выполнит задачу максимально корректно. Посмотрим на пример кода:
// В контексте обработки объект доступен как "Объект"
Если Объект.Проведен Тогда
Объект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
КонецЕсли;
Объект.УстановитьПометкуУдаления(Истина);
Такой подход гарантирует, что сначала будет вызвана штатная отмена проведения, а затем установлена пометка удаления. Проанализируем ситуацию: даже если документ был просто записан, но не проведен, метод УстановитьПометкуУдаления(Истина) отработает корректно.
Для опытных администраторов и программистов существуют инструменты с более широким функционалом. Проанализируем упоминание обработки «Универсальный подбор и обработка объектов». В отличие от стандартного группового изменения, она позволяет более гибко управлять процессом записи.
При использовании этой обработки:
Если «беда уже случилась», и вы видите в базе «документы-призраки», которые помечены крестиком, но продолжают отображаться в отчетах, не паникуйте. Рассмотрим алгоритм исправления:
Вариант А (через интерфейс):
Вариант Б (через Групповое изменение реквизитов):
Если документов очень много, выберите их в обработке и измените реквизит Проведен в значение Ложь. Убедитесь, что Режим разработчика выключен. После этого документы перестанут делать движения, хотя флаг пометки на удаление у них уже стоит.
Подводя итог, можно сказать, что главным виновником проблемы является использование технических режимов записи, которые обходят бизнес-логику конфигурации. Для безопасной работы следуйте правилам:
Ctrl + A в списке документов.Группового изменения реквизитов всегда проверяйте, чтобы Режим разработчика был выключен.Помните, что массовые операции с данными требуют предварительного создания резервной копии информационной базы. Это спасет ваши данные в случае непредвиденных ошибок при групповой обработке объектов.