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