Форум Кладовочки АЛьФ`а

Обсуждение проектов => FormEx => Тема начата: Злоп от 29 января 2026, 13:37

Название: ИД формы - как получить?
Отправлено: Злоп от 29 января 2026, 13:37
Форму отчета/обработки можно открыть как
ОткрытьФорму("Отчет",,ПолныйПуть);
А можно открыть форму (в т.ч. и как новый экземпляр самой себя) как
ОткрытьФорму("Отчет#КакойТоУникальныйИд",,ПолныйПуть);
.
Вопрос: можно ли в открывшейся форме получить этот КакойТоУникальныйИд, не прибегая к передаче его через параметры формы Форма.Параметр?

В т.ч. и когда открываем форму из самой себя не указывая КакойТоУникальныйИд, а просто
ОткрытьФорму("Отчет#",,ПолныйПуть);
- каждый раз открывается новый экземпляр формы...
Название: Re: ИД формы - как получить?
Отправлено: Злоп от 29 января 2026, 14:00
Для чего это: когда я вызвал дочернюю форму из самой себя с новым уникальным ИД (и такая цепочка может быть длинной) - при закрытии дочерней формы надо вернуться в родительскую (еще незакрытую). Например, UCHOICE чтобы можно было вызывать из самой себя длинной цепочкой, что позволит строить сложные отборы...
Название: Re: ИД формы - как получить?
Отправлено: Злоп от 29 января 2026, 14:02
В Формексе такого не нашел. а хотелось бы, типа как атрибут РасширениеФормы или как-то иначе...
Название: Re: ИД формы - как получить?
Отправлено: АЛьФ от 29 января 2026, 15:54
РасширениеФормы::Метка
Синтаксис:
Метка
Назначение:
Доступ к значению метки формы. Атрибут для чтения/записи.
Возвращает/устанавливает метку формы, которая задается при вызове метода ОткрытьФорму()
после знака '#' в названии объекта.
Название: Re: ИД формы - как получить?
Отправлено: Злоп от 29 января 2026, 22:24
Не работает. РасширениеФормы.Метка - возвращает пусто.
Форма, кнопка "Сформировать" (тестовый пример скачать здесь: https://wdfiles.ru/4Ssxc (https://wdfiles.ru/4Ssxc))
.

Процедура Сформировать()
МеткаНовойФормы = _GetPerformanceCounter();
Сообщить("Открываем форму с меткой: "+МеткаНовойФормы);
ОткрытьФорму("Отчет#"+МеткаНовойФормы,,РасположениеФайла());
КонецПроцедуры // Сформировать()

Процедура ПослеОткрытия()
РФ = СоздатьОбъект("РасширениеФормы");
МеткаЭтойФормы = РФ.Метка;
Сообщить(СимволТабуляции+"метка открытой формы: " + МеткаЭтойФормы);
КонецПроцедуры // ПослеОткрытия
Название: Re: ИД формы - как получить?
Отправлено: Харлампий Дымба от 29 января 2026, 23:37
Не работает с внешними отчетами.
Если вызывать отчет из конфигурации, РасширениеФормы::Метка возвращает корректный Id в обоих случаях: и когда он явно задан, и когда присваивается системой.
Название: Re: ИД формы - как получить?
Отправлено: Злоп от 30 января 2026, 00:44
но где-то же эта "метка" хранится и для внешних, раз отрабатывает каждый раз новая форма даже просто если "Отчет#"
Название: Re: ИД формы - как получить?
Отправлено: Злоп от 30 января 2026, 21:08
Наверное, у Алексея просто руки не дошли до внешних отчетов в части этой метки.
Название: Re: ИД формы - как получить?
Отправлено: АЛьФ от 30 января 2026, 22:23
Цитата: Злоп от Вчера в 21:08Наверное, у Алексея просто руки не дошли до внешних отчетов в части этой метки.
Алексей тупо многие вещи просто для внешних отчётов не тестировал. Сегодня посмотрел, там и некоторые другие атрибуты не будут для внешних работать.
Название: Re: ИД формы - как получить?
Отправлено: Злоп от 30 января 2026, 23:20
Всяко бывает. Будем ждать Деда Мороза к следующему Новому году ;-)