Удаление объектов в 1С: от пометки до полной очистки базы
Содержание
В 1С почти ничего не удаляется сразу. Сначала объект помечают на удаление, потом отдельной обработкой удаляют все помеченные. Если нужно убрать сотни строк, их сначала выделяют группой. Если нужно очистить всю базу, это уже другая задача с другими инструментами.
Какой способ выбрать? Один дубль контрагента: пометка и удаление помеченных. Сотня лишних номенклатурных позиций: выделение группой и групповая пометка. Тестовые данные перед запуском: выгрузка пустой базы или чистка администратором. Прямые SQL-команды — для случаев, когда больше ничего не помогло.
Как выделить несколько объектов в списке
Выделение — первый шаг к любой массовой операции. Работает в любом списке: справочник, журнал документов , регистр.
- 🖱 Несколько подряд. Кликните первую строку, зажмите
Shift, кликните последнюю. - 🖱 Выборочно. Зажмите
Ctrlи кликайте нужные строки. - ⌨ Все строки списка.
Ctrl+A. - 🔎 По условию. Сначала отберите список: быстрый поиск над таблицей, фильтр по реквизиту или «Отбор и сортировка» в меню «Ещё». Потом
Ctrl+A.
Выделенные строки подсвечиваются. Теперь любая команда из меню «Ещё» или кнопка «Пометить на удаление» применится ко всем сразу.
Перед Ctrl+A проверьте, что отбор действительно включён. Без него вы выделите весь справочник, а не нужные 40 позиций.
Если в списке есть иерархия (группы номенклатуры), пометка группы не помечает вложенные элементы автоматически. 1С обычно спрашивает, помечать ли и подчинённые объекты. Читайте вопрос, а не жмите «Да» по привычке.
Пометка на удаление в интерфейсе
Пометка ничего не стирает. Объект остаётся в базе, но получает флаг и в списке показывается с красным крестиком. В большинстве форм списков такие объекты можно скрыть или показать через настройки отбора.
Как пометить
- Выделите объект или группу объектов в списке.
- Нажмите клавишу
Delлибо кнопку «Пометить на удаление» (в меню «Ещё» или на панели списка). - Подтвердите вопрос.
- Проверьте: на строке появился крестик.
Повторное нажатие снимает пометку. Так можно вернуть случайно помеченный объект, пока не запущено окончательное удаление.
Что с документами
Проведённый документ нельзя просто пометить: сначала система снимет проведение. Движения по регистрам при этом пропадут, и итоги в отчётах изменятся. Если документ закрытого периода, действует запрет редактирования данных прошлых периодов, а значит, потребуются права или временное снятие даты запрета.
| Что помечаете | Что происходит | Что проверить |
|---|---|---|
| Элемент справочника | Получает флаг, остаётся в базе | Нет ли ссылок из документов |
| Проведённый документ | Проведение отменяется, затем ставится флаг | Не менялись ли итоги и закрытый период |
| Группа справочника | Флаг на группе, вложенные по запросу | Согласились ли на подчинённые |
| Запись регистра | Обычно удаляется через документ-основание | Какой документ её создал |
💡 Помеченный документ можно оставить «на подумать» неделю: в отчётах он не участвует, а вернуть его легко.
Удаление помеченных объектов: основной способ
Это стандартная обработка, ради которой всё затевалось. Она находит все помеченные объекты, проверяет, нет ли на них ссылок, и стирает те, что можно.
Где она находится
В большинстве типовых конфигураций она живёт в разделе администрирования: «Администрирование» → «Обслуживание» → «Удаление помеченных объектов». Если пункта нет на панели, найдите его поиском по меню: введите слово «помеченных» в строку поиска команд. Точное расположение зависит от конфигурации и версии, поэтому лучше не искать по памяти, а использовать поиск.
Порядок действий
- Сделайте резервную копию базы . Удаление необратимо.
- Убедитесь, что в базе больше никто не работает . Для удаления нужен монопольный доступ, иначе обработка предложит завершить сеансы.
- Откройте обработку и выберите режим «Автоматическое удаление всех помеченных объектов».
- Нажмите «Удалить» и дождитесь окончания. В большой базе (миллионы записей) это занимает от нескольких минут до часа.
- Прочитайте итоговое окно: оно покажет, что удалено, а что нет и почему.
Второй режим, «Выборочное удаление», показывает список помеченных объектов с галочками. Он нужен, когда часть помеченного удалять рано: оставьте галочки только на тех объектах, которые точно лишние.
Часть объектов «не удалилась» после первого прохода? Это нормально. Запустите обработку повторно: иногда после удаления документов освобождаются ссылки на справочники, и они удаляются со второго-третьего захода.
Типовой сценарий: неудачная загрузка прайса
Допустим, из файла загрузилось 600 позиций номенклатуры с кривыми наименованиями. Порядок такой:
- Отберите справочник по дате создания или по группе, куда попала загрузка.
- Нажмите
Ctrl+Aи выделите все отобранные строки. - Пометьте их на удаление одной командой.
- Запустите обработку удаления в выборочном режиме и снимите галочки с позиций, по которым уже есть документы.
- Для оставшихся замените ссылки на правильные позиции и повторите удаление.
Так вы не трогаете чужие данные и не удаляете то, что уже участвует в учёте. Весь процесс занимает полчаса вместо дня ручной работы.
Массовые изменения: групповая обработка реквизитов
Иногда нужно не только пометить, но сначала поправить объекты: сменить группу, снять признак, заполнить пустой реквизит. Для этого в типовых конфигурациях есть обработка «Групповое изменение реквизитов» (в некоторых версиях она называется «Групповое изменение объектов»). Её открывают из меню «Ещё» списка либо из раздела администрирования, если включены дополнительные возможности.
Как с ней работать
- Выделите нужные строки в списке и вызовите обработку из меню «Ещё» (так она получит выбранные объекты сразу).
- В левой части формы найдите реквизит, который надо изменить, и задайте новое значение.
- Нажмите «Изменить реквизиты».
- Проверьте результат в списке.
Обычно в этой обработке есть и реквизит «Пометка удаления»: выставив его, вы пометите все выбранные объекты разом, не нажимая Del в каждой строке. На большом объёме (3000 позиций после неудачной загрузки прайса) разница ощутима: минуты против часов.
Если обработка не видна, у пользователя нет права на неё. Её выдаёт администратор через профиль группы доступа, а не правкой интерфейса.
💡 Тренируйтесь на копии базы. Обработка меняет объекты необратимо, и «Отмены» у неё нет.
Если объект не удаляется: ссылки и конфликты
Самая частая проблема. Обработка пишет, что объект используется в другом месте, и отказывается его стирать.
Что значит «ссылки на объект»
Объект, на который есть ссылка из другого объекта, нельзя стереть без последствий: документ «потеряет» контрагента. Поэтому 1С проверяет это перед удалением и отказывает.
В итоговом окне нажмите на строку с проблемным объектом. Откроется перечень мест использования: документы, регистры, другие справочники.
Что делать
- 📄 Ссылается документ. Пометьте его на удаление тоже, если он тестовый или ошибочный. Если документ нужный, замените в нём объект на правильный и перепроведите.
- 🗂 Ссылается справочник. Освободите связь: замените значение в связанном элементе.
- 🔁 Дубль, который нужно оставить. Не удаляйте его, а объедините: многие конфигурации умеют «Заменить ссылки и удалить» (поиск и удаление дублей, обработка «Поиск и удаление дублей» в разделе администрирования). Она переносит все ссылки на основной элемент.
- 🔒 Предопределённый элемент. Он не удаляется вообще, это защита платформы.
- 👥 Данные заблокированы. Другой пользователь держит объект: завершите его сеанс.
Права доступа и обмены: кто вправе удалять
Удаление помеченных объектов считается опасной операцией, и 1С разрешает её не всем.
Пометить на удаление обычно может любой, у кого есть право редактирования объекта. А вот окончательно удалить может только пользователь с отдельным правом на эту операцию. В типовых конфигурациях оно входит в профиль «Администратор» и в ряд профилей руководящих ролей.
Если вы бухгалтер и обработка не открывается, не просите дать «полные права». Пусть администратор выдаст одно право: так проще потом разбираться в журнале.
Для баз с обменом действует ещё одно правило. Удаление на узле-источнике не всегда доезжает до приёмника. Проверьте настройки правил обмена: передаётся ли пометка удаления и как приёмник на неё реагирует. Если нет, придётся удалять в обеих базах.
Очистка базы целиком: тестовые данные и чистка таблиц
Бывает, что нужно не удалить объекты, а обнулить базу после тестов или перед запуском в работу. Здесь пометка не поможет: помечать придётся всё вручную.
Варианты
| Способ | Когда | Риски |
|---|---|---|
| Выгрузка пустой базы | Новая база без данных нужна на той же конфигурации | Теряются данные, настройки и пользователи, если не сохранить их отдельно |
| Свёртка базы | Нужно оставить остатки, а историю убрать | Доступна не во всех конфигурациях, нужна копия |
| Удаление помеченных после массовой пометки | Нужно убрать часть документов за период | Долго на больших объёмах |
| Создание новой базы из шаблона | Старая база не нужна | Нужно перенести справочники |
Для тестовых баз проще всего создать новую пустую базу на нужной конфигурации и перенести справочники нужными способами (загрузка из файла, обмен).
Очистка служебных данных
Отдельно можно чистить то, что не относится к учёту: журнал регистрации, историю изменений, старые версии объектов, кэш. Это делается в разделе администрирования («Обслуживание» и подобные пункты) или специальными обработками. Журнал регистрации при желании можно сократить по сроку хранения: так база меньше разрастается.
Локальный кэш клиента, если он «залип», чистят вне базы. Закройте 1С и удалите каталог кэша пользователя или запустите клиент с параметром:
1cv8.exe ENTERPRISE /ClearCache
Прямое удаление через SQL и консоль запросов
Это крайняя мера. Консоль запросов в 1С умеет только читать данные: ей можно найти нужные объекты, но стереть нельзя. Для удаления используют обработки с кодом или прямые команды СУБД.
Прямое удаление из таблиц SQL ломает целостность базы. Платформа не узнает, что записи исчезли, а ссылки на них останутся. Такая база может перестать открываться или считать с ошибками.
Когда к этому всё же прибегают:
- Объект «неубиваем» штатными средствами, а мешает работе (например, остался после аварийного завершения).
- Есть полная резервная копия на уровне СУБД.
- Известна структура таблиц и точно понятно, что удаляется.
Пример безопасной проверки: прежде чем что-то удалять, посчитайте, сколько записей затронет условие:
SELECT COUNT(*) FROM _Reference123 WHERE _Marked = 1
Имя таблицы (_Reference123) у каждого справочника своё, оно определяется в конфигураторе через сопоставление имён хранения. Не копируйте его из примеров.
Если можно обойтись обработкой, обойдитесь обработкой. Для простых случаев вроде «убрать записи, оставшиеся от дубля» подойдёт штатный поиск и удаление дублей, а запрос выберет их для проверки.