Програмисту 1С: программное добавление кнопки на управляемую форму 1С 8.3

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

Для программного добавления кнопки на управляемую форму 1С 8.3 следует, во-первых, понимать, что кнопка добавляется обычно в какую-то панель формы или группу кнопок, во-вторых, обращать внимание на то, что делается на клиенте и что на сервере и, в-третьих, учитывать, что при повторном обращении к процедуре кнопка уже может быть добавлена.
Все модификации вносятся в модуль формы.
Не забудьте выделить комментариями свою добавленную область кода.
Обратите внимание на управляющие команды «НаКлиенте» и «НаСервере».

&НаКлиенте
// Предопределенная процедура, предварительно привязанная к событию "ПриОткрытии" в свойствах формы
Процедура ПриОткрытии(Отказ)
	НоваяКомандаСозданияДанных();
КонецПроцедуры

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

КонецПроцедуры

&НаКлиенте
// Имя "СоздатьНаОснованииИсходнойФормы" определено названием действия, присвоенного команде "ДобавитьПоИсходным", исполняемой по кнопке "Добавить с исх.данными"
Процедура СоздатьНаОснованииИсходнойФормы(Команда)
	// модуль, исполняемый при нажатии на кнопку …
КонецПроцедуры

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *