Перехват событий сканера #787291


#0 by Альбатрос
В РМК Розницы 2.2 пробую перехватить событие считывания ШтрихКода и в этот момент откурыть свою обработку. Событие перехватываю, обработку открываю, в этой обработке мне надо еще марку считать. Я ее считываю, все ок, но РМК почему-то тоже получает событие считывания марки и повторно открывает форму моей обработки? Почему так происходит и как сделать так, что когда открылась моя обработка все внешние события только она отрабатывала?
#1 by vadim777
Нужно событие от сканера очистить.
#2 by Альбатрос
А каким образом, не подскажешь? Попробовал вот так, не прокатило:
#3 by Альбатрос
И вообще, там проверка при внешнем событии на ВводДоступен. Как так получается, что для РМК он Истину возвращает?
#4 by Альбатрос
Я так понимаю, событие хватается одновременно обоими формами. Как так происходит, не одупляю ((((
#5 by nordbox
Судя по тому что ты написал, ТО у тебя обормотка внешнего события идет только в конфе, а еще надо бы сделать и в Твоей обормотке в которой считываешь марку, при этом перед считыванием очистить событие. Этом мое скромное мнение.
#6 by Альбатрос
Не не, в моей обработке тоже обрабатывается внешнее событие, результат потом передается в обратно в РМК и обрабатывается там, и это все правильно работает, НО как только заканчивается обработка переданного результата в РМК (а оно обрабатывается в ОбработкаВыбора), я опять попадаю во внешнее событие РМК. Другими словами: Считываю штрихкод бутылки - открывается моя обработка - в моей обработке считываю акц. марку - проводится обработка полученной инфы - передается обратно в РМК - там обрабатывается, добавляется строка в ТЧ -  а вот после этого я попадаю во внешнее событие РМК и данные у этого события = считанная акц. марка.
#7 by nordbox
>>- передается обратно в РМК После этого очистить надо событие
#8 by nordbox
+7 или считал, куда то запомнил и сразу чистить, потом передавать
#9 by Альбатрос
Ну вот через должно же было очиститься? Это код из моей обработки, не РМК.
#10 by Torquader
Если ты в обработке события открываешь обработку, то нужно, чтобы форма, которая открывает, это событие не получала, или проверить, что ВводДоступен, так как событие рассылается всем формам.
#11 by nordbox
Нет >>Если Результат = Неопределено Тогда Подумай, в каком случае у тебя результат Неопределено???
#12 by nordbox
Верно
#13 by nordbox
Синтаксис: ОбработкаОповещения(<ИмяСобытия>, <Параметр>, <Источник>) Параметры: <ИмяСобытия> Тип: Строка. Имя события. Может быть использовано для идентификации сообщений. <Параметр> Тип: Произвольный. Параметр, переданный в сообщении. Источник события, переданный в сообщении. Описание: Возникает при оповещении всех созданных форм методом глобального контекста
#14 by Альбатрос
Так вот как сделать, чтобы форма-владелец не получила событие?
#15 by nordbox
Синтаксис: ОбработкаОповещения(<ИмяСобытия>, <Параметр>, <Источник>) Параметры: <ИмяСобытия> Тип: Строка. Имя события. Может быть использовано для идентификации сообщений принимающими их формами. <Параметр> Параметр сообщения. Могут быть переданы любые необходимые данные. <Источник> Источник события. Например, в качестве источника может быть указана другая форма. Описание: Вызывается во всех созданных формах при вызове метода Оповестить. Параметры обработчика совпадают с параметрами метода Оповестить. Глобальный контекст (Global context) Оповестить (Notify) Синтаксис: Оповестить(<ИмяСобытия>, <Параметр>, <Источник>) Параметры: Тип: Строка. Имя события. Может быть использовано для идентификации сообщений принимающими их формами. Тип: Произвольный. Параметр сообщения. Могут быть переданы любые необходимые данные. Тип: Произвольный. Источник события. Например, в качестве источника может быть указана другая форма.
#16 by Альбатрос
Я устал ))) Может ты меня просто ткнешь носом конкретно, что нужно обнулить, чтоб это блядское событие очистилось?
#17 by nordbox
вот тебя может это подтолкнет, проверять не на чем
#18 by arsik
Ну я так помню, что при переключении нии на свою форму тебе нужно отключить от обработки событий основную форму.
#19 by nordbox
Ну я примерную мысль ему скинул, проверить нечем ПолучитьСерверТО.ПодключитьКлиента(ЭтаФорма); ПолучитьСерверТО.ОтключитьКлиента(ЭтаФорма);
#20 by nordbox
Вставь ПолучитьСерверТО.ПодключитьКлиента(ОсновнаяФорма); Я так думаю (с) )))
#21 by Альбатрос
Моя платформа не знает метода ПолучитьСерверТО =)
#22 by Альбатрос
на всякий случай 1С:Предприятие 8.3 (8.3.8.2167)
#23 by Cool_Profi
Это не платформенная, это конфигурационная функция
#24 by arsik
При чем тут платформа. Это общий модуль. У тебя будет типа
#25 by arsik
Неправильно
#26 by nordbox
+100500 Это в конфе надо смотреть платформа не причем
#27 by nordbox
)))) Пусть делает как ему нДравится ))
#28 by nordbox
Смотри Общие модули/МенеджерОборудованияКлиент
#29 by Torquader
Зачем отключать клиента от прошлой формы ? Если она неактивна, то просто нужно "пропускать мимо ущей" сообщение. А если активна, то открывать или искать уже открытую ту форму, которая нужна.
#30 by nordbox
Дело в том что если не отключить и потом опять вернуться к ней то наверняка(я так думаю) событие от предыдущей формы влетит в нее
#31 by Альбатрос
Так вот она почему-то активна, проходит проверку на ВводДоступен.
#32 by Альбатрос
Как получить уникальный идентификатор сканера? ))))
#33 by nordbox
Зачем? ))
#34 by Torquader
Ты новую форму открыл ? Показал ? Сделал активной ?
#35 by Альбатрос
Так точно! Но событие в форме владельца все равно отрабатывает.
#36 by Альбатрос
Функция ОтключитьОборудованиеПоИдентификатору(ИдентификаторКлиента, ИдентификаторУстройства, ОписаниеОшибки = "") Экспорт
#37 by Альбатрос
Может я наг*внокодил чот? Вот так из РМК я вызываю свою обработку:
#38 by Альбатрос
Только без строчки про менеджерОборудования, это я щас терзаю )))
#39 by nordbox
Конфа какая?
#40 by Альбатрос
Розница, редакция 2.2 (2.2.4.33)
#41 by nordbox
Как то так:
#42 by Альбатрос
Чот не проканывает ))) Попробовал вот так: Сканер отключается для всех форм, если подключаю его в ПриОткрытии моей обработки, он подключается и для владельца. И опять та же самая проблема выползает
#43 by nordbox
И вот уже в своей форме пиши Подключение, только правильно пиши
#44 by nordbox
ПодключитьОборудованиеПоТипу(ЭтаФорма.УникальныйИдентификатор, МассивДевайсов); Потом при закрытии
#45 by Альбатрос
Я ж говорю, без толку:
#46 by Альбатрос
А при закрытии зачем?
#47 by Альбатрос
Ну собссно ради эксперимента я пытаюсь форму владельца вообще отключить, и даже это не получается
#48 by nordbox
При закрытии надо Эту форму отключить и подключить Основную форму чека
#49 by nordbox
Там еще есть вот такая фигня // Подключает необходимые типы оборудования при открытии формы.      Функция ОтключитьОборудованиеПриЗакрытииФормы(ФормаЛибоУид, Знач ПоддерживаемыеТипыПодключаемогоОборудования = НЕОПРЕДЕЛЕНО, ОписаниеОшибки = "") Экспорт Смотри в том же модуле
#50 by Альбатрос
Да в моей обработке все норм работает, я не могу владельца-РМК отключить. А для этого не ПриОткрытии, не ПриЗакрытии не подходит. Меня больше мучает вопрос: Почему, когда открыта моя обработка, владелец проходит проверку на ВводДоступен? Можно как-то принудительно "деактивизировать" форму?
#51 by Torquader
Наверное, нужно режим открытия формы в том же окне, а не новом.
#52 by nordbox
а может НЕ ПриЗакрытии может как то логику по другому надо построить, для начала попить кофе и успокоится, ))) меня вот уже ужинать зовут (у меня время другое ) ))) поужинаю, подумаю )))
#53 by nordbox
Как вариант: Может стоит посмотреть например как сделано в обычном справочнике Номенклатура, Как там обрабатывается добавление ШК, и не передается в форму списка для поиска??
#54 by Альбатрос
Приятного аппетита )))
#55 by Альбатрос
Да, посмотрю щас. Не ожидал просто с такой проблемой столкнуться, 6 часов реально мучаю и в хвост и в гриву ((((
#56 by nordbox
Спасибо Так вроде бы Розница 2.2 уже с ЕГАИС идет или нет?
#57 by Альбатрос
Для него, ЕГАИСА родимого, и придумываю тут костыли )))) Да, с ЕГАИСом
#58 by Альбатрос
Домой поеду, завтра пожалуй продолжу
#59 by nordbox
Удачи
#60 by Альбатрос
Продолжаем разговор )))
#61 by Альбатрос
Внешнее событие срабатывает для формы владельца в любом случае. Может это связано как раз с тем, что я открываю форму обработки с владельцем?
#62 by nordbox
Ну вот смотри, у тебя владелец - это основная форма Чека, из нее ты открываешь другую форму, форму обормотки, если пофантазировать, после чтения ШК ты будешь ее закрывать то куда ты будешь товар добавлять? Посмотри внимательно все процедуры и функции менеджера
#63 by nordbox
И еще к тебе вопрос, ты читаешь из формы РМК или из формы Чека?
#64 by nordbox
+63 и какое РМК Управляемое или Обычное?
#65 by Альбатрос
РМК Управляемое Перехватываю событие непосредственно в форме РМК Я уже всяко разно попробовал. Пробовал после моей обработки возвращать данные через ОповеститьОВыборе - ОбработкаВыбора, пробовал убрать владельца в Открытьформу и указал там процедуру оповещения, пробовал вынести открытие своей обработки в общий клиентский модуль и там обрабатывать данные - все одно: Внешнее событие срабатывает дважды - сначала в моей обработки, после того, как она закончит - отрабатывает в форме РМК.
#66 by Альбатрос
Еще знаешь в чем прикол? Когда я отключаю форму РМК от сканера, внешнее событие все отрабатывает, но с ошибкой уже.
#67 by Альбатрос
*внешнее событие в форме РМК все равно отрабатывает
#68 by Альбатрос
Я видимо как-то неправильно понимаю сам смысл предопределенной процедуры "ВнешнееСобытие"
#69 by nordbox
Вот тут точно такая же проблема как и у тебя
#70 by nordbox
#71 by Альбатрос
Ага, только в РМК так и есть:
#72 by Альбатрос
+ и эта зараза проходит на ВводДоступен, ибо пор отладчику внешнее событие в ней срабатывает уже после закрытия моей обработки
#73 by Альбатрос
Кстати, тоже интересно, почему
#74 by nordbox
У тебя драйвер какой? как прицеплен сканер?
#75 by Альбатрос
USB эмулятор СОМ, драйвер 1с nativeApi, пробрасывается на сервер терминалов через РДП.
#76 by nordbox
Я бы на твоем месте попробовал сначала без сервера терминалов исключительно локально. Далее попробуй поиграться с драйверами Атол и 1С, Атол для сканера попробуй DTO6_2009_02_11 потом попробуй 8-й пробуй от 1с
#77 by Альбатрос
Да не, сомнительно, что дело в терминале или драйвере. Типовая РМК работает так: - Сканируешь штрихкод - если алкоголь, то открывается окно сканирования марки. И этот алгоритм работает нормально, то есть на штрихкоде срабатывает внешнеесобытие основной формы РМК, а на марке только внешнее событие формы ввода марки. То есть нет повторной передачи во внешнее событие основной формы, как в моем случае. Я полностью продублировал этот алгоритм для своей обработки и все равно хрен. Единственное отличие: в типовом режиме окно ввода марки является одной из форм самой РМК, а в моем случае я открываю форму другой обработки. Где-то я что-то упускаю, но не могу сообразить где.
#78 by nordbox
Вот почитай, ситуация немного другая, но вылечилась заменой драйвера
#79 by nordbox
+78 зря ты про драйвер не думаешь я вот точно знаю что у 1С есть косячный релиз драйверов, у Атола ранние 8.х как только они появились, я задолбался с ним, пришлось мозги тех поддержке вынести до такой степени что они сказали:- Мы обязательно это все отдадим разработчикам. )))
#80 by nordbox
Вот некоторые выдержки: >>Так, например, с драйвером от 1С версии 8.0.17.х сканера штрихкода METROLOGIC MS7120 "Orbit" работает нормально, а METROLOGIC 1250G "Voyager" вызывает при каждом считывании форму подбора. >>Следует отметить, что сообщения об ошибках стали информативнее, в нашем случае в системе уже имелся драйвер 8.0.15.1 для Розница 1.0 и мы получили настоятельную рекомендацию обновить его, минимум, до 8.0.17.1. НУ если в инете порыться то много чего интересного найдешь )))
#81 by nordbox
и вот по поводу РДП, атоловского драйвера и поиска граблей
#82 by Альбатрос
Спс, почитаю посижу, ибо варианты кончились.
#83 by Torquader
Если в обработчике события закрыть одну из форм, принимающих события, то выполнится код закрытия формы, а после него событие будет отправлено следующей в списке форме, которая также его может обработать. И этот "замечательный" механизм работы можно обмануть только проверкой флага, если его изначально завести.
#84 by nordbox
>>Если в обработчике события закрыть одну из форм.... >> после него событие будет отправлено следующей в списке форме, которая также его может обработать. Вот интересно как ты себе это представляешь?? он он отсканированную марку в какое место отправлять будет???
#85 by Torquader
Ты вывел форму, которая ждёт сканирование марки. Как только она его получает, она запоминает значение и включает флаг. В обработке отображения формы проверяется данный флаг, и если он установлен, форма закрывается. Тогда, есть вероятность, что она закроется после того, как событие посетит все формы и попадёт в глобальный модуль.
#86 by Альбатрос
Хм... Похоже на правду, щас попробую.
#87 by Альбатрос
ООооочень похоже, что в этом дело. Сделал отправку данных из своей обработки по кнопке, косяк пропал!!! А что за обработка отображения формы?
#88 by Альбатрос
ОГРОМЕЕЕЕЕННОЕ СПАСИБО!!! Я 2 дня бился, чего только не пробовал! В этом и дело, я закрывал форму до окончания процедуры внешнего события, подключил обработку ожидания и все! Все работает как надо! Тебе тоже спасибо большое!!!
#89 by nordbox
Удачи ! ))
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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