В процессе администрирования систем на базе 1С:Предприятие 8.3, таких как ЗКГУ или ЗУП, специалисты часто сталкиваются с необходимостью быстрой очистки базы от ненужных данных. Одной из таких задач является удаление записей из справочника ВерсииРасширений. В этой статье мы подробно разберем, как включить права на интерактивное удаление, почему это может быть опасно и как правильно использовать штатные механизмы системы для очистки системных данных.
Интерактивное удаление — это возможность пользователя удалить объект из базы данных без предварительной установки пометки на удаление и последующего контроля ссылочной целостности. В типовых конфигурациях 1С это право по умолчанию отключено практически для всех ролей, чтобы избежать появления «битых ссылок».
Разберем по шагам, как предоставить право на непосредственное удаление объекта в конфигураторе:
УдалениеОбъектовИнтерактивно), а не изменять типовые, чтобы не возникло сложностей при обновлении.ВерсииРасширений).Важное замечание: При работе с ролями в конфигураторе мы часто видим кнопки «Установить все права» или «Снять все права». Проанализируем ситуацию: использование этих функций крайне нежелательно. Установка всех прав для роли значительно увеличивает объем метаданных конфигурации, что ведет к росту «веса» файла 1Cv8.cf и замедлению процесса обновления базы. Правильнее предоставлять права точечно только на необходимые объекты.
Справочник ВерсииРасширений является системным и входит в состав Библиотеки стандартных подсистем (БСП). Он хранит информацию о комбинациях расширений, которые были активны в системе в разные периоды времени. Это необходимо для работы механизма разделения данных и корректной десериализации объектов.
Выясним причину, по которой элементы этого справочника могут оставаться в базе даже после удаления самих расширений. Когда мы удаляем расширение из списка, система помечает соответствующие записи в справочнике ВерсииРасширений на удаление, но не удаляет их физически. Это происходит потому, что на данные записи могут ссылаться регистры сведений, хранящие параметры работы этих самых расширений.
Вместо того чтобы прибегать к опасному интерактивному удалению, рассмотрим штатный механизм очистки, заложенный разработчиками БСП. За этот процесс отвечают два ключевых регламентных задания:
ПараметрыРаботыВерсийРасширений). Оно подготавливает данные к удалению, очищая зависимости.Рассмотрим алгоритм правильной очистки справочника:
УдалениеУстаревшихПараметровРаботыВерсийРасширений и запустим его вручную.УдалениеПомеченныхОбъектов.Проанализируем ситуацию, если объекты всё равно не удаляются. Это часто происходит из-за того, что ссылки на версию расширения сохраняются в журнале регистрации или в кэше метаданных. В таких случаях система безопасности 1С блокирует удаление для предотвращения логических ошибок.
Если штатные задания не справляются, а интерактивное удаление через интерфейс включать не хочется, программист может воспользоваться программным методом. Разберем пример кода, который можно запустить во внешней обработке для принудительного удаления объекта:
Процедура УдалитьОбъектПрограммно(СсылкаНаОбъект)
Попытка
Объект = СсылкаНаОбъект.ПолучитьОбъект();
Если Объект <> Неопределено Тогда
// Удаляем объект непосредственно из базы данных
Объект.Удалить();
Сообщить("Объект успешно удален: " + СсылкаНаОбъект);
КонецЕсли;
Исключение
Инфо = ИнформацияОбОшибке();
Сообщить("Не удалось удалить объект: " + КраткоеПредставлениеОшибки(Инфо));
КонецПопытки;
КонецПроцедуры
При использовании метода Удалить() следует быть предельно осторожными. В отличие от метода УстановитьПометкуУдаления(), данный метод не проверяет наличие ссылок на объект в других таблицах базы данных. Это может привести к появлению записей вида <Объект не найден...> в связанных документах или регистрах.
Посмотрим на ситуацию с точки зрения стабильности системы. Записи в справочнике ВерсииРасширений весят крайне мало и практически не влияют на производительность базы данных. Если они помечены на удаление, но не уходят через стандартную обработку «Удаление помеченных объектов», значит, система считает их важными для сохранения целостности данных о прошлых сеансах.
Рекомендации по безопасной работе:
Подведем итог: включение права на интерактивное удаление в 1С технически осуществляется через настройку ролей в конфигураторе, однако для системных справочников, таких как ВерсииРасширений, правильным путем является использование регламентных заданий БСП. Это гарантирует отсутствие ошибок в будущем и стабильную работу программы при обновлении релизов.