|
Получить форму по элементу управления | ☑ | ||
---|---|---|---|---|
0
maxp77
09.10.14
✎
12:56
|
Задача:
в одной из типовых функций УПП: - УниверсальныеМеханизмы.ПолучитьДеревоМакетовПечати; - УниверсальныеМеханизмы.УстановитьПодменюПечати; - УниверсальныеМеханизмы.УстановитьПечатьПоУмолчанию по передаваемому в них элементу управления "ЭлементыФормы.ОсновныеДействияФормы" определять конкретную форму, на которой этот элемент управления расположен. Как? |
|||
1
maxp77
09.10.14
✎
14:31
|
up
|
|||
2
maxp77
09.10.14
✎
16:26
|
up
|
|||
3
ssh2QQ6
09.10.14
✎
16:39
|
Раз это ОсновныеДействияФормы, то вероятно источник действий командной панели, а это видимо командная панель - Форма. Можно ее получить через свойство элемента ИсточникДействий
|
|||
4
maxp77
09.10.14
✎
16:41
|
(3) ИсточникДействий в таком случае = Неопределено, это только в конфигураторе в палитре свойств для источника действий будет написано "форма". Не подходит.
|
|||
5
maxp77
09.10.14
✎
16:43
|
пробовал даже через метод ПолучитьПривязку() для командной панели добраться до формы, но он к сожалению панель формы возвращает, а не саму форму.
|
|||
6
ssh2QQ6
09.10.14
✎
16:44
|
(4) да, не подходит
|
|||
7
SeiOkami
09.10.14
✎
17:00
|
(0), не понимаю проблемы глянуть процедуру
|
|||
8
maxp77
09.10.14
✎
17:10
|
(7) в обработчике ПередОткрытием() формы документа вызывается процедура общего модуля
УниверсальныеМеханизмы.УстановитьПодменюПечати (мПодменюПечати, ЭлементыФормы.ОсновныеДействияФормы, мДеревоМакетов); В этой процедуре требуется определять, что за форма её вызвала по переданному элементу управления ЭлементыФормы.ОсновныеДействияФормы. сама процедура: Процедура УстановитьПодменюПечати(ПодменюПечати, КоманднаяПанель, ДеревоМакетов) Экспорт Если ДеревоМакетов.Строки.Количество() > 1 Тогда ИмяПодменю = "ПодменюПечати"; Если ПодменюПечати = Неопределено Тогда Если КоманднаяПанель.ВыравниваниеКнопок = ВыравниваниеКнопокКоманднойПанели.Право Тогда КоманднаяПанель.Кнопки.Вставить(0,,ТипКнопкиКоманднойПанели.Разделитель); ПодменюПечати = КоманднаяПанель.Кнопки.Вставить(0,ИмяПодменю,ТипКнопкиКоманднойПанели.Подменю,"Печать"); Иначе КоманднаяПанель.Кнопки.Добавить(,ТипКнопкиКоманднойПанели.Разделитель); ПодменюПечати = КоманднаяПанель.Кнопки.Добавить(ИмяПодменю,ТипКнопкиКоманднойПанели.Подменю,"Печать"); КонецЕсли; ПодменюПечати.Подсказка = "Меню выбора печатных форм"; КонецЕсли; Иначе Если ПодменюПечати <> Неопределено Тогда КоманднаяПанель.Кнопки.Удалить(ПодменюПечати); ПодменюПечати = Неопределено; КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
9
hhhh
09.10.14
✎
17:13
|
(8) "В этой процедуре требуется определять, что за форма её вызвала" - здесь не требуется форма. Без формы всё.
|
|||
10
hhhh
09.10.14
✎
17:14
|
(9)+ а, понял.
|
|||
11
hhhh
09.10.14
✎
17:21
|
у меня таки
Фрм = КоманднаяПанель.ИсточникДействий; Если ТипЗнч(Фрм) = Тип("Форма") Тогда срабатывает. не знаю, почему у вас не пашет. |
|||
12
maxp77
09.10.14
✎
17:31
|
(11) вы этот код в каком модуле пишете?
Вообще, даже в СП написано: "Если значение свойства Неопределено, то источниками данных будет являться форма и все элементы управления, которые могут выступать в качестве источника действий." |
|||
13
maxp77
09.10.14
✎
18:03
|
Есть ещё идеи?
|
|||
14
DailyLookingOnA Sunse
09.10.14
✎
18:06
|
Перебирать все метаданные в поисках формы, в которой есть элемент со свойствами, равными исходным.
|
|||
15
maxp77
09.10.14
✎
18:30
|
(14) Жестоко, но это в лучшем случае позволит только найти метаданные формы, но не получить экземпляр конкретной формы, т.к., например, документов одного типа может быть открыто сразу несколько.
|
|||
16
hhhh
09.10.14
✎
19:00
|
(12) значение свойства там у командной панели Форма. Откуда неопределено может взяться?
|
|||
17
Фокусник
09.10.14
✎
19:02
|
Придется ждать, когда в платформе приделают .Владелец() для реквизита формы, как это сделали со строкой ТЗ/ДЗ :)
|
|||
18
maxp77
09.10.14
✎
22:02
|
(16) код в студию, пожалуйста :) В УПП и в ЗУП неопределено возвращает в типовых документах. Возможно, это как-то связано со свойством командной панели Автозаполнение, там оно сброшено.
|
|||
19
maxp77
09.10.14
✎
22:04
|
(17) ждать нет времени, нужно изобретать велосипед :)
|
|||
20
maxp77
11.10.14
✎
19:54
|
(17) может быть это как-то взаимосвязано с ошибкой платформы
https://bugboard.v8.1c.ru/error/000002126.html "В клиент-серверном варианте информационной базы в обычном приложении при получении или открытии обычных форм внешних обработок вместо формы возвращается значение Неопределено." Надо бы на последнем релизе платформы проверить. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |