|
v8: Как узнать имя формы, в которой я сейчас нахожусь? | ☑ | ||
---|---|---|---|---|
0
Snovy
13.02.13
✎
23:49
|
Как узнать имя формы, в которой я сейчас нахожусь???
ЭтаФорма.Имя - ошибка. ЭтаФорма.Метаданные().Имя - дает имя объекта метаданных, в которых есть это имя ЭтотОбъект.Формы[ЭтаФорма] - требует имя формы, а его не узнать. ЭтотОбъект.ПолучитьФорму(ЭтаФорма)тоже вылетает с ошибкой... Только перебором коллекции форм объекта, больше никак? Как и с перечислениями? Обычные формы, платформа 8.2.16. |
|||
1
Snovy
13.02.13
✎
23:50
|
(0)+ Читать: ЭтаФорма.Метаданные().Имя - дает имя объекта метаданных, в которых есть это форма
|
|||
2
ОбычныйЧеловек
13.02.13
✎
23:56
|
(0) >> Только перебором коллекции форм объекта, больше никак? Как и с перечислениями?
1С под рукой нет (поэтому посмотреть не могу), но с перечислениями точно ничего перебирать не нужно - имя замечательно получается без всякого перебора. |
|||
3
Snovy
14.02.13
✎
00:01
|
(2) А с формами? Да и с перечислениями тоже приходится бороться, но сейчас не в перечислениях дело. Не нужно про них...
|
|||
4
acsent
14.02.13
✎
00:03
|
(3) никак
|
|||
5
Snovy
14.02.13
✎
00:10
|
(3) ОК - уже понял... Это типа прикол такой от вендора...
|
|||
6
ОбычныйЧеловек
14.02.13
✎
00:10
|
(3) ну нету 1С-ки под рукой (утром гляну)...ты бы лучше задачу описал...
>> ЭтаФорма.Метаданные().Имя - дает имя объекта метаданных, в которых есть это имя Это вообще сработает при условии, что ты находишься в форме элемента\документа (в формах списака такое не прокатит - если я ничего не путаю...) |
|||
7
Snovy
14.02.13
✎
00:11
|
(6) Не прокатит. Форма списка вообще не знает, кому она принадлежит. Но я в форме объекта - а хрен редьки не слаще...
|
|||
8
ОбычныйЧеловек
14.02.13
✎
00:12
|
(7) а у тебя , что - несколько фом объекта?
|
|||
9
ОбычныйЧеловек
14.02.13
✎
00:14
|
Просто опиши задачу
|
|||
10
Snovy
14.02.13
✎
00:14
|
(8) Ага. Я не в основной форме. Мне нужно сохранить ее имя для последующего открытия. Как в регламентированной отчетности не хочу. Там много мусора. Хотел как проще. Придется отдавать программистам - пусть они мучаются...
|
|||
11
Snovy
14.02.13
✎
00:25
|
Зашибись!!!
ИмяФормы=""; Для Каждого Форма Из ЭтаФорма.Метаданные().Формы Цикл Если ЭтаФорма.ЭтотОбъект.ПолучитьФорму(ЭтаФорма.Метаданные().Формы[Форма.Имя].Имя)=ЭтаФорма Тогда ИмяФормы=Форма.Имя; Прервать; КонецЕсли; КонецЦикла; А в одну строчку есть вариант? |
|||
12
Snovy
14.02.13
✎
00:32
|
(11)+ Я так понимаю конструкция . ПолучитьФорму() вызовет инициализацию всего кода, который находится в модуле формы? И наверное еще и в самом объекте?
|
|||
13
Команданте
14.02.13
✎
00:37
|
я делаю очень просто
создаю реквизит формы, при создании на сервере инициализирую значение руками профит 1С не .NET тут не покуражишься |
|||
14
Команданте
14.02.13
✎
00:38
|
главное надо записать в блокнотик все места в конфиге, где ты "кэшируешь" явные свойства экземпляра класса
|
|||
15
Snovy
14.02.13
✎
00:40
|
(13) Принято. Я думал это со временем исправят. У формы имя есть. И, например, заголовок формы есть. К заголовку из формы достучаться можно, а к имени и синониму нет. Биться головой об стену не буду, очень хочется узнать - в чем интрига?
|
|||
16
Snovy
14.02.13
✎
00:42
|
(13)+ Так делается и в типовых и в обычных и в управляемых. Повторю вопрос - в чем фишка?
|
|||
17
Команданте
14.02.13
✎
00:43
|
попробуй ещё ЭтаФорма.ИмяФормы
я часто использую если твой случай |
|||
18
Snovy
14.02.13
✎
00:49
|
(17) Отключился уже от рабочего компа. Завтра попробую. Типа недокументированная фича? Я такого в СП не нашел?
|
|||
19
Команданте
14.02.13
✎
00:52
|
(18) УправляемаяФорма (ManagedForm)
ИмяФормы (FormName) Использование: Только чтение. Описание: Тип: Строка. Содержит уникальное имя формы. Например: Справочник.Справочник1.Форма.Форма1. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент. |
|||
20
Snovy
14.02.13
✎
00:56
|
(19) У меня обычные формы. Попробовал. Поле объекта не обнаружено.
ПС. На УФ переводить заказчика смысла нет. все в терминале. такова политика партии. Это будет смешно - в терминале и на УФ. Заказчик заклюет от производительности УФ. Особенно когда увидит прорисовку УФ. Мы уже одному поставили КОРП 3. Задрали как бухи, так и ИТ служба - что за хрень вы нам тут делаете... Подожду 8.3. |
|||
21
Живой Ископаемый
14.02.13
✎
00:59
|
2(0) Зачем?
|
|||
22
Команданте
14.02.13
✎
01:01
|
(20) понятно. тогда реквизит формы и присвоение в процедуре при открытии
|
|||
23
Snovy
14.02.13
✎
01:08
|
(22) Победил перебором форм объекта. Попозже при наличии свободного времени попробую одной строчкой что бы.
(21) надо! см. регламентированную отчетность. нужно, что бы почти также, но корпоративные формуляры отчетности. Выкидывал накопившийся мусор из типовых, застрял на мелочи... |
|||
24
Живой Ископаемый
14.02.13
✎
01:11
|
2(23)Не понятно...
не нужен именно этот экземпляр формы, нужно только имя? |
|||
25
Живой Ископаемый
14.02.13
✎
01:17
|
Ладно, не знаю поможет ли...
ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(ЭтаФорма)); |
|||
26
Snovy
14.02.13
✎
01:17
|
(24) Нужно сохранение подготовленного отчета. велосипедов мы не изобретаем, поэтому за основу взят контур регламентированной отчетности в типовых. Док, который хранит данные отчета. Выбрасываем весь типовой мусор - наследие 8.0 и выгрузки в ИФНС и прочую связанную с ней фигню. Док в себе хранит строкой объект метаданных (отчет) и строкой форму этого отчета. Открытие нового отчета упростили по сравнению с типовой.
при сохранении отчета в документ нужен строкой объект метаданных (отчет) - нет проблем и строкой имя формы, которая сохраняется. А вот тут засада из (0). Все просто - доступно ив навоз. В общем как всегда в 1С - грабли в самых неожиданных местах. Причем детские, что больнее и обиднее... |
|||
27
Живой Ископаемый
14.02.13
✎
01:19
|
хм... может помочь
|
|||
28
Snovy
14.02.13
✎
01:20
|
(25) Это уже точно завтра на работе испробую. Задача проста. Сначала сохранить в доке имя-формы, а потом при открытии дока открыть форму методом отчет.получитьформу(имя-формы).
|
|||
29
Snovy
14.02.13
✎
01:25
|
(27) - (25) не помогло - на выходе тип форма, а мне нужен тип объект метаданных - именного у него есть имя. т.е. (25) дает тот же результат, что и ЭтаФорма...
|
|||
30
Живой Ископаемый
14.02.13
✎
01:29
|
да, но ее можно открыть... зачем тебе сначала ее искать в метаданных, потом делать ПолучитьФорму(), потом Открыть?
|
|||
31
zladenuw
14.02.13
✎
01:31
|
||||
32
Живой Ископаемый
14.02.13
✎
01:33
|
2(31) чотам?
|
|||
33
Snovy
14.02.13
✎
01:37
|
(30) Ее (имя формы) - нужно сохранить в доке. Что бы потом открыть. Сохранять в доке саму форму как хранилище значений - да ну... Вот и нужно имя формы, в которой в данный момент находишься :)
|
|||
34
Snovy
14.02.13
✎
01:40
|
(32) Там парсят ЗначениеИзСтрокиВнутр(ЭтаФорма) и считают это верхом совершенства...
|
|||
35
Очкарик
14.02.13
✎
01:43
|
(34) наверно клюшечники пишут
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |