При активной разработке в расширениях 1С часто возникает проблема их «раздувания». Это происходит, когда при добавлении формы или макета платформа автоматически «затягивает» в расширение сам объект метаданных (справочник, документ или задачу), даже если мы не планировали изменять его свойства. Со временем расширение становится громоздким, его сложно обновлять, а поиск реально измененных объектов превращается в проблему. Разберем детально, как определить лишние объекты и безопасно их удалить, сохранив при этом работоспособность ваших доработок.
Прежде чем приступать к радикальным мерам, воспользуемся инструментами, которые уже встроены в среду разработки 1С. В окне конфигурации расширения есть механизмы, позволяющие быстро отсеять неизмененные объекты.
Рассмотрим порядок действий:
Проанализируем результат: если объект метаданных (например, Справочник.Контрагенты) исчез из дерева при включении этого фильтра, значит, он был добавлен в расширение «просто так» и не содержит уникальных изменений в своих свойствах или модулях. Однако, если объект остался в дереве, но вы точно знаете, что не меняли его реквизиты, это сигнализирует о том, что внутри него есть доработанная форма или макет.
Часто программисты боятся удалять объект метаданных из расширения, опасаясь, что «отвалятся» формы. Выясним причину этого страха. На самом деле, если форма доработана, она может существовать в расширении самостоятельно, ссылаясь на типы данных основной конфигурации.
Выполним следующие шаги для проверки:
.cfe).Важный нюанс: Платформа 1С позволяет хранить в расширении только те части объекта, которые отличаются от основной конфигурации. Если вы удаляете «заголовок» справочника, но оставляете в расширении его форму, форма продолжит работать, так как базовое описание справочника будет подтянуто из основной базы.
Это один из самых надежных способов для опытных разработчиков. Когда мы выгружаем расширение в файлы, мы видим реальную структуру XML. Если файл описания объекта содержит только базовый заголовок без блока Properties или с пустыми значениями, этот объект — кандидат на удаление.
Разберем процесс по шагам:
Для автоматизации этого процесса можно использовать скрипты на OneScript, которые сравнивают XML-файлы расширения и основной конфигурации. Если различий нет — файл и упоминание об объекте можно смело удалять из структуры выгрузки, а затем загрузить конфигурацию обратно из файлов.
Если вы используете EDT, задача значительно упрощается. EDT визуально подсвечивает изменения гораздо нагляднее, чем стандартный конфигуратор.
Рассмотрим преимущества этого подхода:
diff (разницу) между текущим состоянием расширения и «чистым» состоянием. Если файл объекта в Git показывает только добавление пустой структуры, его можно исключить.Посмотрим на интересную хитрость, которую можно провернуть в обычном конфигураторе:
.cfe.Допустим, у нас в расширении есть Справочник.ДоговорыКонтрагентов, который попал туда из-за правки формы. Если мы хотим убедиться, что программный код не завязан на расширение этого справочника, проанализируем модули. В расширении модули объектов могут быть пустыми, но существовать.
Проверьте наличие методов с аннотациями:
&НаСервере
&Вместо("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ, Замещение)
// Если здесь пусто или только вызов ПродолжитьВызов(),
// то этот метод и сам объект в расширении могут быть лишними.
ПродолжитьВызов(Отказ, Замещение);
КонецПроцедуры
Если вы обнаружили подобные «пустые» перехватчики, их следует удалить вместе с объектом метаданных, чтобы не замедлять работу системы лишними вызовами программного слоя расширений.
Чтобы ваше расширение оставалось «легким» и управляемым, придерживайтесь следующих правил:
Очистка расширения от «мусора» — это не просто эстетическая процедура, а важный этап оптимизации производительности и упрощения дальнейшей поддержки конфигурации 1С.