Работа с 1С:Зарплата и Управление Персоналом (ЗУП) рано или поздно сталкивает пользователей с необходимостью очистки базы от ненужных данных. Помеченные на удаление объекты — это не просто "мусор", а элементы, которые занимают место в базе, замедляют работу системы и могут искажать отчетность. Однако просто нажать "Удалить" в интерфейсе программы недостаточно: 1С ЗУП использует механизм пометки на удаление, который требует дополнительных действий для физического удаления данных.
В этой статье мы разберем все актуальные способы удаления помеченных объектов — от стандартных инструментов платформы до специализированных обработок. Особое внимание уделим рискам потери данных при некорректной очистке и нюансам работы с разными версиями 1С:ЗУП 3.1 и 1С:ЗУП 2.5. Инструкции подойдут как для опытных администраторов, так и для пользователей с базовыми правами доступа.
Почему помеченные объекты не удаляются сразу
Механизм пометки на удаление в 1С:Предприятие — это защита от случайного удаления важных данных. Когда вы нажимаете "Пометить на удаление" (или используете аналогичную команду), система:
- 📌 Не удаляет объект физически, а лишь ставит метку
ПометкаУдаления = Истина - 🔄 Сохраняет все ссылки на объект в других документах и регистрах
- 📊 Исключает объект из большинства отчетов и обработок
- 🔒 Блокирует редактирование помеченного объекта
Такой подход позволяет:
- 🔄 Восстановить объект, если он был помечен ошибочно
- 📋 Сохранить целостность данных (например, если на сотрудника ссылаются закрытые ведомости)
- 🛡️ Предотвратить каскадное удаление связанных документов
Однако со временем накапливаются сотни помеченных объектов — устаревшие кадровые документы, тестовые начисления, дубли сотрудников. Это приводит к:
- ⚠️ Замедлению работы базы (особенно при большом количестве помеченных объектов)
- 📉 Искажению аналитических отчетов (например, по текучести кадров)
- 🔍 Осложнению поиска актуальных данных
Способ 1: Стандартная обработка "Удаление помеченных объектов"
Самый безопасный и рекомендуемый метод — использование встроенной обработки УдалениеПомеченныхОбъектов.epf. Она доступна во всех версиях 1С:ЗУП и позволяет удалить объекты с проверкой ссылочной целостности.
Пошаговая инструкция:
- Откройте 1С:ЗУП в режиме "1С:Предприятие" (не в конфигураторе!)
- Перейдите в меню
Файл → Открыть... - Выберите обработку по пути:
C:\Program Files\1cv8\8.3.{версия}\bin\1cv8\templates\1C\ЗарплатаИУправлениеПерсоналом\УдалениеПомеченныхОбъектов.epf⚠️ Внимание: Путь может отличаться в зависимости от версии платформы и способа установки. Если обработки нет по указанному пути, найдите её через поиск по диску по имени файла.
- В открывшемся окне обработки нажмите кнопку "Выполнить"
- Дождитесь завершения процедуры (может занять от нескольких минут до часов при большом объеме данных)
Особенности метода:
- 🔹 Работает только для объектов, не имеющих ссылок в других документах
- 🔹 Не удаляет объекты, защищенные от изменения (например, закрытые периоды)
- 🔹 Создает лог операций, который можно сохранить для отчетности
Сделать резервную копию базы|Закрыть все сеансы пользователей|Проверить права доступа (нужны права администратора)|Выполнить тестовое удаление на копии базы|Подготовить список объектов для исключения из удаления-->
Способ 2: Удаление через конфигуратор (для опытных пользователей)
Если стандартная обработка не справляется с задачей (например, из-за большого количества ссылок), можно использовать режим конфигуратора. Этот метод требует осторожности, так как позволяет обойти некоторые защиты платформы.
Инструкция:
- Закройте все сеансы 1С:Предприятие и откройте базу в режиме
Конфигуратор - Перейдите в меню
Администрирование → Тестирование и исправление... - В открывшемся окне выберите закладку "Удаление помеченных объектов"
- Установите флаги:
- 🔘 "Удалять помеченные объекты"
- 🔘 "Игнорировать ошибки ссылочной целостности" (только если уверены в своих действиях!)
- Нажмите "Выполнить" и дождитесь завершения операции
- 🔄 Перезапустите базу в режиме 1С:Предприятие
- 📋 Проверите логи на наличие ошибок (они сохраняются в файле
1CV8Log\*.log) - 📊 Выполните тестовые отчеты, чтобы убедиться в целостности данных
- 🎯 Более гибкие настройки (можно исключать определенные типы объектов)
- 📈 Высокая скорость работы с большими базами (более 100 000 помеченных объектов)
- 📊 Детальная отчетность о выполненных действиях
- 🛡️ Встроенные механизмы резервного копирования перед удалением
Предупреждения:
⚠️ Внимание: Флаг "Игнорировать ошибки ссылочной целостности" может привести к повреждению базы данных, если удаляемые объекты критически важны для работы системы. Используйте его только в крайних случаях и после создания резервной копии.
После завершения операции:
Что делать если конфигуратор "завис" при удалении?
Если процесс удаления помеченных объектов через конфигуратор длится более 2-3 часов без прогресса:
1. Не закрывайте конфигуратор принудительно — это может повредить базу.
2. Дождитесь 10-15 минут и проверьте загрузку процессора в Диспетчере задач.
3. Если загрузка CPU близка к 0% — вероятно, процесс завершился, но интерфейс не обновился.
4. Попробуйте нажать Esc или закрыть окно тестирования — иногда это "разбудит" интерфейс.
5. В крайнем случае перезапустите 1С:Предприятие и проверьте целостность базы через chdbfl.exe (утилита проверки базы 1С).
Способ 3: Использование специализированных обработок
Для сложных случаев (например, когда нужно удалить объекты с сохранением части ссылок) существуют внешние обработки от партнеров 1С. Наиболее популярные:
| Название обработки | Особенности | Подходит для версий | Стоимость |
|---|---|---|---|
| Универсальная обработка удаления помеченных объектов (от 1С-Рарус) | Позволяет гибко настраивать критерии удаления, сохраняет логи, работает с большими базами | ЗУП 3.1, ЗУП 2.5, УПП | От 3 000 руб. |
| CleanUp (от компании "АйТи-Проект") | Автоматическое удаление с анализом ссылочной целостности, поддержка распределенных баз | ЗУП 3.1, ERP 2.4 | От 5 000 руб. |
| УдалениеПомеченныхОбъектовPro (самостоятельная разработка) | Бесплатная обработка с открытым кодом, требует доработки под конкретную базу | ЗУП 3.1 (с адаптацией) | Бесплатно |
Преимущества специализированных обработок:
Как выбрать обработку:
- Оцените объем помеченных объектов (через отчет
"Анализ помеченных объектов") - Проверьте совместимость с вашей версией 1С:ЗУП и платформы 1С:Предприятие
- Изучите отзывы на форумах (например, на Infostart или 1С:ИТС)
- Протестируйте на копии рабочей базы
Перед покупкой обработки запросите у разработчика тестовую версию. Многие компании предоставляют демо-версии с ограничением по количеству удаляемых объектов (например, до 100 штук).
Способ 4: Ручное удаление через запросы (для программистов 1С)
Для пользователей, владеющих языком запросов 1С, доступен метод прямого удаления через Запрос. Этот способ самый опасный, но иногда единственно возможный для очистки сильно фрагментированных баз.
Пример кода для удаления помеченных сотрудников:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Сотрудники.Ссылка КАК Ссылка
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
|ГДЕ
| Сотрудники.ПометкаУдаления = ИСТИНА";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
Попытка
Объект.Удалить(Истина); // Параметр "Истина" - удаление без проверки ссылок
Исключение
ЗаписатьЛог(ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
Важные нюансы:
- 🔹 Этот метод обходит стандартные проверки 1С, что может привести к нарушению целостности данных
- 🔹 Всегда используйте конструкцию
Попытка...Исключениедля отлова ошибок - 🔹 Перед выполнением сделайте полный бекап базы и протестируйте запрос на копии
- 🔹 Для сложных объектов (например, документов начисления зарплаты) может потребоваться каскадное удаление связанных записей в регистрах
Расширенный пример с удалением связанных записей в регистре ЗарплатаКадрыДанныеПоСотрудникам:
// 1. Получаем список помеченных сотрудников
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Справочник.Сотрудники ГДЕ ПометкаУдаления = ИСТИНА";
Результат = Запрос.Выполнить();
// 2. Удаляем записи в регистре ссылок
Для Каждого Строка Из Результат Цикл
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗарплатаКадрыДанныеПоСотрудникам.Ссылка КАК Ссылка
|ИЗ
| РегистрСведений.ЗарплатаКадрыДанныеПоСотрудникам КАК ЗарплатаКадрыДанныеПоСотрудникам
|ГДЕ
| ЗарплатаКадрыДанныеПоСотрудникам.Сотрудник = &Сотрудник";
Запрос.УстановитьПараметр("Сотрудник", Строка.Ссылка);
РезультатРегистра = Запрос.Выполнить();
// Удаляем найденные записи
ВыборкаРегистра = РезультатРегистра.Выбрать();
Пока ВыборкаРегистра.Следующий() Цикл
ОбъектРегистра = ВыборкаРегистра.Ссылка.ПолучитьОбъект();
ОбъектРегистра.Удалить();
КонецЦикла;
// 3. Удаляем самого сотрудника
СотрудникОбъект = Строка.Ссылка.ПолучитьОбъект();
СотрудникОбъект.Удалить(Истина);
КонецЦикла;
Ручное удаление через запросы должно быть последним средством. В 90% случаев задачу можно решить стандартными обработками или внешними инструментами с меньшими рисками.
Частые ошибки и как их избежать
При удалении помеченных объектов пользователи часто сталкиваются с типичными проблемами. Вот самые распространенные ошибки и способы их предотвращения:
| Ошибка | Причина | Решение |
|---|---|---|
| "Недостаточно прав для удаления" | У пользователя нет роли "Администратор" или "Полные права" | Запустите операцию от имени администратора или временно назначьте нужные права |
| "Объект используется в документе [Номер]" | На объект есть ссылки в других документах или регистрах | Используйте обработку с флагом "Игнорировать ссылки" или удалите зависящие документы |
| "Превышено время ожидания блокировки" | База используется другими пользователями, или транзакция слишком долгая | Закройте все сеансы, разбейте операцию на части или выполните в нерабочее время |
| "Недостаточно памяти" | Слишком большой объем данных для обработки | Увеличьте память для 1С в параметрах запуска или разбейте операцию на этапы |
Дополнительные рекомендации:
- 🔹 Никогда не прерывайте процесс удаления — это может привести к повреждению индексов базы данных
- 🔹 После массового удаления выполните
Тестирование и исправление ИБв конфигураторе - 🔹 Если после удаления появились ошибки в отчетах, проверьте
Журнал регистрациина наличие записей об удаленных объектах
Особый случай: если после удаления помеченных объектов 1С ЗУП начала выдавать ошибки при открытии документов (например, "Не найден объект ссылочного типа"), это означает, что были удалены объекты, на которые ссылаются актуальные данные. В этом случае:
- Восстановите базу из резервной копии
- Используйте отчет
"Анализ ссылочной целостности"(доступен в некоторых внешних обработках) - Удалите только те объекты, которые не имеют ссылок в актуальных документах
Как автоматизировать регулярную очистку
Чтобы избегать накопления помеченных объектов, настройте регулярную автоматизированную очистку. Вот несколько способов:
1. Регламентное задание в 1С:
- 🔄 Создайте регламентное задание через
Администрирование → Регламентные задания - 📅 Настройте расписание (например, раз в месяц в нерабочее время)
- 📋 Укажите обработку
УдалениеПомеченныхОбъектов.epfв качестве выполняемого действия
2. Внешний скрипт с использованием 1С:Предприятие 8.3 в командной строке:
"C:\Program Files\1cv8\8.3.20.1566\bin\1cv8.exe" DESIGNER /S "Сервер\База" /N "Администратор" /P "Пароль" /Execute "C:\scripts\cleanup.epf" /Out "C:\logs\cleanup.log"
3. Интеграция с системой резервного копирования:
- 🔄 Настройте автоматическое создание бекапа перед очисткой
- 📋 Используйте 1С:Технология автоматизированного тестирования для проверки целостности после удаления
- 📊 Ведите журнал операций очистки (дату, время, количество удаленных объектов)
Пример скрипта для PowerShell, который выполняет очистку и отправляет отчет по email:
$1CPath = "C:\Program Files\1cv8\8.3.20.1566\bin\1cv8.exe"
$Base = "srvasp\zup_base"
$User = "Admin"
$Password = "SecurePassword123"
$ScriptPath = "C:\1C\scripts\cleanup.epf"
$LogPath = "C:\1C\logs\cleanup_$(Get-Date -Format 'yyyyMMdd').log"
Выполняем очистку
Start-Process -FilePath $1CPath -ArgumentList "DESIGNER /S `$Base` /N `$User` /P `$Password` /Execute `$ScriptPath` /Out `$LogPath`" -Wait
Отправляем лог по email
$EmailFrom = "1c-admin@company.ru"
$EmailTo = "it-department@company.ru"
$Subject = "Отчет об очистке 1С ЗУП от $(Get-Date -Format 'dd.MM.yyyy')"
$Body = "Очистка завершена. Лог прикреплен."
$Attachment = $LogPath
Send-MailMessage -From $EmailFrom -To $EmailTo -Subject $Subject -Body $Body -Attachment $Attachment -SmtpServer "smtp.company.ru"
Для крупных предприятий с распределенными базами 1С ЗУП рекомендуется:
- 🔹 Использовать 1С:Дистрибьютор для синхронизации очистки между узлами
- 🔹 Назначать ответственного за очистку в каждом филиале
- 🔹 Вести единый реестр удаленных объектов (например, в 1С:Документооборот)
FAQ: Ответы на частые вопросы
Можно ли восстановить объект после физического удаления?
Нет, после физического удаления (не путайте с пометкой на удаление!) объект восстановить невозможно. Исключение — если у вас есть резервная копия базы, сделанная до удаления. В этом случае можно восстановить базу из бекапа и экспортировать нужный объект.
Если объект был просто помечен на удаление, его можно восстановить через стандартный интерфейс: откройте список объектов (например, справочник "Сотрудники"), включите отображение помеченных на удаление (кнопка "Показать помеченные") и снимите пометку.
Почему после удаления помеченных объектов база не уменьшилась в размере?
Физическое удаление объектов не всегда приводит к уменьшению файла базы данных (.1CD). Это связано с особенностями работы СУБД 1С:Предприятие:
- 🔹 Удаленные данные помечаются как свободное пространство, но не удаляются физически
- 🔹 Файл базы может фрагментироваться, занимая больше места на диске
- 🔹 Некоторые объекты (например, регистры накопления) хранят данные в сжатом виде
Чтобы реально уменьшить размер базы:
- Выполните
Тестирование и исправление ИБс флагом "Реструктуризация таблиц" - Сделайте выгрузку/загрузку данных через
dt/xml - Используйте утилиту
chdbfl.exeс ключом/CompactDb
Как удалить помеченные объекты в облачной версии 1С ЗУП?
В 1С:ЗУП, размещенной на сервисах 1С:Фреш или 1С:Линк, возможности по удалению помеченных объектов ограничены:
- 🔹 Стандартная обработка
УдалениеПомеченныхОбъектов.epfдоступна, но может работать медленнее - 🔹 Нет доступа к конфигуратору и прямым запросам к базе
- 🔹 Массовое удаление может быть заблокировано политиками провайдера
Рекомендации:
- Используйте стандартную обработку в непиковые часы (ночь или выходные)
- Обратитесь в поддержку сервиса с просьбой выполнить очистку на стороне провайдера
- Рассмотрите возможность перехода на гибридную схему (часть данных в облаке, архивные — на локальном сервере)
⚠️ Внимание: В облачных сервисах 1С могут действовать ограничения на объем хранимых данных. Перед массовым удалением уточните тарифный план и условия хранения архивных данных.
Какие объекты в 1С ЗУП чаще всего накапливаются как помеченные на удаление?
В 1С:Зарплата и Управление Персоналом наиболее подвержены накоплению следующие типы объектов:
| Тип объекта | Причина накопления | Рекомендация по очистке |
|---|---|---|
| Сотрудники | Уволенные сотрудники, дубли, тестовые записи | Удалять после закрытия всех связанных документов (ведомости, начисления) |
| Документы "Прием на работу" | Ошибочно созданные записи, дубли | Проверять ссылки в кадровых отчетах перед удалением |
| Начисления (регистр "ЗарплатаКадрыНачисления") | Тестовые начисления, ошибочные записи | Удалять только после перерасчета зарплаты |
| Графики работы | Устаревшие графики, дубли | Проверять использование в документах "Табель" |
| Физические лица | Дубли, ошибочно созданные записи | Удалять только если нет ссылок в справочнике "Сотрудники" |
Для аналитики используйте отчет "Анализ помеченных объектов по типам" (доступен в некоторых внешних обработках).
Можно ли удалить помеченные объекты выборочно (например, только сотрудников)?
Да, для выборочного удаления используйте:
- Стандартную обработку с фильтром по типу объекта (в некоторых версиях ЗУП доступен выбор типов объектов для удаления)
- Внешние обработки (например, Универсальная обработка удаления от 1С-Рарус позволяет выбирать конкретные справочники и документы)
- Запросы 1С с явным указанием типа объекта (пример приведен в разделе "Способ 4")
Пример фильтра для стандартной обработки (если поддерживается):
// Установить фильтр на справочник "Сотрудники"
Фильтр = Новый Структура("ТипОбъекта", СправочникСсылка.Сотрудники);
Обработка.УстановитьФильтр(Фильтр);
Для сложных случаев (например, удаление сотрудников уволенных до определенной даты) лучше использовать специализированные обработки с гибкими настройками фильтрации.