Как из расширения 1С удалить лишние метаданные, не зацепив доработанные объекты?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Метод 1. Использование стандартных фильтров конфигуратора

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

Рассмотрим порядок действий:

  1. Откройте окно конфигурации вашего расширения.
  2. В верхней панели инструментов окна расширения найдите кнопку фильтра (иконка воронки).
  3. Выберите пункт «Показывать только измененные и добавленные в расширении».

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

Метод 2. Поиск ссылок и проверка целостности

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

Выполним следующие шаги для проверки:

  1. Нажмите правой кнопкой мыши (ПКМ) на сомнительном объекте в расширении и выберите «Поиск ссылок на объект».
  2. Если ссылки ведут только на формы, которые также находятся в этом расширении, попробуйте временно удалить объект (предварительно сделав резервную копию файла .cfe).
  3. Если платформа не выдает критических предупреждений о нарушении целостности, значит, объект был лишь «контейнером» для формы.

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

Метод 3. Выгрузка конфигурации в файлы и текстовый анализ

Это один из самых надежных способов для опытных разработчиков. Когда мы выгружаем расширение в файлы, мы видим реальную структуру XML. Если файл описания объекта содержит только базовый заголовок без блока Properties или с пустыми значениями, этот объект — кандидат на удаление.

Разберем процесс по шагам:

  1. Перейдите в меню «Конфигурация» — «Выгрузить конфигурацию в файлы...».
  2. Откройте полученную папку. Каждый объект метаданных будет представлен отдельным XML-файлом.
  3. Проанализируем содержание файлов. Объекты, которые были затянуты «за компанию», имеют минимальный размер (обычно до 1-2 Кб) и не содержат специфических настроек.

Для автоматизации этого процесса можно использовать скрипты на OneScript, которые сравнивают XML-файлы расширения и основной конфигурации. Если различий нет — файл и упоминание об объекте можно смело удалять из структуры выгрузки, а затем загрузить конфигурацию обратно из файлов.

Метод 4. Использование инструментов 1C:EDT (Enterprise Development Tools)

Если вы используете EDT, задача значительно упрощается. EDT визуально подсвечивает изменения гораздо нагляднее, чем стандартный конфигуратор.

Рассмотрим преимущества этого подхода:

Метод 5. Сравнение и объединение «самого с собой»

Посмотрим на интересную хитрость, которую можно провернуть в обычном конфигураторе:

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

Практический пример работы с кодом и формами

Допустим, у нас в расширении есть Справочник.ДоговорыКонтрагентов, который попал туда из-за правки формы. Если мы хотим убедиться, что программный код не завязан на расширение этого справочника, проанализируем модули. В расширении модули объектов могут быть пустыми, но существовать.

Проверьте наличие методов с аннотациями:


&НаСервере
&Вместо("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ, Замещение)
    // Если здесь пусто или только вызов ПродолжитьВызов(), 
    // то этот метод и сам объект в расширении могут быть лишними.
    ПродолжитьВызов(Отказ, Замещение);
КонецПроцедуры

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

Резюме и рекомендации

Чтобы ваше расширение оставалось «легким» и управляемым, придерживайтесь следующих правил:

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

← На главную