Имя: Пароль:
1C
1С v8
Как понять что ЭтаФорма того или иного типа объекта?
0 Mashinist
 
12.06.15
12:22
В процедуру передается ЭтаФорма
Как понять что это форма списка справочника или документа?
конечно можно через попытку типа так

Попытка
ЭтаФорма.СправочникСписок
Исключение
// это не список справочника
КонецПопытки

но мне оно не нравится...
1 RomanYS
 
12.06.15
12:27
ЭтаФорма.ИмяФормы =     "Документ.Документ1.Форма.ФормаСписка"
2 Mashinist
 
12.06.15
12:33
(1) как-то нету такого свойства у формы...

ЭтаФорма.ИмяФормы    {(1)}: Поле объекта не обнаружено (ИмяФормы)
3 Mashinist
 
12.06.15
12:35
(1) опять же
"Документ.Документ1...
"Документ.Документ2...
их же куча

Мне нужно различие между документами, справочниками, ПФХ...

процедура общая, вызывается из всех форм списков
а как различить список это справочника или ПВХ не понятно
4 RomanYS
 
12.06.15
12:38
(2) Это для УФ
В ОФ как-то надо получить основной элемент формы, как сделать пока не понял.
Но (0) может не работать если реквизит переименуют.
5 Mashinist
 
12.06.15
12:41
(4)формы обычные

ну вот есть

ЭтаФорма.ТекущийЭлемент.Значение

в одном случае это ПланВидовХарактеристикСписок.ТипыПартий    (или другой ПВХ)
в другом случае это СправочникСписок.Номенклатура    

как понять, что это или ПланВидовХарактеристикСписок или СправочникСписок ?
6 RomanYS
 
12.06.15
12:46
ЭтаФорма.ТекущийЭлемент - это активный элемент на форме, он может быть кнопкой, например, или надписью
7 RomanYS
 
12.06.15
12:47
*(4) основной элемент = основной реквизит
Можно вообще как-то реквизиты формы (не элементы) перебрать?
8 NcSteel
 
12.06.15
13:14
(0) Никак, только косвенно.
9 lEvGl
 
гуру
12.06.15
14:19
(8) шо за нах, мб через метаданные попробовать?
10 RomanYS
 
12.06.15
14:21
(9) у формы нет метаданных
11 lEvGl
 
гуру
12.06.15
14:25
в глобальных же она есть
12 RomanYS
 
12.06.15
14:27
(11) и как её там найти?
13 NcSteel
 
12.06.15
14:27
(9) Нет не получится.
14 Mashinist
 
12.06.15
14:29
(6) это правда... хотя в моем конкретном случае... :-)
(10) и это правда
так что видимо просто через попытку...
15 NcSteel
 
12.06.15
14:44
(14) А что через попытку? толку от провери наличия "СправочникСписок" мало. Так как разработчик основной объект формы мог назвать по другому, например "Список". Да и никто не запрещает у стороннего объекта иметь форму с основным объектом другого типа.
16 RomanYS
 
12.06.15
14:50
(14) похоже надо вместе с формой передавать и ее описание. Иначе в общем случае по одной только форме определить не удастся
17 gigi789
 
12.06.15
14:51
ЭтаФорма.Объект.Ссылка.Метаданные().ПолноеИмя()
18 gigi789
 
12.06.15
14:52
или я вопрос не понял
19 RomanYS
 
12.06.15
14:52
(17) речь про формы списка
20 NcSteel
 
12.06.15
14:55
(17) Обработка может содержать основной реквизит справочника, так что мимо кассы.
21 lEvGl
 
гуру
12.06.15
14:56
(10)(12)(13) да, погорячился, может такой вариант
Тип(ЭтаФорма.СправочникСписок) = Тип("СправочникСписок.Заказчик")
22 NcSteel
 
12.06.15
14:58
(21) Не решает проблему в (20).
Все подходы являются косвенными, и точно определить никогда не получится. Только доработав формы, а именно в них добавить признак принадлежности.
23 Mashinist
 
12.06.15
15:04
(21) Сама строчка ЭтаФорма.СправочникСписок вызывает ошибку, если это форма не справочника, а например ПВХ
24 Mashinist
 
12.06.15
15:08
(22) согласен
25 lEvGl
 
гуру
12.06.15
16:41
можно по типу формы понимать - форма списка или элемента, у элемента - ЭтотОбъект, у списка СправочникСписок. Но в общем случае да - это все костыли.
Независимо от того, куда вы едете — это в гору и против ветра!