Имя: Пароль:
1C
1С v8
а как активировать другую открытую форму на рабочем столе? (решение)
0 RomaH
 
naïve
24.01.12
13:33
v8: 8.2 а как активировать другую открытую форму?
однако F6 работает

т.е. алгоритм вырисовывается такой:
в форме источнике выполняем скрипт - передаем F6
вызываем Оповестить куда передем идентификатор нужной формы

во всех!! формах в обработке оповещения проверяем доступность ввода и если ввод достпен - проверяем тали это форма которая нужна - если не та - то F6 и обработчик оповещения и так пока не найдем нужную форму (секцию окна рабочего стола)
1 RomaH
 
naïve
24.01.12
13:55
только ввод не доступен получается по такой схеме


&НаКлиенте
Процедура СписокПациентовВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
   
   СтандартнаяОбработка = Ложь;
   
   ПараметрыПередачи = Новый Структура("Пациент,ДатаРождения,Наименование,СтраховойНомерПФР",Элементы.СписокПациентов.ТекущаяСтрока,Объект.ДатаРождения,Объект.ФамилияИмяОтчество,Объект.СНИЛС);
   Оповестить("ВыбранТекущийПациент",ПараметрыПередачи,ЭтаФорма);
   
   wshShell = Новый COMОбъект("WScript.Shell");    
   wshShell.sendKeys("{F6}");  
   
   ПараметрыПередачи = Новый Структура("ВызвавшаяФорма,НужнаяФорма","ФормаСпискаПациентов","ФормаДокумента");
   Оповестить("НачатьРедактированиеДокумента",ПараметрыПередачи,ЭтаФорма);
   
КонецПроцедуры

//в следующей форме:

   Если ИмяСобытия = "НачатьРедактированиеДокумента" Тогда
       
       Если Не ВводДоступен() Тогда //Фокус в форму не передан - проверять ничего не надо
           Сообщить("Ввод не доступен"); //попадает сюда хотя курсор стоит в этой форме
           Возврат;
       КонецЕсли;
       
       Если Параметр.ВызвавшаяФорма <> "ФормаДанныхПациентов" Тогда //форма стала активной, если эта форма не является вызвавшей формой - то надо продолжить вызов
           
           wshShell = Новый COMОбъект("WScript.Shell");    
           wshShell.sendKeys("{F6}");  
           
           ПараметрыПередачи = Новый Структура("ВызвавшаяФорма,НужнаяФорма",Параметр.ВызвавшаяФорма,"ФормаДокумента");
           Оповестить("НачатьРедактированиеДокумента",ПараметрыПередачи,ЭтаФорма);
           
       КонецЕсли;
       
   КонецЕсли;


2 RomaH
 
naïve
24.01.12
14:19
т.е. не понятно - как узнать какая форма стала активной после выполнения скрипта (нажатия F6)
если сразу после Ф6 вызвать оповещение - то ВводДоступен() в "активной" форме дает ложь
3 tridog
 
24.01.12
14:23
И ради чего вся эта отброная немецкая порнография?
4 RomaH
 
naïve
24.01.12
14:29
(3) ради вас, дорогие вы наши пациенты (ускоряем работу регистратуры поликлинники)