![]() |
|
Как получить форму открытого вручную пользователем документа? | ☑ | ||
---|---|---|---|---|
0
eeyore
18.12.07
✎
18:08
|
Т.е. пользователь из формы списка открывает документ X, затем вводит на основании него документ Y.
Далее перед проведением документа Y надо убедиться, что закрыта форма документа основания (X) и если не закрыта, то принудительно ее закрыть. Как это сделать? Пробовал так: ВладелецФормы=Документы.X.ПолучитьФормуСписка().ЭлементыФормы.ТабличноеПоле; Форма=ДокументОснование.ПолучитьФорму(,ВладелецФормы); Не работает, смотрел в отладчике - разница в том что при моем вызове: ВладелецФормы - содержит свойства: ТабличногоПоля + Расширения табличного поля списка документов + Расширение элементов управления, расположенных в форме. А при стандартном вызове 1с передает только свойства: ТабличногоПоля + Расширения табличного поля списка документов. Расширение элементов управления, расположенных в форме - почему-то не передается! Кто сталкивался? Подскажите как разрешить? P.S. Вариант подменить параметр ВладелецФормы при стандартном открытии из спика документа X не удобен т.к. документов вида X много. |
|||
1
Mitriy
18.12.07
✎
18:12
|
Оповестить и ОбработкаОповещения?
|
|||
2
France
18.12.07
✎
18:31
|
ЭтаФорма
|
|||
3
asady
18.12.07
✎
18:34
|
(0)
ВладелецФормы=ЭтаФорма.ВладелецФормы; |
|||
4
eeyore
19.12.07
✎
10:05
|
1 - Вариант в общем-то. Но это не совсем то, что я хотел. Я хотел именно получить открытую форму - как это делает 1с (если ты откроешь форму документа X из кода через ПолучитьФорму() с любыми параметром ВладелецФормы, а потом в форме списка документа X - откроешь тот же документ - то 1с активизирует уже открытую форму, а не создаст новую) Недостаток предложенного тобой метода - что мне придется прописывать ОбработкаОповещения во многих документах.
2 - И как это использовать? 3 - Значение ЭтаФорма.ВладелецФормы - Неопределено |
|||
5
КонецЕсли
19.12.07
✎
10:37
|
тупо:
Форма=Документы.X.ПолучитьФорму(); Если Форма.Открыта() Тогда Форма.Закрыть(); КонецЕсли; |
|||
6
eeyore
19.12.07
✎
11:01
|
(5) - Будет получена форма нового документа. Форма.Открыта() - будет всегда ЛОЖЬ.
Мне надо найти открытую форму конкретного документа-объекта (например Документ.X N 15. А открытая форма другого документа, например Документ.X N 5 - мне не нужна) |
|||
7
КонецЕсли
19.12.07
✎
11:15
|
(6)
ДокумантОбъектXN15.ПолучитьФорму(); или ДокумантСсылкаXN15.ПолучитьФорму(); |
|||
8
eeyore
19.12.07
✎
11:16
|
(7) - Получает новую форму!
|
|||
9
КонецЕсли
19.12.07
✎
11:25
|
Синтаксис:
ПолучитьФорму(<Форма>, <Владелец>, <Ключ уникальности>) Параметры: ... <Ключ уникальности> (необязательный) Тип: Произвольный. В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм. При поиске учитываются значения свойств открытых форм соответствующим значениям параметров метода. Если найдена открытая форма (по совпадению всех параметров), то она будет возвращена вместо новой формы. ... |
|||
10
КонецЕсли
19.12.07
✎
11:34
|
Попробуй просто для ссылки на док выполнить ПолучитьФорму("ФормаИлиКакТамОнаНазывается"). Если для данного дока форма открыта, то её и получишь. Я так делал
|
|||
11
France
19.12.07
✎
11:38
|
КлючУникальности - тот параметр, который нужен отцу демократии
|
|||
12
eeyore
19.12.07
✎
11:53
|
(10) - Пробовал:
ОбъектОснование.ПолучитьОбъект().ПолучитьФорму(); ОбъектОснование.ПолучитьОбъект().ПолучитьФорму("ФормаДокумента"); ОбъектОснование.Ссылка.ПолучитьФорму(); ОбъектОснование.Ссылка.ПолучитьФорму("ФормаДокумента"); Получаю новое окно, а не то которое открыл пользователь! У меня 8.1. А ты в какой верси пробовал что у тебя открытая пользователем форма получается? |
|||
13
eeyore
19.12.07
✎
11:55
|
(11) - КлючУникальности для формы открываемой пользователем из списка документов X равен Неопределено. Какое решение ты предлагаешь?
|
|||
14
КонецЕсли
19.12.07
✎
12:41
|
Попробуй к качестве ключаУникальности послать ОбъектОснование. Он должен быть в свойствах открытой формы.
|
|||
15
eeyore
19.12.07
✎
12:46
|
(14) - см. пост (13)
|
|||
16
КонецЕсли
19.12.07
✎
13:27
|
Спецально смоделировал.
Из формы документа вызывается внешняя обработка со своей формой, в которую отправляю ссылку на этот документ. Во внешней обработке код на кнопке: Форма=ДокументОбъект.ПолучитьФорму("ФормаДокумента"); Если Форма.Открыта() Тогда Форма.Закрыть(); КонецЕсли; Дык вот. Этот код закрывает форму документа. Никакой новой формы не открываетсо. Версия 8. Как и написано в заголовке ветки. |
|||
17
eeyore
19.12.07
✎
15:19
|
(16) - Да ты прав. Код рабочий. Вообщем для объекта полученного с помощью ПолучитьОбъект это не работает, а для ссылки работает. Не знаю как я раньше для ссылки проверял что не работало, но сейчас все работает. Спасибо!
|
|||
18
Биньковский Виталий
19.12.07
✎
15:24
|
(17) СП:
"Следует учитывать, что при получении формы из "объекта" система получает форму для конкретного экземпляра объекта с учетом совокупности переданных параметров, в то время как для "ссылки" всегда существует только один объект в базе данных и форма получается одна (для одинаковой совокупности параметров)." |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |