Чистка базы ЗУП 3.1 от документов и элементов с пометкой удаления: пять способов и где они ломаются
Содержание
Удалить документы, помеченные на удаление, в 1С ЗУП 3.1
можно через Администрирование → Обслуживание → Корректировка данных → Удаление помеченных объектов. Обработка находит все объекты с пометкой, проверяет, не ссылается ли на них что-то ещё, и удаляет только те, на которые ссылок нет. Остальные она покажет списком с причиной.
Частое заблуждение: «поставил крестик — документ удалён». Нет. Пометка только прячет документ из учёта, а сам он остаётся в базе, пока кто-то с нужными правами не запустит окончательное удаление. Поэтому база ЗУП с годами обрастает сотнями «мёртвых» начислений, отпусков и приказов.
Почему пометка не удаляет документ сразу
В 1С удаление сделано в два этапа намеренно. Объекты в базе связаны ссылками: сотрудник указан в начислении зарплаты, начисление — в документе-исправлении, физическое лицо — в десятках кадровых документов. Если стереть объект мгновенно, в связанных документах вместо значения останется «битая» ссылка <Объект не найден>.
Что происходит при установке пометки:
- 📌 у документа появляется признак удаления, в списке он перечёркнут;
- 📌 проведённый документ при пометке распроводится — его движения по регистрам начислений, НДФЛ и взносов исчезают;
- 📌 запись физически остаётся в базе и её можно вернуть, сняв пометку;
- 📌 окончательное удаление выполняется отдельной операцией с контролем ссылок.
Пометка — это «корзина». Удаление помеченных — её очистка. Пока корзина не очищена, документ можно восстановить одной командой Снять пометку удаления в списке.
Подготовка: копия базы, права и монопольный режим
Удаление необратимо. Отменить его кнопкой нельзя, вернуть данные можно только из резервной копии.
Перед удалением сделайте резервную копию базы. В файловой базе — копия каталога при закрытой программе или выгрузка .dt через Конфигуратор (Администрирование → Выгрузить информационную базу). В клиент-серверной — штатный бэкап СУБД.
Что проверить до запуска:
- Права. Обработку видят пользователи с полными правами. Рядовому расчётчику команда обычно недоступна — это сделано специально.
- Кто ещё в базе. Обработка работает и при других пользователях, но если кто-то в этот момент открыл помеченный документ или ссылается на него из нового документа, удаление этого объекта не пройдёт. Удобнее запускать вечером или в выходной.
- Закрытые периоды. Посмотрите, нет ли среди помеченных документов за периоды, по которым уже сдана отчётность (6-НДФЛ, РСВ, ЕФС-1). Об этом подробнее — в разделе о том, что удалять нельзя.
Монопольный режим для штатной обработки не обязателен. Он нужен, если вы хотите гарантию, что никто не создаст новые ссылки во время удаления. Включить его можно, командой Блокировка работы пользователей в разделе Администрирование → Обслуживание и предупредив коллег заранее: их сеансы будут завершены.
Способ 1. Штатная обработка удаления помеченных объектов в ЗУП
Это основной и самый безопасный путь. Платформа сама проверяет ссылки и ничего не ломает.
Как запустить
- Откройте
Администрирование → Обслуживание. - В группе
Корректировка данныхнажмитеУдаление помеченных объектов. - Выберите режим: удалить всё помеченное автоматически или отметить конкретные объекты вручную.
- Запустите удаление и дождитесь окончания. В большой базе это может занять от нескольких минут до часа.
Выборочное удаление
Если в базе помечены тысячи объектов, а удалить нужно, например, только черновики отпусков за прошлый год, используйте ручной выбор. Обработка покажет дерево по видам объектов: снимите флажки со всего, кроме нужной группы.
💡 Удобный порядок для ЗУП: сначала документы, потом справочники. Помеченный сотрудник не удалится, пока на него ссылаются помеченные начисления. Если удалять всё сразу, платформа сама разберётся с цепочкой, но при выборочном удалении порядок важен.
Что делать с «неудалёнными» объектами
После прохода обработка выводит список объектов, которые удалить не удалось, и для каждого — что мешает. Типичная картина:
| Что не удалилось | Что на него ссылается | Что делать |
|---|---|---|
| Сотрудник | Непомеченные начисления, табели, приказы | Решить, нужен ли он; если нет — помечать и связанные документы |
| Документ «Начисление зарплаты» | Документ-исправление или ведомость | Сначала разобраться с ведомостью или исправлением |
| Вид расчёта | Плановые начисления сотрудников | Не удалять: вид расчёта используется в учёте |
| Подразделение | Штатное расписание, кадровые документы | Чаще всего снять пометку и оставить |
Двойной щелчок по строке открывает объект, который держит ссылку. Если ссылка лишняя, исправьте её и запустите удаление ещё раз.
Удаление по расписанию
В ЗУП 3.1 есть регламентное задание для автоматического удаления помеченных. Найти его можно в Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания: в списке ищите задание со словами «удаление помеченных».
Включать его стоит осознанно. Автоудаление лишает пользователей «корзины»: документ, помеченный по ошибке в пятницу, к понедельнику уже исчезнет.
Способ 2. Через «Все функции» и Конфигуратор
Если команды в разделе Администрирование не видно (урезанные права, нестандартный интерфейс), есть платформенный вариант той же операции.
Стандартная обработка платформы
- Включите меню «Все функции»: главное меню (кнопка с тремя полосками) →
Сервис → Параметры→ флажокОтображать команду "Все функции". - Откройте
Все функции → Стандартные → Удаление помеченных объектов. - Нажмите поиск помеченных, просмотрите список, затем выполните удаление.
Логика та же: контроль ссылок, отчёт о неудалённых. Отличается только интерфейс — он проще и без группировки по разделам ЗУП.
Что может Конфигуратор, а что нет
Отдельной команды «удалить помеченные» в Конфигураторе платформы 8.3 нет. Удаление данных выполняется в режиме 1С:Предприятие. Конфигуратор здесь полезен для другого:
- 🛠 сделать выгрузку
.dtперед чисткой; - 🛠 запустить
Администрирование → Тестирование и исправление, если после аварийного удаления в базе остались битые ссылки (нужен монопольный режим, все пользователи должны выйти); - 🛠 выдать роль с правом интерактивного удаления помеченных пользователю, которому нужно чистить базу без полных прав (
Администрирование → Пользователи, вкладкаПрочиев карточке пользователя); - 🛠 открыть базу в режиме отладки, если нужно понять, какой код мешает удалению.
Способ 3. Код на встроенном языке
Программное удаление нужно, когда штатная обработка не справляется: база на сотни тысяч помеченных объектов, нужно удалить только объекты одного вида или выполнить чистку ночью по своим правилам.
Главное правило: перед удалением проверить ссылки. Метод Удалить() у объекта удаляет его сразу, без контроля. Если пропустить проверку, вы получите те самые битые ссылки.
Пример для внешней обработки: удаляет помеченные документы одного вида, на которые никто не ссылается. Код выполняется на сервере.
&НаСервере
Процедура УдалитьПомеченныеОтпускаНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Д.Ссылка КАК Ссылка
|ИЗ
| Документ.Отпуск КАК Д
|ГДЕ
| Д.ПометкаУдаления";
Выборка = Запрос.Выполнить().Выбрать();
Удалено = 0;
Пропущено = 0;
Пока Выборка.Следующий() Цикл
Ссылки = Новый Массив;
Ссылки.Добавить(Выборка.Ссылка);
Найденные = НайтиПоСсылкам(Ссылки);
ЕстьЧужиеСсылки = Ложь;
Для Каждого Строка Из Найденные Цикл
Если Строка.Данные <> Выборка.Ссылка Тогда
ЕстьЧужиеСсылки = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если ЕстьЧужиеСсылки Тогда
Пропущено = Пропущено + 1;
Продолжить;
КонецЕсли;
Попытка
Выборка.Ссылка.ПолучитьОбъект().Удалить();
Удалено = Удалено + 1;
Исключение
Пропущено = Пропущено + 1;
КонецПопытки;
КонецЦикла;
Сообщить(СтрШаблон("Удалено: %1, пропущено: %2",
Формат(Удалено, "ЧН=0; ЧГ=0"), Формат(Пропущено, "ЧН=0; ЧГ=0")));
КонецПроцедуры
Строка Строка.Данные <> Выборка.Ссылка отсекает ссылки документа на самого себя — их платформа тоже возвращает в НайтиПоСсылкам. Замените Документ.Отпуск на нужный вид документа или справочника.
Сначала прогоните код на копии базы. На рабочей — только после резервной копии и в нерабочее время: удаление сотен документов нагружает сервер.
💡 Чтобы получить все помеченные объекты базы одним массивом, есть глобальный метод НайтиПомеченныеНаУдаление(). На большой базе он работает долго, поэтому для точечной чистки запрос по одному виду объектов удобнее.
Способ 4. Внешние обработки
Готовые внешние обработки для удаления помеченных распространяются в интернете. Обычно они дают то, чего нет в штатной: фильтр по периоду, по виду документа, удаление порциями, лог в файл.
Как подключить в ЗУП 3.1:
- Включите использование дополнительных обработок:
Администрирование → Печатные формы, отчеты и обработки→ флажокДополнительные отчеты и обработки. - Перейдите по ссылке
Дополнительные отчеты и обработкии добавьте файл.epfиз файла. - Разовый запуск без регистрации — через главное меню
Файл → Открыть. Для этого у пользователя должно быть право открывать внешние обработки, а программа покажет предупреждение о безопасности.
Перед запуском чужой обработки откройте её в Конфигураторе и посмотрите код. Ищите две вещи:
- 🔍 вызывает ли она
НайтиПоСсылкамили иначе проверяет ссылки передУдалить(); - 🔍 не включает ли
ОбменДанными.Загрузка = Истина— этот режим отключает проверки при записи и удалении.
Если ни того, ни другого понять не удаётся — используйте штатную обработку. Скорость не стоит битой базы.
Способ 5. SQL-запросы: почему лучше не надо
В клиент-серверной базе данные лежат в таблицах СУБД, и пометка удаления хранится там отдельным полем. Технически строку можно удалить SQL-запросом. На практике это худший вариант.
Чем опасно удаление в обход платформы:
- ❌ у документа есть строки табличных частей в отдельных таблицах — они останутся «висеть»;
- ❌ движения по регистрам, итоги и записи в служебных таблицах не пересчитаются;
- ❌ ссылки из других объектов никто не проверит — битых ссылок будет больше, чем при любом другом способе;
- ❌ изменения в обход платформы не регистрируются для обменов (например, с Бухгалтерией).
SQL оправдан только для чтения: оценить объём мусора, посчитать строки. Имена таблиц у каждой базы свои; соответствие объектов и таблиц возвращает метод ПолучитьСтруктуруХраненияБазыДанных(). Само удаление всё равно выполняйте средствами 1С.
Сравнение способов
| Способ | Когда подходит | Риски |
|---|---|---|
| Обработка в разделе «Администрирование» | Почти всегда | Минимальные, ссылки проверяются |
| «Все функции → Стандартные» | Нет команды в интерфейсе ЗУП | Минимальные |
| Код на встроенном языке | Большие объёмы, точечная чистка | Ошибка в проверке ссылок — битые ссылки |
| Внешняя обработка | Нужны фильтры и порционность | Непроверенный код |
| SQL | Только оценка объёма | Порча базы, рассинхрон обменов |
Что удалять безопасно, а что лучше оставить с пометкой
Не всё помеченное стоит стирать. В ЗУП ошибка здесь бьёт по отчётности.
✅ Удалять можно:
- черновики, которые ни разу не проводились и созданы по ошибке;
- дубли документов, созданные копированием;
- помеченные документы текущего, ещё не закрытого месяца после проверки, что они действительно не нужны;
- пустые элементы справочников без истории.
⛔ Лучше не удалять:
- документы закрытых периодов, по которым уже сдана отчётность. Если удалить такой документ и потом перепровести период, суммы в 6-НДФЛ, РСВ или персонифицированных сведениях могут разойтись с уже сданными. Ошибки прошлых периодов в ЗУП исправляют документами-исправлениями, а не удалением;
- сотрудников и физических лиц с кадровой историей — даже уволенных. Их данные нужны для справок и запросов СФР;
- виды расчёта, подразделения, должности, которые встречаются в старых документах.
Документы по личному составу и первичные документы учёта обязаны храниться годами — первичку по закону о бухучёте не менее пяти лет, кадровые документы ещё дольше. Удаление записи из базы эту обязанность не снимает, поэтому для старых периодов удобнее оставить пометку, чем стереть документ.
Ошибки при удалении помеченных документов в ЗУП
Удалили всё подряд, а потом «пропали» начисления. Обработка не удалит то, на что ссылаются. Но если расчётчик в своё время пометил нужный документ вместо исправления, после удаления его уже не вернуть. Перед массовой чисткой отфильтруйте список помеченных по автору и дате и просмотрите хотя бы крупные документы.
Объект «не удаляется», хотя ссылок вроде нет. Чаще всего ссылается сам помеченный документ, который вы сняли с выбора. Запустите удаление ещё раз в режиме «все помеченные» — платформа удалит цепочку целиком. Если не помогло, откройте строку из отчёта и посмотрите, кто держит ссылку: это может быть регистр сведений , а не документ.
Удаление прервалось на середине. Например, из-за обрыва связи. Уже удалённое не вернётся, остальное осталось с пометкой. Запустите обработку снова. Если в документах появились <Объект не найден>, выполните Тестирование и исправление в Конфигураторе на копии базы и только потом на рабочей.
Не видно команды удаления. Значит, у пользователя нет прав. Выход — запуск под администратором или выдача отдельной роли, а не правка конфигурации.
Можно ли восстановить документ после удаления помеченных?
Чем пометка удаления отличается от отмены проведения?
Влияет ли удаление помеченных на размер базы?
Нужно ли удалять помеченные регулярно?
Удалятся ли данные в Бухгалтерии, если настроена синхронизация?
Источники
- Федеральный закон от 06.12.2011 № 402-ФЗ «О бухгалтерском учёте», ст. 29