Продолжение #4
В разных конфигурациях есть свои костыли, которые по имени формы определяют объект метаданных
Например, УТ11
ПодключаемыеКомандыЭДОСлужебный.КомандыЭДОФормы
&ИзменениеИКонтроль("КомандыЭДОФормы")
Функция SCF_КомандыЭДОФормы(Форма, НаправлениеЭД, ТолькоВМенюЕще)
Если ТипЗнч(Форма) = Тип("ФормаКлиентскогоПриложения") Тогда
ИмяФормы = Форма.ИмяФормы;
Иначе
ИмяФормы = Форма;
КонецЕсли;
КомандыЭДО = СоздатьКоллекциюКомандЭДО();
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ИмяФормы);
Если ОбъектМетаданных <> Неопределено
И Не Метаданные.ОбщиеФормы.Содержит(ОбъектМетаданных) Тогда
ОбъектМетаданных = ОбъектМетаданных.Родитель();
КонецЕсли;
#Вставка
Если ОбъектМетаданных = Неопределено Тогда
Возврат КомандыЭДО;
КонецЕсли;
#КонецВставки
ДобавляемыеКомандыЭДО = СоздатьКоллекциюКомандЭДО();
СформироватьКомандыЭДО(ОбъектМетаданных.ПолноеИмя(), ДобавляемыеКомандыЭДО, НаправлениеЭД, ТолькоВМенюЕще);
Для Каждого КомандаЭДО Из ДобавляемыеКомандыЭДО Цикл
Если КомандыЭДО.Найти(КомандаЭДО.Идентификатор, "Идентификатор") = Неопределено Тогда
ЗаполнитьЗначенияСвойств(КомандыЭДО.Добавить(), КомандаЭДО);
КонецЕсли;
КонецЦикла;
КомандыЭДО.Сортировать("Порядок Возр, Представление Возр");
ЧастиИмени = СтрРазделить(ИмяФормы, ".");
КраткоеИмяФормы = ЧастиИмени[ЧастиИмени.Количество()-1];
// фильтр по именам форм
Для НомерСтроки = -КомандыЭДО.Количество() + 1 По 0 Цикл
КомандаЭДО = КомандыЭДО[-НомерСтроки];
СписокФорм = СтрРазделить(КомандаЭДО.СписокФорм, ",", Ложь);
Если СписокФорм.Количество() > 0 И СписокФорм.Найти(КраткоеИмяФормы) = Неопределено Тогда
КомандыЭДО.Удалить(КомандаЭДО);
КонецЕсли;
КонецЦикла;
ОпределитьВидимостьКомандЭДОПоФункциональнымОпциям(КомандыЭДО, Форма);
Возврат КомандыЭДО;
КонецФункции
Продолжение #4
В разных конфигурациях есть свои костыли, которые по имени формы определяют объект метаданных
Например, УТ11
ПодключаемыеКомандыЭДОСлужебный.КомандыЭДОФормы