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