Как добавить недостающие кнопки в заимствованную форму расширения 1С после обновления?

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

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

Понимание механизма заимствования

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

Способ 1: Использование механизма «Обновить из конфигурации»

Самый простой и предпочтительный метод — принудительное обновление заимствованного объекта. Рассмотрим этот процесс по шагам:

  1. Откройте конфигуратор и перейдите в дерево метаданных вашего расширения.
  2. Найдите заимствованную форму в разделе «Документы» или «Справочники».
  3. Нажмите на неё правой кнопкой мыши.
  4. В контекстном меню выберите пункт «Обновить из конфигурации» (в некоторых версиях платформы этот функционал доступен через меню «Конфигурация» — «Расширения конфигурации» — «Обновить из основной конфигурации»).

Этот метод позволяет платформе 1С сравнить текущую структуру формы в расширении с оригиналом и добавить недостающие элементы. Будьте внимательны: если вы уже вносили изменения в ту же командную панель, платформа может задать вопрос о разрешении конфликтов.

Способ 2: Ручное добавление команд в форму

Если автоматическое обновление не принесло результата, попробуем дозаимствовать элементы вручную через работу с командами:

  1. Откройте форму в редакторе расширения.
  2. В окне «Команды» (в палитре формы) проверьте, появились ли там нужные команды после обновления родительской конфигурации.
  3. Если команда в списке есть, просто перетащите её мышкой из списка команд на нужную командную панель в редакторе формы.
  4. Если команды в списке нет, попробуйте найти её в основной конфигурации, скопировать и добавить в расширение как «Заимствованную команду».

Способ 3: Программное добавление кнопок

Иногда возникают ситуации, когда визуально «дозаимствовать» элемент не удается из-за сложной структуры заимствования или конфликтов метаданных. В таких случаях можно поступить программно, добавив нужную команду при открытии формы. Рассмотрим пример кода, который можно разместить в модуле формы расширения:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Поиск существующей панели
    КоманднаяПанель = Элементы.Найти("КоманднаяПанельДокумента");
    
    // Добавление новой кнопки программно
    НоваяКнопка = Элементы.Добавить("МояНоваяКнопка", Тип("КнопкаФормы"), КоманднаяПанель);
    НоваяКнопка.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
    НоваяКнопка.ИмяКоманды = "ИмяГлобальнойКоманды";
    НоваяКнопка.Заголовок = "Выполнить действие";
КонецПроцедуры

Использование метода Элементы.Добавить позволяет гибко управлять составом командной панели, не создавая конфликтов при обновлении конфигурации. Это наиболее надежный способ для сложных доработок.

Советы по поддержке расширений

Чтобы избежать путаницы в будущем, рекомендуем придерживаться следующих правил:

Следуя этим рекомендациям, вы сможете поддерживать свои доработки в актуальном состоянии и избегать проблем с «пропадающими» кнопками после обновлений системы.

← На главную