Главная Новости

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


Опубликовано: 01.09.2018

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

1С - первая обработка (внешняя)

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


Создание формы в 1С и работа с обработчиками

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


"Hello, 1C!": пишем первую программу на языке программирования 1С

Все модификации вносятся в модуль формы.

Не забудьте выделить комментариями свою добавленную область кода.

Обратите внимание на управляющие команды «НаКлиенте» и «НаСервере».

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