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