Имя: Пароль:
1C
1С v8
активность открытых форм (управлемое приложение)
0 qwaqwa
 
11.06.13
14:17
Код приведенный ниже описан в 2 различных формах (формадоукмента и формасписка) В обеих формах имеется процедура ОбработкаОповещения() в обеих описан код:
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
   
   Если Источник = "ПодключаемоеОборудование" И ИмяСобытия = "ScanData"
   И АктивноеОкно() Тогда
       
       ШК = Параметр[0];
       Если  (СтрДлина(ШК) = 11  Или  СтрДлина(ШК) = 12) Тогда
           
           Если    СтрДлина(ШК) = 11 Тогда
               ШК = Параметр[0];
               Буква1 =  юи_ОбщегоНазначенияКлиент.ПолучениеБуквыСерииБСОПоШтрихкоду(Сред(ШК,4,2));
               Буква2 =  юи_ОбщегоНазначенияКлиент.ПолучениеБуквыСерииБСОПоШтрихкоду(Сред(ШК,6,2));
               юи_НомерБСО = Прав(ШК, 7);
               юи_СерияБСО = Буква1 + Буква2;
           ИначеЕсли    СтрДлина(ШК) = 13 Тогда
КонецЕсли;

Проблема в том, что этот код отрабатывает последовательно в 2х формах, а должен только в последней открытой, как с этим бороться? ВводДоступен() возвращает всегда ЛОЖЬ
1 qwaqwa
 
11.06.13
14:18
П.С. строка: И АктивноеОкно() Тогда ---отсутствует
2 qwaqwa
 
11.06.13
15:14
неужели никто  не сталкивался?
3 Infsams654
 
11.06.13
15:20
(2) а параметры ", Параметр, Источник" на что ? Из них можно понять от куда пришло оповещение
4 acsent
 
11.06.13
15:20
так оповещение во все окна приходит
5 acsent
 
11.06.13
15:21
в этом его суть
6 qwaqwa
 
11.06.13
15:23
солидарен с (4)
7 qwaqwa
 
11.06.13
15:26
может есть методы проверки активности формы или нечто подобное?
8 Infsams654
 
11.06.13
15:30
(7) а зачем в форме списка обработка оповещения ? Там же много всяких документов, несвязанных с источником события.
9 Mitriy
 
11.06.13
15:32
(7) ВводДоступен()
10 banco
 
11.06.13
15:32
ВводДоступен() поможет
11 qwaqwa
 
11.06.13
15:50
(8) Это типовая примочка, есть значит нужна.
(9) (10) Пробовал использовать ВводДоступен() - возвращаемое значение всегда ЛОЖЬ
12 banco
 
11.06.13
15:51
(11) если ВводДоступен() = Ложь значит форма не активна, то что ты и хотел
13 banco
 
11.06.13
15:52
(11) а как ты проверял, что всегда возвращает Ложь?
14 qwaqwa
 
11.06.13
15:56
Вычислял значение при отладке, да и в момент прохождения по строке содержащей ВводДоступен() условие в котором ввод прописан не отрабатывает
15 banco
 
11.06.13
15:57
(14) так при отладке форма то не активна )))
16 banco
 
11.06.13
16:00
(14) точку останова ставь после условия ВводДоступен() и проверь
17 qwaqwa
 
11.06.13
16:04
(16) сейчас проверю, но блин тогда почему условие не отрабатывает в данной строке не понимаю)
18 qwaqwa
 
11.06.13
16:23
(17) В общем, ВводДоступен не отрабатывает
19 banco
 
11.06.13
16:27
(18) значит форма не активна, других вариантов нету
20 acsent
 
11.06.13
16:43
АктивноеОкно() = ЭтаФорма.Окно
21 qwaqwa
 
11.06.13
17:35
(20) Спасибо за наводку, тепрь ситуация изменилась...
Пользователь открывает список документов продажи и делает форму списка активной, код отрабатывает как нужно. Из формы списка открывается форма документа и тут мы видим что АктивноеОкно() = ЭтаФорма.Окно это ложь, в то время как в форме списка АктивноеОкно() = ЭтаФорма.Окно = Истина.! Следовательно условие в форме документа не срабатывает и  код не отрабатывает, если комментим Активноеокно() то отладка перепрыгивает из формы документа в форму списка... Как этого не допустить?
22 qwaqwa
 
11.06.13
18:03
Пробывал активизировать форму перед проверкой, все равно ложь
23 qwaqwa
 
11.06.13
18:09
есть еще идеи?
24 Mitriy
 
11.06.13
18:17
забей и используй владельца...
25 qwaqwa
 
11.06.13
18:21
(24) можно немножко подробней? спасибо!
26 Desna
 
11.06.13
19:29
"управлемое приложение" в заголовке тему - исправьте пожалуйста для паучка ;)
27 Skazy
 
11.06.13
19:40
Может можно ЭтаФорма.ВводДоступен()?
28 qwaqwa
 
12.06.13
11:28
(27) Не прокатывает. Прошу помощи..!
29 qwaqwa
 
12.06.13
11:51
(24)   Mitriy, было бы очень интересно услышать Ваш вариант
30 qwaqwa
 
12.06.13
12:47
up
31 qwaqwa
 
12.06.13
14:26
поднимаю
32 Infsams654
 
20.06.13
09:35
(31) ну как, пронесло ? не подумал на счет (8) ?*