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