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

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

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

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

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

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

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

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

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

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

Next Post

1С + ПЕРКО (PERCo) Запуск 32-битного COM соединения с библиотекой PERCo_S20_SDK.dll из 64-битного сервера 1С:Предприятия

Чт Июл 27 , 2017
В инструкции по регистрации DLL, поставляемой с модулем SDK PERCo, очень кратко сказано: «Зарегистрировать PERCo_S20_SDK.DLL при помощи regsvr32.exe (regsvr32.exe PERCo_S20_SDK.dll)» Однако при выполнении этого действия возникает куча нюансов, без учета которых COM-соединение может и не заработать. Больше всего сложностей возникает при регистрации в 64-битной операционной системе при установленном 64-битном сервере […]