Имя: Пароль:
1C
1С v8
Залип внешнего события "Штрихкод" в 1С:Рознице
0 petya_
petrov_63
 
22.03.23
10:26
Есть обработка РабочийСтол. В которой идет сканирование товаров и подбор в табличную часть.
Имеется следующая проблема: при открытии обработки и сканировании внешнего события не происходит. Но если открыть форму документа чекккм, закрыть её, то после этого замечательным образом событие штрихкод срабатывает. В чем может быть залип?

&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
    Если ВводДоступен() Тогда
        //Вставить содержимое обработчика
        Сообщить(">>>" + ТекущаяДата() + ">" + Источник +  ":"+ Событие+ ":"+ Данные);
        Если Событие = "Штрихкод" Тогда
            ОбработатьШтрихКод(Данные);
        КонецЕсли;
        
        Если Источник="IPO1C_Connect" Тогда
            Если Событие="IN" Тогда
                данныеЗвонка = ПолучитьДанныеЗвонка (Данные);
                            Если ПустаяСтрока(данныеЗвонка.НомерТелефона1) Тогда Возврат; КонецЕсли;
                номерТелефона = БИС_ОбщегоНазначенияКлиентСервер.НомерТелефонаПоРФ(данныеЗвонка.НомерТелефона1);
                Если ПустаяСтрока(номерТелефона) Тогда Возврат; КонецЕсли;
                // если номер телефона был IPO1C_Ringing на этот добавочный
                сообщить(данныеЗвонка.НомерТелефона1);

                сообщить(ЭтаФорма.ПоследнийВходящийНомер);

                Если (данныеЗвонка.НомерТелефона1=ЭтаФорма.ПоследнийВходящийНомер) Тогда
                    П = Новый Структура("НомерТелефона", номерТелефона);
                    ОткрытьФорму("ОбщаяФорма.БИС_ФормаВходящегоЗвонка", П, ЭтаФорма);
                КонецЕсли;
            КонецЕсли;  
        КонецЕсли;
        //
        Если Источник="IPO1C_Ringing" Тогда
            Если Событие="IN" Тогда
                данныеЗвонка = ПолучитьДанныеЗвонка (Данные);
                Если (данныеЗвонка.ВнутреннийНомер=ЭтаФорма.внутреннийТелефон) Тогда
                    ЭтаФорма.ПоследнийВходящийНомер = данныеЗвонка.НомерТелефона1;
                КонецЕсли;
            КонецЕсли;  
        КонецЕсли;
    КонецЕсли;
    
    
КонецПроцедуры
1 НикДляЗапросов
 
22.03.23
10:27
В фокусе формы
2 petya_
petrov_63
 
22.03.23
10:46
форма активна, программно никак не управляю. Нипонятно.
3 arsik
 
гуру
22.03.23
10:49
(2) Ну почитай уже чего ни будь по событиям 1С. Открой конфигурация Библиотеку подключаемого оборудования там посмотри.
Ну по крайней мере открой в отладчике форму в которой сканер подключается и там посмотри как это реализовано.
4 petya_
petrov_63
 
22.03.23
10:54
Тупо сделал внешнюю обработку с одним событием

&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
    Сообщить(">>>" + ТекущаяДата() + ">" + Источник +  ":"+ Событие+ ":"+ Данные);
КонецПроцедуры

никакие обработки и хитроумные управления фокусом не понадобились. Все срабатывает.
5 CaIIIka
 
22.03.23
10:58
Событие к форме привязано? В свойствах формы.
6 petya_
petrov_63
 
22.03.23
11:01
(5) привязано, иначе оно и после "чудесного" открытия формы чекККМ не срабатывало.
7 CaIIIka
 
22.03.23
11:06
В чеке ККМ подтягиваются подключенные устройства.
У меня не типовая, но принцип, возможно, схожий.
Методы типа:
МенеджерОборудованияКлиент.ОбновитьРабочееМестоКлиента()
МенеджерОборудованияКлиент.ПодключитьОборудованиеПоТипу(...)

В ПриОткрытии поищите.
8 petya_
petrov_63
 
22.03.23
11:07
Сохранил обработку как внешнюю - тоже не работает.
9 CaIIIka
 
22.03.23
11:16
В некоторых случаях через событие формы ОбработкаОповещения реализовано
10 petya_
petrov_63
 
22.03.23
11:17
Нет тут через ВнешнееСобытие
11 eddy_n
 
22.03.23
11:33
Что может на клиенте инициализироваться в форме Чека ККМ, что обходит стороной эта обработка?
12 petya_
petrov_63
 
22.03.23
11:43
(11) Меня лично интересует вопрос почему в пустой обработке работает внешнее событие, а в этом рабочем столе не работает.
13 eddy_n
 
22.03.23
11:45
(12) Ещё раз спрошу - точно ВнешнееСобытие в той обработке привязано к Событиям формы?
14 arsik
 
гуру
22.03.23
11:49
5$
15 petya_
petrov_63
 
22.03.23
11:49
16 eddy_n
 
22.03.23
11:57
Сейчас под рукой нет, но ясно, что в Чеке ККМ ПриОткрытии() в форме идёт подключение Торгового Оборудования на клиенте.
17 eddy_n
 
22.03.23
12:00
Получается, надо смотреть ПриОткрытии() формы этой обработки.
18 eddy_n
 
22.03.23
12:09
Никакого расширения не стоит, которое перехватывает ВнешнееСобытие?
19 petya_
petrov_63
 
22.03.23
12:13
(16) но в пустой форме то никакого подключения нет и сканер работает. Что пустая форма делает не так?
20 petya_
petrov_63
 
22.03.23
12:14
(18) нет расширения с перехватом нет.
21 eddy_n
 
22.03.23
12:17
(19) Нет ясности.
22 petya_
petrov_63
 
22.03.23
12:21
Остановился на костылях: просто при открытии рабочегостола открываю форму списка документа чекККМ. Костыль, но работает.
Закон Брукера: Даже маленькая практика стоит большой теории.