При использовании расширений кнопки и команды можно добавлять программно, тогда сама форма со всеми реквизитами не нужна, но при добавлении формы в расширение копируется вся форма с реквизитами, и 1С контролирует изменение формы в основной конфигурации и "ругается" при наличии изменений, а хочется "сделать и забыть".
Предлагаю способ добавления пустой формы в расширение. Решение "через одно место", но вполне рабочее.
Где-то читал, что программное добавление элементов замедляет работу при большом количестве пользователей, но в моём случае пользователей немного, поэтому добавляю программно.
В примере добавляю форму документа, поэтому использую документ, хотя может быть любой объект.
Нужно сделать новую базу с пустой конфигурацией.
Для Конфигурации указать режим совместимости такой же, как в рабочей базе.
Добавляем в пустую конфигурацию документ с таким же именем, как в основной конфигурации и к документу добавляем форму с соответствующем именем.
В форме в Командной панели нужно снять флажок "Автозаполнение", чтобы форма была совсем пустая.
Затем создаём новое расширение и добавляем в него созданную форму документа.
Сохраняем расширение в файл.
В рабочей базе создаём новое расширение и загружаем в него расширение из файла.
При загрузке будет выдана ошибка "Обнаружены проблемы при применении расширения конфигурации"
Откроется окно "Проверка возможности применения".
Обнаруженная проблема
"Значение контролируемого свойства ОбъектРасширяемойКонфигурации у объекта Язык.Русский не совпадает со значением в расширяемой конфигурации"
"Значение контролируемого свойства ОбъектРасширяемойКонфигурации у объекта Документ.НачислениеЗарплаты.Форма.ФормаДокумента не совпадает со значением в расширяемой конфигурации"
В колонке "Действия" нажимаем на ссылку "Исправить" и выбираем пункт "Сохранить имя, изменив соответствие".
Теперь у нас есть расширение, в котором пустая форма и в ней можно программно добавить кнопку и команду.
Для примера код добавления кнопки и назначение этой кнопке команды, которая в процессе работы выполняет процедуру модуля формы.
&НаСервере
Процедура НачЗП_ПВО_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
// Кнопка ПересчитатьВзносыОдного
КомандаФормы=ЭтаФорма.Команды.Добавить("НачЗП_ПВО_ПересчитатьВзносыОдного");
КомандаФормы.Действие="НачЗП_ПВО_ПересчитатьВзносыОдного";
КомандаФормы.Заголовок="Пересчитать взносы одного";
КомандаФормы.Подсказка="Пересчитать взносы одного сотрудника";
КомандаФормы.ИзменяетСохраняемыеДанные=Истина;
КомандаФормы.Отображение=ОтображениеКнопки.КартинкаИТекст;
// Вставим кнопку ПОСЛЕ кнопки ВзносыПересчитатьВзносы
НачЗП_ПВО_НайденЭлементПослеКоторогоНужноВставитьКнопку=Ложь;
НачЗП_ПВО_ЭлементПередКоторымВставляемКнопку=Неопределено;
Для Каждого НачЗП_ПВО_ТекущийЭлемент Из ЭтаФорма.Элементы.Взносы.КоманднаяПанель.ПодчиненныеЭлементы Цикл
Если НачЗП_ПВО_НайденЭлементПослеКоторогоНужноВставитьКнопку Тогда
НачЗП_ПВО_ЭлементПередКоторымВставляемКнопку=НачЗП_ПВО_ТекущийЭлемент;
Прервать;
КонецЕсли;
Если НачЗП_ПВО_ТекущийЭлемент.Имя="ВзносыПересчитатьВзносы" Тогда
НачЗП_ПВО_НайденЭлементПослеКоторогоНужноВставитьКнопку=Истина;
КонецЕсли;
КонецЦикла;
Кнопка=ЭтаФорма.Элементы.Вставить("НачЗП_ПВО_ВзносыПересчитатьВзносыОдного",Тип("КнопкаФормы"),ЭтаФорма.Элементы.Взносы.КоманднаяПанель,НачЗП_ПВО_ЭлементПередКоторымВставляемКнопку); // Это кнопка на командной панели Взносы
Кнопка.ИмяКоманды="НачЗП_ПВО_ПересчитатьВзносыОдного";
КонецПроцедуры
&НаКлиенте
Процедура НачЗП_ПВО_ПересчитатьВзносыОдного(Команда)
Если ЗначениеЗаполнено(Элементы.Взносы.ТекущиеДанные.ФизическоеЛицо) Тогда
Иначе
ПоказатьПредупреждение(,"Необходимо выбрать сотрудника!");
Возврат;
КонецЕсли;
ОчиститьСообщения();
Если Не РасчетЗарплатыРасширенныйКлиентСервер.ФормаДокументаГотоваДляРасчетаЗарплаты(ЭтаФорма, ОписаниеДокумента(ЭтотОбъект)) Тогда
Возврат;
КонецЕсли;
РежимПересчетаВзносов = Истина;
ПерезаполнитьДанныеФормыНаКлиенте(Элементы.Взносы.ТекущиеДанные.ФизическоеЛицо);
КонецПроцедуры
Тестировалось на 1С:Предприятие 8.3 (8.3.22.1750), Конфигурация Зарплата и кадры государственного учреждения КОРП, редакция 3.1 (3.1.24.408).
Если статья была полезна, то можно скачать файл-пример, и я получу за это монетки :-)