Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как программно открыть форму в неактивном режиме

Как программно открыть форму в неактивном режиме
Я
   Ana24
 
17.07.19 - 12:24
Добрый день! Как программно открыть форму в неактивном режиме.
Открываю форму так:
             Окно = ВариантОткрытияОкна.ОтдельноеОкно;
         ОткрытьФорму("ОбщаяФорма.МояФорма",,,,Окно,,,РежимОткрытияОкнаФормы.Независимый);
При этом она сразу открывается как активная.
Мне нужно, чтоб она открылась, но при этом как неактивная вкладка.
 
 
   singlych
 
1 - 17.07.19 - 12:34
Побробуй откыть текущую форму еще раз с ее ключом уникальности, че-нить типа
ОткрытьФорму(ИмяФормы, , , КлючУникальности)
   Жан Пердежон
 
2 - 17.07.19 - 12:35
ОткрытьФорму();
Окно.Активизировать();
   Жан Пердежон
 
3 - 17.07.19 - 12:38
или просто Активизировать();
   Ana24
 
4 - 17.07.19 - 12:59
(2) Не подходит. Мне наоборот ее нужно не активизировать, а только открыть в новой вкладке
   Ana24
 
5 - 17.07.19 - 12:59
(1) Не сработало
   Вафель
 
6 - 17.07.19 - 13:01
открыть форму, активизировать другую, нужную
   Ana24
 
7 - 17.07.19 - 13:15
(6) да, так и надо.
Открыть форму, а активную оставить ту что и была (в которой пользователь работал)
А как это написать?
   Smile 8D
 
8 - 17.07.19 - 13:19
(7) Выше же уже написали в (2) вызвать Активизировать() после вызова открытия формы следующей строчкой.
   Вафель
 
9 - 17.07.19 - 13:20
форма скорее всего открывается асинхронно. поэтому нужно как-то через обработчик
   Ana24
 
10 - 17.07.19 - 13:24
(8) Я написала:
Окно = ВариантОткрытияОкна.ОтдельноеОкно;        ОткрытьФорму("ОбщаяФорма.МояФорма",,,,Окно,,,РежимОткрытияОкнаФормы.Независимый);
Окно.Активизировать();

При этом активной стала МояФорма, а мне нужно, чтоб МояФорма открылась и в неактивном режиме, т.е. активность формы с которой работает пользователь не изменилась (допустим он "сидит" в документе Заказ клиента, видит, что там открылась МояФорма, но при этом он все еще в Заказе клиента)
   Smile 8D
 
11 - 17.07.19 - 13:30
(10) Вы же понимаете, что в переменной "Окно" у вас вариант открытия окна? При попытке вызвать у этой переменной метод "Активизировать" у вас должна была выйти ошибка. Видимо, вы попробовали какой-то другой вариант.
А вам написали, что надо вызвать просто "Активизировать()", без указания объекта, тогда должен выполниться метод у вашего текущего окна, из которого вы вызываете открытие нового.
Если так не сработает, то можете еще попробовать "ЭтаФорма.Активизировать()".
   Ana24
 
12 - 17.07.19 - 13:37
(11) Да ошибка была.
Спасибо, сейчас попробую
   Ana24
 
13 - 17.07.19 - 13:44
(11) Не получается. Я вызываю открытие формы МояФорма из общего модуля. "Активизировать()" или "ЭтаФорма.Активизировать()" - выдают ошибку.
И какая форма сейчас активна у пользователя - не знаю.
   Smile 8D
 
14 - 17.07.19 - 13:49
(13) Тогда надо было сразу написать, что открываете из общего модуля. В этом случае вам надо в параметры функции общего модуля передавать ссылку на окно, откуда она вызывается. И вызывать "СсылкаНаОкно.Активизировать()" после открытия формы.
   Ana24
 
15 - 17.07.19 - 13:55
(14) А вызывается данная процедура при помощи ПодключитьОбработчикОжидания
   Smile 8D
 
16 - 17.07.19 - 14:10
(15) Тогда "удобных" вариантов решения нет. Если действительно без этой доработки никак, то нужно изучать весь механизм и придумывать как его переписать так, чтобы можно было получить и передать активное окно. А если такой возможности не будет, то идти на какие-то компромиссы по функциональности.
   Ana24
 
17 - 17.07.19 - 14:13
(16) Ок, спасибо.
   Жан Пердежон
 
18 - 17.07.19 - 15:02
аОкно = АктивноеОкно();
ОткрытьФорму();
аОкно.Активизировать();
   singlych
 
19 - 17.07.19 - 17:02
только оно активизируется раньше, чем откроется другая форма...
   Smile 8D
 
20 - 17.07.19 - 17:04
(19) Если АктивноеОкно() действительно получает ссылку на нужное окно и в общем модуле код выполняется в контексте клиента, то можно передать эту ссылку в параметры формы, которую открываем и по ней активизировать старое окно после открытия нового.
   singlych
 
21 - 17.07.19 - 17:10
(20) По сути да, но не уверен, что окно пробросится через сервер. Блин, заинтриговали.
   singlych
 
22 - 17.07.19 - 17:18
Хотя вроде работает так (18)
   Ana24
 
23 - 18.07.19 - 00:33
(18) Сработало!!! Огромное спасибо!!!!


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.