Простенькая функция создающая команду формы и кнопку к ней на форме. Когда описываешь одну, это максимум 10 строчек, а когда таких 5 и более, получается гигантская котлета из почти одинаковых строк:
//Пример использвания в расширении (форма документа ПТиУ)
&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
эГруппаКоманд=ЭтаФорма.Элементы.вставить("ЭГруппаКоманд",тип("ГруппаФормы"), Элементы.Товары.КоманднаяПанель, Элементы.ТоварыКнопкиКоманднойПанели);
эГруппаКоманд.Вид=ВидГруппыФормы.ГруппаКнопок;
эГруппаКоманд.Отображение=ОтображениеГруппыКнопок.Компактное;
ДобавитьКоманду("ОтобразитьШтрихкоды",
ОтображениеКнопки.Картинка,БиблиотекаКартинок.ТабличныйДокументТолькоПросмотр,
Ложь,
Тип("КнопкаФормы"),
Элементы.ЭГруппаКоманд,
Объект.ШтрихкодыУпаковок.Количество()>0);
КонецПроцедуры
// Функция - Добавить команду
//
// Параметры:
// ИмяКомандыПроцедуры - Строка - Имя процедуры и команды будут совпадать, при помощи Синониминайзера, Выдернув "Команда", будет создан заголовок и подсказка
// Отображение - ОтображениеКнопки - Например: ОтображениеКнопки.Картинка
// Картинка - БиблиотекаКартинок - Например: БиблиотекаКартинок.ТабличныйДокументТолькоПросмотр
// ИзменяетСохраняемыеДанные - Булево -
// ТипЭлемента - Тип - Тип элемента ФОРМЫ, например: Тип("КнопкаФормы")
// РодительЭлемента - ЭлементФормы - Например ГруппаКнопок
// Доступность - Булево -
//
&НаСервере
Функция ДобавитьКоманду(ИмяКомандыПроцедуры, Отображение=Неопределено,Картинка=Неопределено,ИзменяетСохраняемыеДанные=Ложь,ТипЭлемента,РодительЭлемента=Неопределено,Доступность=Истина)
ИмяКоманды="Команда"+ИмяКомандыПроцедуры;
ИмяПроцедуры=ИмяКоманды;
Заголовок=Синонимайзер(ИмяКомандыПроцедуры);
Подсказка=Заголовок;
Если Команды.Найти(ИмяКоманды) <> Неопределено Тогда
Сообщить(СтрШаблон("Команда ""%1"" существует, пропуск",ИмяКоманды));
Возврат
КонецЕсли;
НоваяКоманда= Команды.Добавить(ИмяКоманды);
НоваяКоманда.Действие = ИмяПроцедуры;//Имя процедуры
НоваяКоманда.Заголовок = Заголовок;
НоваяКоманда.Подсказка = Подсказка;
НоваяКоманда.ИзменяетСохраняемыеДанные=ИзменяетСохраняемыеДанные;
Если Отображение<>Неопределено Тогда
НоваяКоманда.Отображение=Отображение;
КонецЕсли;
Если Картинка<>Неопределено Тогда
НоваяКоманда.Картинка=Картинка;
КонецЕсли;
ИмяЭлемента="Элемент"+ИмяКоманды;
Если ЭтаФорма.Элементы.Найти(ИмяЭлемента)<>Неопределено Тогда
Сообщить(СтрШаблон("Элемент ""%1"" существует, пропуск",ИмяЭлемента));
Возврат
КонецЕсли;
эНоваяКоманда = ЭтаФорма.Элементы.вставить(ИмяЭлемента, ТипЭлемента,?(РодительЭлемента=Неопределено,"",РодительЭлемента));
эНоваяКоманда.ИмяКоманды=НоваяКоманда.Имя;
эНоваяКоманда.Доступность=Доступность;
КонецФункции
&НаСервере
Функция Синонимайзер(Имя, Ответ = "", Стэйт = 7, б = "")
Для ё = 1 По СтрДлина(Имя) Цикл
а = Сред(Имя, ё, 1);
Стэйт = (НРег(а) <> а) * 4 + Цел(Стэйт / 2);
Ответ = Ответ + ?(Стэйт = 2, НРег(б), ?(ё = 2, ВРег(б), б)) + ?(Стэйт = 4 ИЛИ Стэйт = 5, " ", "");
б = а
КонецЦикла;
Возврат Ответ + б
КонецФункции
Я ее использую уже на форме, но если нужно добавлять сразу на несколько формах, то можно также добавить передачу формы.
Комментариев нет:
Отправить комментарий