СформироватьПодменю(СтрокаПодменю, Подменю, Очищать, ДобавлятьРазделительВНачало)
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Параметры:

СтрокаПодменю (обязательный)

Тип: Дерево или элемент дерева значений, по данным которого необходимо построить подменю.

 

Подменю (обязательный)

Тип: Кнопка командной панели типа «Подменю». На которой необходимо сформировать новое подменю.

 

Очищать (по умолчанию «Ложь»)

Тип: Булево. Определяет: следует ли очищать переданное подменю.

 

ДобавлятьРазделительВНачало (по умолчанию «Ложь»)

Тип: Булево. Определяет: следует ли добавить в начало подменю разделитель.

 

Перем мСоответствиеДействийПодменюПерейти;

Функция ПолучитьДеревоПодменюПерейти(ТипОбъекта, ИмяОбъекта, ДействиеПоУмолчанию, СоответствиеДействийПодменюПерейти) Экспорт

.....

ДеревоПодменю = ИнициализироватьДеревоДополнительныхКнопок();
ТекущаяСтрокаДерева = ДеревоПодменю;

СоответствиеАттрибутов = ПрочитатьЭлементXML(ОбъектЧтенияПодменю);

Если СоответствиеАттрибутов = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;

ИмяУзла = СоответствиеАттрибутов["ИмяТекущегоУзлаXML"];
ИмяПоследнегоЗакрытогоУзла = СоответствиеАттрибутов["ИмяПоследнегоЗакрытогоУзла"];

Пока ИмяПоследнегоЗакрытогоУзла <> "ПодменюПерейти" Цикл

Если ИмяПоследнегоЗакрытогоУзла = "Подменю" Тогда
ТекущаяСтрокаДерева = ТекущаяСтрокаДерева.Родитель;
Если ТекущаяСтрокаДерева = Неопределено Тогда
ТекущаяСтрокаДерева= ДеревоПодменю;
КонецЕсли;
КонецЕсли;

Если ИмяУзла = "Кнопка" Тогда
ДобавитьСтрокуВДеревоКнопок(ТекущаяСтрокаДерева, СоответствиеАттрибутов["Имя"], ТипКнопкиКоманднойПанели.Действие, СоответствиеАттрибутов["Текст"], ДействиеПоУмолчанию, Неопределено, Ложь, СоответствиеАттрибутов["Подсказка"]);
СоответствиеДействийПодменюПерейти.Вставить( СоответствиеАттрибутов["Имя"], СоответствиеАттрибутов["Действие"]);

ИначеЕсли ИмяУзла = "Разделитель" Тогда
ДобавитьСтрокуВДеревоКнопок(ТекущаяСтрокаДерева, СоответствиеАттрибутов["Имя"], ТипКнопкиКоманднойПанели.Разделитель, СоответствиеАттрибутов["Текст"], ДействиеПоУмолчанию, Неопределено, Ложь, СоответствиеАттрибутов["Подсказка"]);

ИначеЕсли ИмяУзла = "Подменю" Тогда
СтрокаПодменю = ДобавитьСтрокуВДеревоКнопок(ТекущаяСтрокаДерева, СоответствиеАттрибутов["Имя"], ТипКнопкиКоманднойПанели.Подменю, СоответствиеАттрибутов["Текст"], Неопределено, Неопределено, Ложь, СоответствиеАттрибутов["Подсказка"]);
ТекущаяСтрокаДерева = СтрокаПодменю;

КонецЕсли;

СоответствиеАттрибутов = ПрочитатьЭлементXML(ОбъектЧтенияПодменю);

ИмяУзла = СоответствиеАттрибутов["ИмяТекущегоУзлаXML"];
ИмяПоследнегоЗакрытогоУзла = СоответствиеАттрибутов["ИмяПоследнегоЗакрытогоУзла"];

КонецЦикла;

Возврат ДеревоПодменю;

КонецФункции

Процедура ПриНачатииКнопкиВПодменюПерейти(Кнопка)

Выражение = мСоответствиеДействийПодменюПерейти[Кнопка.Имя];

Если Выражение <> Неопределено Тогда
Выполнить(Выражение);
КонецЕсли;

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

Процедура УстановитьПодменюПерейти()

// Устанавливаем подменю перейти
мСоответствиеДействийПодменюПерейти = Новый Соответствие;
СформироватьПодменю(ПолучитьДеревоПодменюПерейти("Документы", Метаданные().Имя, Новый Действие("ПриНачатииКнопкиВПодменюПерейти"), мСоответствиеДействийПодменюПерейти), ЭлементыФормы.ДействияФормы.Кнопки.ПодменюПерейти);

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

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

// Установка подменю перейти
УстановитьПодменюПерейти();

КонецПроцедуры // ПередОткрытием()

 





















Дата: 2018-11-18, просмотров: 298.