Как проверить, открыта ли внешняя обработка? #640746


#0 by espanol
Как в коде проверить, открыта ли внешняя обработка?
#1 by sadden
в своё время пытался тоже определить, не нашёл возможности :-(
#2 by zladenuw
Уникальный идентификатор форме дай. при открытии и можно будет ее найти. для текущего сеанса
#3 by sadden
а можно поподробнее?
#4 by zladenuw
Тип: Произвольный. В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм. Если будет найдена форма с таким же ключом уникальности, вместо открытия новой формы будет активизирована найденная форма. Ложь - искать форму с ключом уникальности по умолчанию, Истина - не искать форму вообще, любое другое значение устанавливает ключ уникальности, по которому будет произведен поиск. Значение по умолчанию: Ложь тяжело в Сп найти ?
#5 by sadden
это то я в курсе, но я изначальный вопрос темы понял иначе
#6 by sadden
в коде нужно определить открыта ли форма той или иной обработки, в зависимости от этого произвести некие действия, но никак не открывать её.
#7 by espanol
это да, а вот как в коде определить открыта ли форма внешней обработки...
#8 by sadden
хотя бы сначала определиться с обработками конфигуратора )))
#9 by espanol
всмысле?
#10 by sadden
как хотя бы определить открыта ли форма НЕ внешней обработки?
#11 by espanol
это ежу понятно Если Формат.Открыта Тогда речь идет о форме внешней обработки... смысл в том что надо понять какие вообще формы открыты, и найти необходимую, но как это сделать... как определяется какие формы открыты в предприятии... но толку нету...
#12 by zladenuw
ты когда ее открываешь. давай ей идентификатор. и только потом сможешь проверить или открыта.
#13 by espanol
я пробую, вот: ВнешняяОбработка.ПолучитьФорму(,,"ФормаДиспетчеризацияАвто"); в качестве КлючУникальности у меня задано ФормаДиспетчеризацияАвто. А как теперь проверить что это открыто?
#14 by espanol
#15 by sadden
Пишет что закрыта
#16 by espanol
дак тыж новую форму создаешь, тебе надо к старой форме обратится
#17 by sadden
так вот именно, мне нужно было вообще из другого модуля определиться
#18 by sadden
но в пределах одного сеанса
#19 by espanol
сохранил бы куда-нить старую форму или все говорят что по ключу уникальности можно как-то обратится, но я ваще не понимаю как это делается технически... пример кода дайте уже...
#20 by sadden
вот именно, я не знал как и откуда запускается обработка,а определить требовалось
#21 by Buster007
да нельзя так сделать. Есть даже пример с ивзратом на ресурсе конкуренте, где перебираются окна, для того чтобы определить открыто окно или нет.
#22 by sadden
тоже слышал про внешние компоненты
#23 by espanol
Обработка прикреплена к справочнику. При открытии она создается в папке Temp. я попробовал записать путь внешней обработки в константу и при повторном открытии обращаться к нему, но не может обратится, всегда приходится создавать заново...
#24 by espanol
придется всетки помещать в конфигурацию ))
#25 by sadden
а если у тебя проблема с конкретной обработкой (у меня вопрос стоял с произвольными), почему не можешь при её открытии в параметры сеанса пометку устанавливать, а при закрытии снимать?
#26 by zladenuw
турки. сп почетали бы. все там работает Синтаксис: ПолучитьФорму(<Форма>, <Владелец>, <КлючУникальности>) Параметры: Тип: Строка; ОбъектМетаданных: Форма . Имя формы, как оно задано в конфигураторе, или объект описания метаданного требуемой формы. Если параметр не указан, то используется основная форма, заданная в конфигураторе. Тип: Форма; Элемент управления. Объект, который будет являться владельцем открываемой формы. Тип: Произвольный. В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм. При поиске учитываются значения свойств открытых форм соответствующим значениям параметров метода. Если найдена открытая форма (по совпадению всех параметров), то она будет возвращена вместо новой формы. Если из некой формы (один и тот же владелец) требуется открывать новые экземпляры другой формы, то при каждом вызове метода значение данного параметра должно быть уникально (в рамках соответствующих значений свойств открытых форм). Значение параметра присваивается свойству открываемой формы КлючУникальности. Следует учитывать, что при получении формы из "объекта" система получает форму для конкретного экземпляра объекта с учетом совокупности переданных параметров, в то время как для "ссылки" всегда существует только один объект в базе данных и форма получается одна (для одинаковой совокупности параметров).
#27 by zladenuw
и при повторном вызове. нужно задавать ключ. тогда она будет тебе искать. если ключ не задан. то тупо откроет новое
#28 by sadden
пример же привёл в - не срабатывает, если форма открыта, например, с Владельцем, а ты не знаешь, как и откуда что открывалось
#29 by zladenuw
#30 by sadden
говорю, же, не знаю я с каким ключом или по какому владельцу открывалось, так то можно вообще не указывать ключ - всё отработает
#31 by zladenuw
при открытии задай ключ. сложно что ли ?
#32 by zladenuw
я делал ключ уникальности по имени пользователя .
#33 by sadden
:-) - не я открываю обработку, а типовая конфа, мне нужно было бы тогда всю конфу перелопатить, и везде, где открывается какая-нить обработка устанавливать ключ и убирать владельцев
#34 by zladenuw
в самой обработки при открытии. Ставишь
#35 by sadden
во всех обработках, причём типовых
#36 by sadden
тогда уж и владельца нужно ещё сбросить
#37 by zladenuw
зачем ? должно и так
#38 by sadden
нет, не сработает, в том примере укажи в одной из формы владельца ЭтаФорма
#39 by sadden
#40 by zladenuw
ну если не нужен владелец формы. то убрать. по другому походу не как.
#41 by sadden
более того, мне нужно было ещё определить, какой формы окно активно :-)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С