![]() |
![]() |
![]() |
|
Узнать метаданные.Справочники.Мой.Формы.Формв собственно из формы - невозможно!? | ☑ | ||
---|---|---|---|---|
0
SZA
01.11.08
✎
16:53
|
Привет.
Вот, например, находясь в форме списка справочника я никак не могу выйти на Метаданные.Справочники.ДанныйСправочник.Формы.ДаннаяФорма не прописывая это руками ? Как бы это объяснить.. ..преположим уже существует вызов из любой формы конфигурации определенной глобальной процедуры ГлОтФорм(ЭтаФорма), но хочется, чтобы было понятно из какой именно части метаданных произошел вызов. Конкретнее - какая форма? Объект ЭтаФорма многое о себе рассказывает, но нет ссылки на собственные метаданные и нет собственного названия, чтобы хотя бы предпринять поиск по метаданным. Я правильно понимаю, что если в окружении нет ЭтотОбъект, выйти на текущие метаданные уже невозможно!? |
|||
1
H A D G E H O G s
01.11.08
✎
17:18
|
ЭтаФорма.Метаданные()
|
|||
2
SZA
01.11.08
✎
17:23
|
..щаз! "{(1)}: Метод объекта не обнаружен (метаданные)"
1С:Предприятие 8.1 (8.1.12.101) |
|||
3
Кадош
01.11.08
✎
17:37
|
а вам зачем? (с)
|
|||
4
Кадош
01.11.08
✎
17:38
|
может быть Владелец?
|
|||
5
MishaSan
01.11.08
✎
17:38
|
метаданные.найтиПоТипу(ТипЗнч(Список))
|
|||
6
ottto
01.11.08
✎
21:22
|
Коряво можно так:
Попытка Представление = Строка(Форма.Список); СсылкаОбъекта = Новый (Тип("СправочникСсылка." + Сред(Представление, 18))); Исключение Попытка СсылкаОбъекта = Новый (ТипЗнч(Форма.Ссылка)); Исключение Возврат; //Это не наш объект! КонецПопытки; КонецПопытки; |
|||
7
TormozIT
гуру
01.11.08
✎
22:00
|
В сериализованном виде в форме можно найти ее идентификатор. Потом получить каждую форму из менеджера и сравнивать их идентификаторы. Будет долго но надежно.
|
|||
8
SZA
01.11.08
✎
22:45
|
(3) УПП - сотни форм. Из любой из них может быть вызов нужной мне процедуры (ее
вызов добавляется интерактивно при открытии формы). Но мне нужно знать откуда. Конкретно - метаданные..ТекущаяФорма. Прменений может быть масса. Мне свое тяжело так в об объяснить. (4) Владелец=неопределено (6) да ну нету у ЭтаФорма ни "Список" ни "Ссылка". (7) Расскажите пожалуйста - мне уже все равно как. Альтернатива только ходить вставлять полное описание Метаданные..Форма во всех формах в вызов своей гл.процедуры. |
|||
9
SZA
01.11.08
✎
23:09
|
(6+) Вашу идею про сред(сокрлп(ЭтаФорма.СправочникСписок),18) понял. Жаль только у справочника может быть несколько форм с таким элементом - например форма выбора и форма списка. В общем это все гадание на кофейной гуще.
|
|||
10
ЫЫЫЫ
02.11.08
✎
00:53
|
Метаданные.НайтиПоТипу(ЭтаФорма.Отбор.Ссылка.ТипЗначения.Типы()[0])
|
|||
11
ЫЫЫЫ
02.11.08
✎
01:16
|
+10 Продолжение:
ТипОбъекта = ЭтаФорма.Отбор.Ссылка.ТипЗначения.Типы()[0]; МетаданныеОбъекта = Метаданные.НайтиПоТипу(ТипОбъекта); Для Каждого МетаданныеФормы Из МетаданныеОбъекта.Формы Цикл Форма = Справочники[МетаданныеОбъекта.Имя].ПолучитьФорму(МетаданныеФормы.Имя, ВладелецФормы, КлючУникальности); Если Форма = ЭтаФорма Тогда Сообщить(МетаданныеФормы.ПолноеИмя()); КонецЕсли; КонецЦикла; |
|||
12
H A D G E H O G s
02.11.08
✎
01:18
|
(11) Плохо
|
|||
13
SZA
02.11.08
✎
01:21
|
(10) да! черт возьми.. для форм списков и выбора справочников и документов это
идеально. .."отбор!? кто бы мог подумать". Спасибо большое! Если принять два подхода с попытками, (второй подход через ЭтотОбъект), то остаются неохваченными только общие формы конфигурации - таких немного - там можно и руками проставить. Хорошо что меня не интересуют в этой задаче "вторичные" (неосновные) формы собственно объектов справочников, доков, обработок, отчетов, регистров. Как получить их метаданные так и остается загадкой. Возможно - без ответа. |
|||
14
H A D G E H O G s
02.11.08
✎
01:26
|
Для Каждого МетаданноеСправочник ИЗ Метаданные.Справочники Цикл
Для Каждого МетаданноеТекущейФормы Из МетаданноеСправочник.Формы Цикл ТекущаяФорма=Справочники[МетаданноеСправочник.Имя].ПолучитьФорму(МетаданноеТекущейФормы); Если ТекущаяФорма=ЭтаФорма Тогда Сообщить(МетаданноеТекущейФормы.Синоним); Прервать; КонецЕсли; КонецЦикла; КонецЦикла; |
|||
15
H A D G E H O G s
02.11.08
✎
01:27
|
Дольше, зато однозначно
|
|||
16
H A D G E H O G s
02.11.08
✎
01:30
|
Аналогично обходим Документы (если надо), и.т.д., а также
Метаданные.ОбщиеФормы |
|||
17
ЫЫЫЫ
02.11.08
✎
01:31
|
(14)
Во-первых, не учитываются ВладелецФормы и КлючУникальности. Во-вторых, на монстрообразных конфигурациях тормоза получатся нехилые. |
|||
18
SZA
02.11.08
✎
01:32
|
(11) пока писал ответ - увидел продолжение, понял как получить "вторичные". выходит следует только выяснить справочник это или окумент/отчет/обработка.. ..а далее все можно найти.
спеку завтра код общий для всех случаев - может тут положу |
|||
19
ЫЫЫЫ
02.11.08
✎
01:32
|
(15)А в чём неоднозначность (11)?
|
|||
20
H A D G E H O G s
02.11.08
✎
01:38
|
(19) У ФормаЭлемента, дополнительных форм есть Отбор?
ВладелецФормы может и надо учитывать, не проверял, но зачем КлючУникальности??? |
|||
21
SZA
02.11.08
✎
01:39
|
(17) да конфигурация монструозная.. перебор применять жалко. Пойду по пути предварительных попыток считать реквизиты и понять область конфигурации прежде чем произвести поиск по метаданным
Я вчера думал тут найдутся решения по поводу всяких недокументированных индексов объектов конфигурации - которые можно считать и использовать в поиске по метаданным :) Вообще форма настолько неуниверсальный объект - почти каждый ее вариант (списки/объекты/свободные) нужно описывать отдельной попыткой получить ее реквизиты.. ..чего то тут 1С недосмотрела. |
|||
22
H A D G E H O G s
02.11.08
✎
01:39
|
(17)
<<Во-вторых, на монстрообразных конфигурациях тормоза получатся нехилые.>> Полностью согласен. Если результат нужен несколько раз - кэшируем :-) |
|||
23
ЫЫЫЫ
02.11.08
✎
01:46
|
(20)
>>У ФормаЭлемента, дополнительных форм есть Отбор? А, ну если брать совсем абстрактную форму тогда конечно, (11) именно под форму списка справочника заточено. >>но зачем КлючУникальности? Форма1 = МенеджерОбъекта.ПолучитьФорму(ИмяФормы, ВладелецФормы, "КлючУникальности1"); Форма2 = МенеджерОбъекта.ПолучитьФорму(ИмяФормы, ВладелецФормы, "КлючУникальности2"); Сообщить(Форма1 = Форма2); |
|||
24
H A D G E H O G s
02.11.08
✎
01:48
|
(23) Не проверяя:
Ложь |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |