Очистка базы 1С УНФ от помеченных на удаление объектов
Содержание
Удалить объект в 1С:УНФ в два клика нельзя — сначала его помечают на удаление (клавиша Del или команда в списке), а потом стирают из базы отдельной обработкой Удаление помеченных объектов. Запускается она из раздела Настройки → Поддержка и обслуживание. Два шага сделаны специально: между пометкой и удалением программа проверяет, не ссылается ли на объект что-то ещё.
Прямого «стереть насовсем» в интерфейсе нет именно из-за этих связей. Документ продажи может ссылаться на контрагента, контрагент — на договор, договор — на счёт. Сотри одну карточку напрямую — и десятки документов останутся с «висящей» ссылкой. Поэтому помеченные объекты накапливаются, а чистят базу разом, когда это безопасно.
Откуда вообще берётся «мусор» в УНФ: дубли номенклатуры и контрагентов после загрузки из обмена или из файла, отменённые и ошибочные заказы, тестовые документы из периода внедрения, устаревшие цены и спецификации. Всё это копится месяцами, тормозит списки и раздувает файл базы — поэтому периодическая чистка входит в обычное обслуживание.
Ниже — как пометить объекты по одному и пачкой, где найти обработку удаления, чем отличаются её режимы и что делать, когда объект отказывается удаляться.
Как пометить объект и увидеть все пометки
Пометка — обратимое действие. Помеченный объект остаётся в базе, продолжает участвовать в отчётах и проводках, но получает значок перечёркнутого элемента (красный крестик) и попадает в очередь на удаление.
Пометить объект можно тремя способами:
- 🖱️ выделить строку в списке (справочнике или журнале документов) и нажать
Del; - 📋 правой кнопкой по строке →
Пометить на удаление / Снять пометку; - 📝 открыть карточку объекта и нажать там кнопку
Еще→Пометить на удаление / Снять пометку.
Снимается пометка теми же командами — повторным нажатием. Пока объект не удалён окончательно, пометку можно вернуть без последствий.
Чтобы увидеть, сколько «мусора» накопилось, откройте нужный список и настройте отбор по признаку пометки на удаление. В большинстве списков УНФ это делается через Еще → Настроить список → отбор по полю Пометка удаления. Так вы отделите помеченные карточки от рабочих до того, как запускать удаление.
Отдельно включать «отображение помеченных» в УНФ не нужно: перечёркнутые элементы видны в списках по умолчанию. Если мешают — их прячут тем же отбором, но наоборот (показывать только непомеченные).
Групповая пометка и снятие в списках
Когда чистить нужно десятки строк, помечать по одной долго. Выделите диапазон мышью с зажатым Shift или отдельные строки с Ctrl, затем нажмите Del — пометка встанет сразу на всё выделение. Снять групповую пометку можно так же.
Если нужно пометить весь список целиком (например, пробные данные в тестовой базе), выделите все строки сочетанием Ctrl+A, после чего Del.
Групповая пометка срабатывает мгновенно и на все выделенные строки. Перед Ctrl+A + Del убедитесь, что в списке нет отбора, который скрывает часть записей — помечено будет только то, что реально выделено, но легко задеть лишнее, если забыть про действующий фильтр.
Групповая пометка — это по-прежнему только пометка. Из базы объекты уйдут лишь после запуска обработки удаления. Это разные операции: пометка готовит очередь, обработка её разбирает.
Где запустить удаление помеченных объектов в УНФ
Основной инструмент — стандартная обработка Удаление помеченных объектов. Путь:
- Откройте раздел
Настройки. - Перейдите в группу
Поддержка и обслуживание. - Выберите команду
Удаление помеченных объектов.
Название группы в вашем релизе может отличаться на одно-два слова, но команда всегда лежит в блоке обслуживания базы, рядом с резервным копированием и свёрткой. Если не находите её в разделе — воспользуйтесь полем поиска команд в главном меню (значок ≡ в правом верхнем углу) и введите «удаление помеченных».
Перед первым массовым удалением сделайте резервную копию базы
. Операция необратима: восстановить удалённые объекты можно только из бэкапа. Копия делается там же, в Поддержка и обслуживание → Резервное копирование, либо средствами сервера в клиент-серверном варианте.
Автоматический и выборочный режимы удаления
Открыв обработку, вы выбираете, как именно её запускать.
Автоматический (полный) режим. Программа сама находит все помеченные объекты и пытается удалить их целиком. Это два этапа:
- поиск всех объектов с пометкой на удаление;
- проверка, не ссылается ли на каждый из них что-то ещё.
Объекты, на которые никто не ссылается, удаляются сразу. Те, что ещё используются, остаются в базе — по ним выводится список «мешающих» ссылок.
Выборочный режим. Вы сами отмечаете галочками, какие именно помеченные объекты удалять, а какие пока оставить. Удобно, когда чистить нужно точечно, не трогая всё подряд.
Для первой чистки обычно выбирают автоматический режим, а разбираются уже с тем, что не удалилось. Для регулярной уборки, когда часть пометок намеренно «висит», берут выборочный.
Порядок удаления программа выстраивает сама. Связанные объекты уходят «снизу вверх»: сначала документы, потом справочники, на которые они ссылались. Поэтому за один автоматический проход нередко удаляется целая цепочка — например, помеченный заказ покупателя вместе с помеченным контрагентом, который больше нигде не встречается. Если же на контрагента ссылается хоть один рабочий документ, не удалятся ни он, ни зависящие от этого объекты, которые идут следом.
Иногда обработку запускают в несколько проходов: после первого удаления часть ранее заблокированных объектов освобождается (ссылавшиеся на них документы уже стёрты), и повторный запуск забирает их. Это штатное поведение, а не ошибка.
На большой базе первый этап (поиск и проверка ссылок) может идти заметно долго — это нормально. Не прерывайте обработку: она не ломает данные, просто считает связи по всей базе.
Если объект не удаляется: ссылочная целостность
Главная причина, по которой помеченный объект остаётся в базе, — на него ссылаются другие, непомеченные объекты. Это и есть контроль ссылочной целостности: программа не даёт стереть то, что ещё где-то используется, чтобы не оставить битых ссылок.
После проверки обработка показывает по каждому «несдавшемуся» объекту список того, что на него ссылается. Отсюда и действуют:
- 🔗 перейти по ссылке — двойным кликом открыть мешающий документ прямо из результата проверки;
- ✂️ убрать ссылку — в этом документе заменить объект на другой или очистить поле;
- 🗑️ пометить и мешающий объект — если он тоже не нужен, пометьте его на удаление и повторите обработку;
- 🔁 повторить проверку — после правок запустить удаление ещё раз.
Если мешающий объект нужен, но ссылка устарела (например, старый договор в карточке контрагента) — правьте карточку, а не удаляйте связанное. Удаление по цепочке применяют осознанно: сначала помечают всю группу связанных ненужных объектов, потом запускают обработку одним проходом.
Типичные «якоря», из-за которых объект не удаляется в УНФ:
- 📦 номенклатура — есть движения по складу, остатки, цены или она стоит в спецификации/комплекте;
- 🧾 контрагент — на него завязаны договоры, счета, взаиморасчёты или настройки обмена;
- 💳 счёт или касса — указаны в документах оплаты и в настройках по умолчанию;
- 👤 сотрудник — есть по нему начисления, выплаты или кадровые документы.
В каждом случае сначала разбираются с движениями и документами, и только потом удаляют саму карточку.
Особенности файлового и клиент-серверного режимов
Сам механизм удаления одинаков, но запускать его удобнее по-разному.
| Что учесть | Файловый вариант | Клиент-серверный вариант |
|---|---|---|
| Кто должен быть в базе | Лучше запускать, когда никто больше не работает | Можно днём, но тяжёлую чистку планируют на ночь |
| Где считается | На компьютере, где открыта база | На сервере 1С:Предприятия |
| Фоновый запуск | Идёт только пока открыт сеанс | Доступны фоновые и регламентные задания на сервере |
| Блокировки | Выше риск конфликта при общей работе | Блокировки держит сервер, но пользователи ощутят замедление |
Монопольный (эксклюзивный) доступ к базе для удаления помеченных объектов не нужен — обработка работает в обычном режиме 1С:Предприятия, не в Конфигураторе. Монопольный режим требуется для других задач (обновление структуры, загрузка .dt, тестирование и исправление), а не для чистки.
Хотя монополия не нужна, во время удаления данные блокируются порциями, и работающие пользователи могут получать сообщения о конфликте блокировок. Поэтому массовую чистку запускают, когда в базе никого нет, либо в клиент-серверном варианте — фоновым заданием ночью.
В файловой базе фоновое задание живёт только пока открыт хоть один сеанс — закрыли УНФ, задание остановилось. В клиент-серверном варианте сервер выполняет регламентные задания сам, независимо от того, подключены пользователи или нет.
Автоматизация очистки базы
Если база быстро обрастает помеченными объектами (активные продажи, обмены, регулярный импорт), чистку имеет смысл автоматизировать.
В клиент-серверном варианте удаление помеченных объектов можно выполнять по расписанию как регламентное задание. Расписание задают в списке регламентных и фоновых заданий (раздел Настройки → Поддержка и обслуживание, либо через администрирование кластера). Поставьте запуск на ночные часы, когда нагрузка минимальна.
В файловом варианте полноценного расписания нет: регламентные задания исполняются только во время активного сеанса. Практичный выход — раз в неделю или месяц вручную открывать обработку в выборочном режиме и чистить накопившееся.
Автоматическую чистку безопаснее настраивать в выборочной логике — чтобы по расписанию не удалялось то, что помечено временно и ещё используется. Если сомневаетесь, оставьте запуск ручным: раз в месяц потратить пять минут надёжнее, чем разбирать последствия ночного удаления нужного объекта.
Отдельно о производительности: чем больше в базе накопилось пометок, тем дольше идёт проверка ссылок. Регулярная чистка небольшими порциями работает быстрее и предсказуемее, чем разовая уборка за весь год.
Ещё один момент, который часто упускают: удаление объектов не уменьшает размер файловой базы само по себе. Записи освобождаются внутри файла 1Cv8.1CD, но физически он не сжимается. Чтобы реально вернуть место на диске после крупной чистки, запускают тестирование и исправление информационной базы со сжатием таблиц — и вот эта операция уже требует монопольного доступа, то есть выполняется, когда в базе никого нет. В клиент-серверном варианте за физический объём отвечает СУБД, и обслуживанием занимается администратор сервера.
Частые вопросы
Чем пометка на удаление отличается от самого удаления?
Удаление помеченных объектов.Можно ли удалить объект сразу, минуя пометку?
Как вернуть ошибочно помеченный объект?
Del или Пометить на удаление / Снять пометку повторно. Если объект уже удалён обработкой — только восстановление базы из резервной копии.