|   |   | 
| 
 | Программно определить тип формы и ее объект-владелец формы при открытии | ☑ | ||
|---|---|---|---|---|
| 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) ну тогда можно попробовать элементы формы посмотреть     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |