В процессе длительной эксплуатации и регулярного обновления конфигураций 1С (особенно таких динамичных, как Бухгалтерия предприятия 3.0 или ERP), в дереве метаданных неизбежно скапливаются объекты с префиксом Удалить. Это происходит потому, что разработчики 1С при изменении архитектуры решения не удаляют старые справочники, документы или регистры мгновенно, чтобы дать возможность обработчикам обновления корректно перенести данные в новые структуры. Однако со временем такие объекты начинают загромождать конфигурацию, усложнять поиск и увеличивать размер информационной базы.
Рассмотрим подробнее, как эффективно провести «инвентаризацию» в дереве объектов, отличить «мусор» поставщика от важных внутренних доработок и безопасно выполнить очистку.
Проанализируем самый надежный способ определения принадлежности объекта. Визуально в дереве метаданных не всегда понятно, был ли объект добавлен вашим разработчиком или он пришел из старого релиза типового решения. Для этого воспользуемся механизмом поддержки.
Конфигурация — Поддержка — Настройка поддержки.Выясним причину появления префиксов. Согласно стандартам разработки 1С, при выводе объекта из эксплуатации ему присваивается префикс Удалить. Например, УдалитьЗамерыВремени или УдалитьРезультатыОбменаДанными.
Проанализируем ситуацию с внутренними доработками. Хорошим тоном считается использование уникальных префиксов для собственных объектов (например, ит_СправочникКлиентов или Доп_РегистрСведений). Если ваши разработчики не следовали этому правилу, отличить их объекты от «удаляемых» объектов 1С сложнее. В таком случае нам поможет поиск ссылок в коде.
Если возникли сомнения, является ли объект «забытым» наследником старых релизов 1С или чьим-то творчеством, выполним сравнение конфигураций. Разберем по шагам:
БП 3.0.Х.Х)..cf.Конфигурация — Сравнить, объединить с конфигурацией из файла.УдалитьИмяОбъекта, значит, 1С его уже окончательно удалила из своих дистрибутивов, и в вашей базе он остался «мертвым грузом» после прошлых обновлений, где галочка «удалять объекты» была снята.Прежде чем нажать кнопку Delete, крайне важно убедиться, что объект пуст. Если в объекте с префиксом Удалить все еще есть данные, это может означать, что процедуры обновления не отработали до конца или данные не были перенесены.
Посмотрим на пример простого кода, который можно запустить во внешней обработке для проверки заполненности таблицы (на примере регистра сведений):
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| *
|ИЗ
| РегистрСведений.УдалитьРезультатыОбменаДанными КАК Результаты";
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Сообщить("Внимание! Объект содержит данные. Удалять нельзя.");
Иначе
Сообщить("Объект пуст, можно рассматривать удаление.");
КонецЕсли;
Проанализируем результат: если запрос возвращает записи, необходимо выяснить их ценность. Возможно, это архивные данные, которые больше не нужны, но решение об их удалении должен принимать ответственный за учет (бухгалтер или аналитик).
Даже если объект пуст и помечен на удаление разработчиками 1С, на него могут существовать ссылки в программном коде. Это критично для «обработчиков завершения обновления». Выясним, как это проверить:
Ctrl + Shift + F (Глобальный поиск).РезультатыОбменаДанными).Удалить... или в модулях обновления (ОбновлениеИнформационнойБазыБП), это допустимо.Рассмотрим стратегию безопасной очистки, чтобы избежать падения системы при следующем обновлении:
Удалить) и отсутствуют в текущем окне настройки поддержки.Таким образом, процесс очистки базы от старых объектов 1С — это не просто удаление строк из списка, а аналитическая работа по сопоставлению текущей конфигурации с эталонной поставкой и проверка программных зависимостей. Соблюдение этих шагов позволит вам держать конфигурацию в чистоте и порядке, не опасаясь за сохранность уникальных доработок предприятия.