Как удалить документ, добавленный через расширение конфигурации, если он не отображается в списке удаления помеченных объектов?

Программист IT и автоматизация бизнеса
← На главную

При активной разработке в среде 1С:Предприятие 8.3 программисты часто сталкиваются с ситуацией, когда новые объекты (документы, справочники), созданные внутри расширения конфигурации, ведут себя не совсем так, как объекты основной конфигурации. Типичный сценарий: вы создали документ в расширении, добавили его в подсистему, назначили права, успешно создали несколько экземпляров и даже пометили их на удаление. Однако при запуске стандартной обработки «Удаление помеченных объектов» через меню «Обслуживание» система просто не видит эти документы, хотя подсистема из расширения в списке может присутствовать.

Рассмотрим детально, почему это происходит, разберем внутренние механизмы платформы и Библиотеки стандартных подсистем (БСП), а также выясним, какими способами можно окончательно удалить такие данные из информационной базы.

Разбор причины: БСП против Платформы

Прежде всего, проанализируем ситуацию и поймем разницу между двумя типами обработок, которые пользователи называют «стандартными». В современных конфигурациях (таких как БП 3.0, УТ 11, ERP) пункт меню «Администрирование — Обслуживание — Удаление помеченных объектов» вызывает программную обработку, написанную разработчиками 1С на языке самой платформы. Эта обработка входит в состав Библиотеки стандартных подсистем (БСП).

Логика работы обработки БСП сложнее, чем кажется. Она не просто сканирует таблицы базы данных. Для оптимизации и предоставления удобного интерфейса она опирается на специальный справочник ИдентификаторыОбъектовМетаданных. Если объект из расширения по какой-то причине не попал в этот справочник или кэш метаданных БСП не обновился, программный код обработки просто проигнорирует ваш документ. В то же время, в платформу встроена «настоящая» стандартная обработка, которая работает на уровне движка 1С:Предприятие и видит абсолютно все объекты, зарегистрированные в системе, независимо от того, добавлены они в основной конфигурации или через расширение.

Решение №1: Использование платформенного механизма

Если вам нужно оперативно удалить объекты и нет времени на перенастройку логики БСП, воспользуемся инструментами технического специалиста. Это самый надежный способ, так как он работает напрямую с метаданными платформы.

  1. Зайдем в систему под пользователем с полными правами (роль Администратор системы или Полные права).
  2. Откроем главное меню (три полоски в верхнем левом углу) и выберем пункт «Функции для технического специалиста» (в старых версиях платформы это называлось «Все функции»). Если этот пункт не отображается, его нужно включить в Настройки — Параметры — Режим технического специалиста.
  3. В открывшемся окне развернем узел «Стандартные».
  4. Найдем пункт «Удаление помеченных объектов». Обратите внимание: мы ищем именно в ветке «Стандартные», а не в «Обработки».
  5. Запустим этот механизм. Проанализируем список: теперь ваш документ из расширения должен гарантированно появиться в перечне объектов для удаления.

Этот метод хорош тем, что он игнорирует настройки БСП и справочники-идентификаторы, работая напрямую с коллекцией Метаданные.Документы, включая расширения.

Решение №2: Обновление идентификаторов метаданных (для БСП)

Если мы хотим, чтобы в будущем пользователи могли удалять эти документы через привычный интерфейс «Обслуживание», нам необходимо «познакомить» БСП с новыми метаданными. Рассмотрим, как это сделать программно или через административные процедуры.

Основная проблема заключается в том, что справочник ИдентификаторыОбъектовМетаданных заполняется при обновлении конфигурации. Но расширения могут подключаться «на лету», и БСП не всегда автоматически инициирует обновление этого справочника для объектов расширений. Чтобы исправить это, можно выполнить следующий код в консоли кода или через внешнюю обработку:


Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(Истина, Ложь, Ложь);

Этот метод заставит систему перечитать структуру метаданных и добавить в справочник ссылки на документы из вашего расширения. После выполнения данной команды обработка в разделе «Обслуживание» начнет видеть ваши объекты.

Решение №3: Проверка прав доступа и безопасного режима

Выясним еще одну возможную причину невидимости объектов. При подключении расширения в списке расширений (Администрирование — Печатные формы, отчеты и обработки — Расширения) есть важный флажок — «Безопасный режим».

Разберем ситуацию: если флажок установлен, расширение работает в ограниченном контексте. Многие механизмы БСП, которые запускаются в фоновых заданиях (а удаление помеченных часто работает именно как фоновое задание), могут иметь проблемы с доступом к данным «безопасного» расширения. Попробуем выполнить следующие действия:

  1. Перейдем в список расширений конфигурации.
  2. Найдем наше расширение и снимем галочку «Безопасный режим».
  3. Снимем также флажок «Защита от опасных действий» (если это допустимо в вашей политике безопасности).
  4. Перезапустим сеанс 1С.

Также важно убедиться, что права на удаление документа прописаны не только в роли внутри расширения, но и корректно подхвачены системой прав доступа. Проанализируем настройки профиля групп доступа пользователя: иногда требуется явно добавить созданную в расширении роль в профиль, чтобы механизмы поиска ссылок ПравоДоступа("Чтение", ТипЗнч(Объект)) отрабатывали корректно.

Почему это важно для разработчика?

Проанализируем разницу в программном подходе. Когда мы пишем собственный алгоритм обхода документов, мы используем конструкцию:


Для Каждого ОбъектаМетаданных Из Метаданные.Документы Цикл
    // Этот цикл увидит и объекты расширения, если они подключены
КонецЦикла;

Однако БСП часто использует запросы к таблицам базы данных или к вышеупомянутому справочнику идентификаторов. Поэтому при добавлении новых типов данных через расширение всегда нужно помнить о «регистрации» этих типов в экосистеме БСП. В современных версиях Библиотеки стандартных подсистем разработчики добавили поддержку расширений, но она корректно работает только при условии правильной инициализации данных после установки расширения.

Резюмируем: если документ не виден в «Обслуживании» — используйте Стандартную обработку из Функций технического специалиста. Это быстрое и 100% рабочее решение проблемы. Если же нужно системное исправление — обновляйте ИдентификаторыОбъектовМетаданных и проверяйте настройки безопасного режима расширения.

← На главную