Каталог решений - Пустая форма объекта в расширении

Пустая форма объекта в расширении

Пустая форма объекта в расширении

В наличии

Создание пустой формы объекта в расширении для добавления элементов формы программно или для изменения процедур формы объекта.

Категория:

Описание

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

Предлагаю способ добавления пустой формы в расширение. Решение "через одно место", но вполне рабочее.

Где-то читал, что программное добавление элементов замедляет работу при большом количестве пользователей, но в моём случае пользователей немного, поэтому добавляю программно.

В примере добавляю форму документа, поэтому использую документ, хотя может быть любой объект.

Нужно сделать новую базу с пустой конфигурацией.

Для Конфигурации указать режим совместимости такой же, как в рабочей базе.

Добавляем в пустую конфигурацию документ с таким же именем, как в основной конфигурации и к документу добавляем форму с соответствующем именем.

В форме в Командной панели нужно снять флажок "Автозаполнение", чтобы форма была совсем пустая.

 

 

Затем создаём новое расширение и добавляем в него созданную форму документа.

Сохраняем расширение в файл.

 

 

В рабочей базе создаём новое расширение и загружаем в него расширение из файла.

При загрузке будет выдана ошибка "Обнаружены проблемы при применении расширения конфигурации"

Откроется окно "Проверка возможности применения".

Обнаруженная проблема
"Значение контролируемого свойства ОбъектРасширяемойКонфигурации у объекта Язык.Русский не совпадает со значением в расширяемой конфигурации"
"Значение контролируемого свойства ОбъектРасширяемойКонфигурации у объекта Документ.НачислениеЗарплаты.Форма.ФормаДокумента не совпадает со значением в расширяемой конфигурации"

В колонке "Действия" нажимаем на ссылку "Исправить" и выбираем пункт "Сохранить имя, изменив соответствие".

 

 

Теперь у нас есть расширение, в котором пустая форма и в ней можно программно добавить кнопку и команду.

Для примера код добавления кнопки и назначение этой кнопке команды, которая в процессе работы выполняет процедуру модуля формы.

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

&НаКлиенте
Процедура НачЗП_ПВО_ПересчитатьВзносыОдного(Команда)
	Если ЗначениеЗаполнено(Элементы.Взносы.ТекущиеДанные.ФизическоеЛицо) Тогда
	Иначе
		ПоказатьПредупреждение(,"Необходимо выбрать сотрудника!");
		Возврат;
	КонецЕсли;
	
	ОчиститьСообщения();
	
	Если Не РасчетЗарплатыРасширенныйКлиентСервер.ФормаДокументаГотоваДляРасчетаЗарплаты(ЭтаФорма, ОписаниеДокумента(ЭтотОбъект)) Тогда
		Возврат;
	КонецЕсли;
	
	РежимПересчетаВзносов = Истина;
	ПерезаполнитьДанныеФормыНаКлиенте(Элементы.Взносы.ТекущиеДанные.ФизическоеЛицо);
КонецПроцедуры

Тестировалось на 1С:Предприятие 8.3 (8.3.22.1750), Конфигурация Зарплата и кадры государственного учреждения КОРП, редакция 3.1 (3.1.24.408).

Если статья была полезна, то можно  скачать файл-пример, и я получу за это монетки 🙂

has been added to your cart:
Оформление заказа