mirror of
https://github.com/Nivanchenko/formhelper.git
synced 2024-11-24 08:33:32 +02:00
Команды с атрибутами
Добавлена возможность создавать команды по аналогии с элементами и устанавливать атрибуты командам. Добавлен расширенный пример создания команды.
This commit is contained in:
parent
dbd35c7432
commit
2e1257e118
10
README.md
10
README.md
@ -25,13 +25,21 @@
|
|||||||
.Кнопка("КнопкаПривет")
|
.Кнопка("КнопкаПривет")
|
||||||
.Заголовок("Привет")
|
.Заголовок("Привет")
|
||||||
.ИмяКоманды("Приветствие")
|
.ИмяКоманды("Приветствие")
|
||||||
|
|
||||||
|
//Команда простая
|
||||||
.Команда("Приветствие", "ПриветствиеКлиент")
|
.Команда("Приветствие", "ПриветствиеКлиент")
|
||||||
|
|
||||||
// Еще кнопка
|
// Еще кнопка
|
||||||
.Кнопка("ЕщеКонманда")
|
.Кнопка("ЕщеКонманда")
|
||||||
.Заголовок("Еще команда")
|
|
||||||
.ИмяКоманды("ЕщеКонманда")
|
.ИмяКоманды("ЕщеКонманда")
|
||||||
|
|
||||||
|
//Еще команда с атрибутами
|
||||||
.Команда("ЕщеКонманда", "ЕщеКомандаНаКлиенте")
|
.Команда("ЕщеКонманда", "ЕщеКомандаНаКлиенте")
|
||||||
|
.Заголовок("Команда еще")
|
||||||
|
.Картинка(БиблиотекаКартинок.Документ)
|
||||||
|
.Отображение(ОтображениеКнопки.КартинкаИТекст)
|
||||||
|
.ИзменяетСохраняемыеДанные(Истина)
|
||||||
|
.Подсказка("Команда с атрибутами")
|
||||||
|
|
||||||
// Строковый реквизит с полем ввода
|
// Строковый реквизит с полем ввода
|
||||||
.РеквизитСтрока("ЕщеСтроковыйРеквизит", 100)
|
.РеквизитСтрока("ЕщеСтроковыйРеквизит", 100)
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
Перем Форма;
|
Перем Форма;
|
||||||
Перем ДобавляемыеРеквизиты;
|
Перем ДобавляемыеРеквизиты;
|
||||||
Перем ТекущийЭлемент;
|
Перем ТекущийЭлемент;
|
||||||
|
Перем ТекущаяКоманда;
|
||||||
|
Перем ТекущийПоток;
|
||||||
Перем Элементы;
|
Перем Элементы;
|
||||||
Перем Команды;
|
Перем Команды;
|
||||||
Перем ПутьРеквизита;
|
Перем ПутьРеквизита;
|
||||||
@ -12,7 +14,7 @@
|
|||||||
Процедура Инициализация(_Форма) Экспорт
|
Процедура Инициализация(_Форма) Экспорт
|
||||||
Форма = _Форма;
|
Форма = _Форма;
|
||||||
ДобавляемыеРеквизиты = Новый Массив;
|
ДобавляемыеРеквизиты = Новый Массив;
|
||||||
Команды = Новый Структура;
|
ТаблицаКоманд();
|
||||||
ТаблицаЭлементов();
|
ТаблицаЭлементов();
|
||||||
ПутьРеквизита = "";
|
ПутьРеквизита = "";
|
||||||
|
|
||||||
@ -163,13 +165,35 @@
|
|||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область Команды__К
|
||||||
|
|
||||||
|
Функция Команда(Имя, Метод) Экспорт
|
||||||
|
|
||||||
|
ТекущаяКоманда = ПараметрыСозданияКоманды();
|
||||||
|
ТекущаяКоманда.Имя = Имя;
|
||||||
|
ТекущаяКоманда.Действие = Метод;
|
||||||
|
|
||||||
|
ТекущийПоток = ТекущаяКоманда;
|
||||||
|
|
||||||
|
Команда = Команды.Добавить();
|
||||||
|
Команда.Имя = Имя;
|
||||||
|
Команда.Параметры = ТекущаяКоманда;
|
||||||
|
|
||||||
|
Возврат ЭтотОбъект;
|
||||||
|
|
||||||
|
КонецФункции // Команда()
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
#Область Элементы__Э
|
#Область Элементы__Э
|
||||||
|
|
||||||
Функция ДобавитьЭлементФормы(Имя) Экспорт
|
Функция ДобавитьЭлементФормы(Имя) Экспорт
|
||||||
|
|
||||||
ТекущийЭлемент = ПараметрыСозданияЭлементов();
|
ТекущийЭлемент = ПараметрыСозданияЭлементов();
|
||||||
ТекущийЭлемент.Имя = Имя;
|
ТекущийЭлемент.Имя = Имя;
|
||||||
|
|
||||||
|
ТекущийПоток = ТекущийЭлемент;
|
||||||
|
|
||||||
Элемент = Элементы.Добавить();
|
Элемент = Элементы.Добавить();
|
||||||
Элемент.Имя = Имя;
|
Элемент.Имя = Имя;
|
||||||
Элемент.Параметры = ТекущийЭлемент;
|
Элемент.Параметры = ТекущийЭлемент;
|
||||||
@ -237,14 +261,6 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция Команда(Имя, Метод) Экспорт
|
|
||||||
|
|
||||||
Команды.Вставить(Имя, Метод);
|
|
||||||
|
|
||||||
Возврат ЭтотОбъект;
|
|
||||||
|
|
||||||
КонецФункции // Команда()
|
|
||||||
|
|
||||||
Функция ТаблицаФормы(Имя) Экспорт
|
Функция ТаблицаФормы(Имя) Экспорт
|
||||||
|
|
||||||
ДобавитьЭлементФормы(Имя);
|
ДобавитьЭлементФормы(Имя);
|
||||||
@ -270,9 +286,9 @@
|
|||||||
|
|
||||||
Функция Свойство(Имя, Значение) Экспорт
|
Функция Свойство(Имя, Значение) Экспорт
|
||||||
|
|
||||||
ПроверитьТекущийЭлемент();
|
ПроверитьТекущийПоток();
|
||||||
|
|
||||||
ТекущийЭлемент.Вставить(Имя, Значение);
|
ТекущийПоток.Вставить(Имя, Значение);
|
||||||
|
|
||||||
Возврат ЭтотОбъект;
|
Возврат ЭтотОбъект;
|
||||||
|
|
||||||
@ -1298,40 +1314,16 @@
|
|||||||
ТекущийЭлемент = Элемент.Параметры;
|
ТекущийЭлемент = Элемент.Параметры;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
ТекущийПоток = ТекущийЭлемент;
|
||||||
|
|
||||||
Возврат ЭтотОбъект;
|
Возврат ЭтотОбъект;
|
||||||
|
|
||||||
КонецФункции // ТекущийЭлемент
|
КонецФункции // ТекущийЭлемент
|
||||||
|
|
||||||
Функция Применить() Экспорт
|
|
||||||
|
|
||||||
СоздатьРеквизиты();
|
|
||||||
СоздатьКоманды();
|
|
||||||
СоздатьЭлементы();
|
|
||||||
|
|
||||||
Возврат ЭтотОбъект;
|
|
||||||
|
|
||||||
КонецФункции // Применить()
|
|
||||||
|
|
||||||
Функция СоздатьКоманды()
|
|
||||||
|
|
||||||
Для Каждого Команда из Команды Цикл
|
|
||||||
|
|
||||||
НоваяКоманда = Форма.Команды.Добавить(Команда.Ключ);
|
|
||||||
НоваяКоманда.Заголовок = Команда.Ключ;
|
|
||||||
НоваяКоманда.Действие = Команда.Значение;
|
|
||||||
|
|
||||||
КонецЦикла;
|
|
||||||
|
|
||||||
Команды = Новый Структура;
|
|
||||||
|
|
||||||
Возврат ЭтотОбъект;
|
|
||||||
|
|
||||||
КонецФункции // СоздатьКоманды()
|
|
||||||
|
|
||||||
Функция СоздатьЭлементы()
|
Функция СоздатьЭлементы()
|
||||||
|
|
||||||
Для Каждого Элемент из Элементы Цикл
|
Для Каждого Элемент из Элементы Цикл
|
||||||
Если не Элемент.Обработан = Истина Тогда
|
Если Не Элемент.Обработан = Истина Тогда
|
||||||
СоздатьЭлемент(Элемент);
|
СоздатьЭлемент(Элемент);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
@ -1449,6 +1441,10 @@
|
|||||||
Если ТекущийЭлемент = Неопределено Тогда
|
Если ТекущийЭлемент = Неопределено Тогда
|
||||||
ВызватьИсключение "Элемент не инициализирован";
|
ВызватьИсключение "Элемент не инициализирован";
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если НЕ ТекущийЭлемент = ТекущийПоток Тогда
|
||||||
|
ВызватьИсключение "Обработчик не применим к команде";
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
@ -1461,3 +1457,155 @@
|
|||||||
КонецФункции // ПутьРеквизита()
|
КонецФункции // ПутьРеквизита()
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область Команды_Свойства__С
|
||||||
|
|
||||||
|
Функция ИзменяетСохраняемыеДанные(ИзменяетСохраняемыеДанные) Экспорт
|
||||||
|
|
||||||
|
Свойство("ИзменяетСохраняемыеДанные", ИзменяетСохраняемыеДанные);
|
||||||
|
|
||||||
|
Возврат ЭтотОбъект;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область Команды_Вспомогательные__У
|
||||||
|
|
||||||
|
Функция ТекущаяКоманда(Имя) Экспорт
|
||||||
|
|
||||||
|
Команда = Команды.Найти(Имя, "Имя");
|
||||||
|
|
||||||
|
Если Команда = Неопределено Тогда
|
||||||
|
|
||||||
|
КомандаФормы = Форма.Команды.Найти(Имя);
|
||||||
|
|
||||||
|
Если КомандаФормы = Неопределено Тогда
|
||||||
|
ВызватьИсключение "Команда не найдена " + Имя;
|
||||||
|
Иначе
|
||||||
|
|
||||||
|
ТекущаяКоманда = ПараметрыСозданияКоманды();
|
||||||
|
ТекущаяКоманда.Имя = Имя;
|
||||||
|
|
||||||
|
Элемент = Команды.Добавить();
|
||||||
|
Элемент.Имя = Имя;
|
||||||
|
Элемент.Параметры = ТекущийЭлемент;
|
||||||
|
Элемент.КомандаФормы = КомандаФормы;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
Иначе
|
||||||
|
ТекущийЭлемент = Элемент.Параметры;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ТекущийПоток = ТекущийЭлемент;
|
||||||
|
|
||||||
|
Возврат ЭтотОбъект;
|
||||||
|
|
||||||
|
КонецФункции // ТекущийЭлемент
|
||||||
|
|
||||||
|
Функция СоздатьКоманды()
|
||||||
|
|
||||||
|
Для Каждого Команда из Команды Цикл
|
||||||
|
Если Не Команда.Обработан = Истина Тогда
|
||||||
|
СоздатьКоманду(Команда);
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
ТаблицаКоманд();
|
||||||
|
|
||||||
|
Возврат ЭтотОбъект;
|
||||||
|
|
||||||
|
КонецФункции // СоздатьКоманды()
|
||||||
|
|
||||||
|
Функция СоздатьКоманду(Команда)
|
||||||
|
|
||||||
|
ПараметрыСоздания = Команда.Параметры;
|
||||||
|
|
||||||
|
Если Команда.КомандаФормы = Неопределено Тогда
|
||||||
|
НоваяКоманда = Форма.Команды.Добавить(Команда.Имя);
|
||||||
|
НоваяКоманда.Заголовок = ПараметрыСоздания.Заголовок;
|
||||||
|
НоваяКоманда.Действие = ПараметрыСоздания.Действие;
|
||||||
|
Иначе
|
||||||
|
НоваяКоманда = Команда.КомандаФормы;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Не ПараметрыСоздания.ИзменяетСохраняемыеДанные = Неопределено Тогда
|
||||||
|
НоваяКоманда.ИзменяетСохраняемыеДанные = ПараметрыСоздания.ИзменяетСохраняемыеДанные;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Не ПараметрыСоздания.Картинка = Неопределено Тогда
|
||||||
|
НоваяКоманда.Картинка = ПараметрыСоздания.Картинка;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Не ПараметрыСоздания.Подсказка = Неопределено Тогда
|
||||||
|
НоваяКоманда.Подсказка = ПараметрыСоздания.Подсказка;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Не ПараметрыСоздания.СочетаниеКлавиш = Неопределено Тогда
|
||||||
|
НоваяКоманда.СочетаниеКлавиш = ПараметрыСоздания.СочетаниеКлавиш;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
//Прочие свойства
|
||||||
|
СтандартныеСвойства = ПараметрыСозданияКоманды();
|
||||||
|
Для Каждого ТекСвойство из ПараметрыСоздания Цикл
|
||||||
|
Если СтандартныеСвойства.Свойство(ТекСвойство.Ключ) = Ложь Тогда
|
||||||
|
НоваяКоманда[ТекСвойство.Ключ] = ТекСвойство.Значение;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Команда.КомандаФормы = НоваяКоманда;
|
||||||
|
Команда.Обработан = Истина;
|
||||||
|
|
||||||
|
Возврат НоваяКоманда;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Процедура ТаблицаКоманд()
|
||||||
|
|
||||||
|
Команды = Новый ТаблицаЗначений;
|
||||||
|
Команды.Колонки.Добавить("Имя");
|
||||||
|
Команды.Колонки.Добавить("КомандаФормы");
|
||||||
|
Команды.Колонки.Добавить("Параметры");
|
||||||
|
Команды.Колонки.Добавить("Обработан");
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Функция ПараметрыСозданияКоманды()
|
||||||
|
|
||||||
|
Результат = Новый Структура;
|
||||||
|
|
||||||
|
Результат.Вставить("Имя");
|
||||||
|
Результат.Вставить("Действие");
|
||||||
|
Результат.Вставить("ИзменяетСохраняемыеДанные");
|
||||||
|
Результат.Вставить("Заголовок");
|
||||||
|
Результат.Вставить("Картинка");
|
||||||
|
Результат.Вставить("Подсказка");
|
||||||
|
Результат.Вставить("СочетаниеКлавиш");
|
||||||
|
|
||||||
|
Возврат Результат;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область Общие_Вспомогательные__О
|
||||||
|
|
||||||
|
Процедура ПроверитьТекущийПоток()
|
||||||
|
|
||||||
|
Если ТекущийПоток = Неопределено Тогда
|
||||||
|
ВызватьИсключение "Элемент не инициализирован";
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Функция Применить() Экспорт
|
||||||
|
|
||||||
|
СоздатьРеквизиты();
|
||||||
|
СоздатьКоманды();
|
||||||
|
СоздатьЭлементы();
|
||||||
|
|
||||||
|
Возврат ЭтотОбъект;
|
||||||
|
|
||||||
|
КонецФункции // Применить()
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{1,
|
{1,
|
||||||
{144,
|
{145,
|
||||||
{"ПостроительФорм",1,0,"",""},
|
{"ПостроительФорм",1,0,"",""},
|
||||||
{0,
|
{0,
|
||||||
{"(Р) ДобавитьРеквизит(Имя, Тип)",0,0,".[ДобавитьРеквизит]",".ДобавитьРеквизит(<?>, Тип)"}
|
{"(Р) ДобавитьРеквизит(Имя, Тип)",0,0,".[ДобавитьРеквизит]",".ДобавитьРеквизит(<?>, Тип)"}
|
||||||
@ -182,6 +182,9 @@
|
|||||||
{"(С) ИзменятьСоставСтрок(ИзменятьСоставСтрок)",0,0,".[ИзменятьСоставСтрок]",".ИзменятьСоставСтрок(<?>)"}
|
{"(С) ИзменятьСоставСтрок(ИзменятьСоставСтрок)",0,0,".[ИзменятьСоставСтрок]",".ИзменятьСоставСтрок(<?>)"}
|
||||||
},
|
},
|
||||||
{0,
|
{0,
|
||||||
|
{"(С) ИзменяетСохраняемыеДанные(ИзменяетСохраняемыеДанные)",0,0,".[ИзменяетСохраняемыеДанные]",".ИзменяетСохраняемыеДанные(<?>)"}
|
||||||
|
},
|
||||||
|
{0,
|
||||||
{"(С) Имя(Имя)",0,0,".[Имя]",".Имя(<?>)"}
|
{"(С) Имя(Имя)",0,0,".[Имя]",".Имя(<?>)"}
|
||||||
},
|
},
|
||||||
{0,
|
{0,
|
||||||
@ -432,4 +435,6 @@
|
|||||||
},
|
},
|
||||||
{0,
|
{0,
|
||||||
{"(У) ПутьРеквизита(ПутьРеквизита = "")",0,0,".[ПутьРеквизита]",".ПутьРеквизита(<?>)"}
|
{"(У) ПутьРеквизита(ПутьРеквизита = "")",0,0,".[ПутьРеквизита]",".ПутьРеквизита(<?>)"}
|
||||||
},}}
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user