|
Программно определить тип формы и ее объект-владелец формы при открытии | ☑ | ||
---|---|---|---|---|
0
Kaperang
17.04.12
✎
09:27
|
Возникла необходимость определить тип и объект-владелец формы при открытии.
Например, "Форма списка" документа "Реализация товаров" Пока придумал так: Функция ТипФормыТипИмяОбъекта(ЭтаФорма) Объект = Неопределено; Попытка Объект = ЭтаФорма.ДокументОбъект; Исключение КонецПопытки; Если Объект = Неопределено Тогда Попытка Объект = ЭтаФорма.ДокументСписок; Исключение КонецПопытки; КонецЕсли; Если Объект = Неопределено Тогда Попытка Объект = ЭтаФорма.СправочникОбъект; Исключение КонецПопытки; КонецЕсли; Если Объект = Неопределено Тогда Попытка Объект = ЭтаФорма.СправочникСписок; Исключение КонецПопытки; КонецЕсли; Если Объект <> Неопределено Тогда ТипЗначения = ТипЗнч(Объект); ТипЗначенияСтрока = Строка(ТипЗначения); //"ДокументСписок.РеализацияТоваров" ИмяОбъекта = Метаданные.НайтиПоТипу(ТипЗначения).Имя; ПоложениеТочки = Найти(ТипЗначенияСтрока,":"); ДлинаСтроки = СтрДлина(ТипЗначенияСтрока); ЛеваяЧастьСтроки = Лев(ТипЗначенияСтрока,ПоложениеТочки-1); ТипОбъекта = СтрЗаменить(ЛеваяЧастьСтроки," список",""); ТипОбъекта = СтрЗаменить(ТипОбъекта," объект",""); ТипФормы = СтрЗаменить(ЛеваяЧастьСтроки,"Документ ",""); ТипФормы = СтрЗаменить(ТипФормы,"Справочник ",""); //ПраваяЧастьСтроки = Прав(ТипЗначенияСтрока,ДлинаСтроки - ПоложениеТочки); Структура = Новый Структура; Структура.Вставить("ТипФормы" ,ТипФормы); //список Структура.Вставить("ТипОбъекта",ТипОбъекта);// документ Структура.Вставить("ИмяОбъекта",ИмяОбъекта);//РеализацияТоваров Возврат Структура; Иначе Возврат Неопределено; КонецЕсли; КонецФункции Но через попытку-исключение как-то некрасиво. Может кто подскажет более элегантный способ обращения к основному реквизиту формы и выдергивания из него необходимых мне сведений? |
|||
1
ZanderZ
17.04.12
✎
09:29
|
ТипЗнч(ЭтаФорма.ДокументОбъект)
|
|||
2
butterbean
17.04.12
✎
09:31
|
может разобрать строку ЭтаФорма.Данные??
|
|||
3
Kaperang
17.04.12
✎
09:51
|
(1) это если документ отрываем, а если справочник, то у него реквизита "ДокументОбъект" нету, и предлагемая Вами конструкция вывалится с исключением. У формы элемента справочника основной реквизит - "СправочникОбъект", у формы списка справочника - "СправочникСписок"
Если Вы повнимательнее прочитаете приведенный мною кусок кода, то увидите, что я пошел примерно тем же путем - сделал перебор этих реквзитов через "Попытка-Исключение..." |
|||
4
ZanderZ
17.04.12
✎
10:02
|
(3) ну тогда можно попробовать элементы формы посмотреть
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |