Имя: Пароль:
1C
1С v8
Заблокировать внешнее событие
,
0 St17
 
05.07.13
11:34
Добрый День!
8.2 УТ Изминеная!
Задача такова.
Есть форма с ТЗ куда заполняется строчки с номенклатурой.
Нужно сканером по ШК товара определить номенклатуру и если НЕ определил вывести предупреждение и заблокировать возможность дальнейшего сканировать пока пользователь не нажмет "ОК" на предупреждении.
Использовал переменную в виде флага и ВводДоступен().
В результате программа не производит нечего пока весит предупреждение ,как только предупреждение убираем события произошедшие во время якобы блокировки (В виде предупреждения) происходят в той же последовательности.

Подскажите куда копать!
Как заблокировать внешнее событие?
1 Ork
 
05.07.13
11:35
(0)
1. Как подключен сканер?
2. Кто есть драйвер сканера?
2 St17
 
05.07.13
11:50
Процедура ПриОткрытии()    
   ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);
КонецПроцедуры
Процедура ВнешнееСобытие(Источник, Событие, Данные)
   Если Не ВводДоступен() Тогда
       Возврат;
   КонецЕсли;
   ПолучитьСерверТО().ОбработатьВнешнееСобытие(Источник, Событие, Данные, ЭтаФорма);

КонецПроцедуры
Функция СШКНоменклатура(Номенклатура, Характеристика, Серия, Качество,
   Единица, Количество, СШК) Экспорт
....
КонецФункции
3 St17
 
05.07.13
11:51
Атол Сканер ШтрихКода
4 Ork
 
05.07.13
11:57
(3) Для Атолла когда-то задавал вопрос тов. MikeFromAtol. Был здесь такой пользователь.
Его ответ был таким : если событие легло в очередь - только обработать. Если не хотите что бы оно вообще ложилось - нужно отключать устройство. По памяти - свойство DeviceEnabled.
5 Ork
 
05.07.13
11:59
+ (4) После обработки не забудьте его включить.

Для клавиатурных сканеров получим гемор такого плана : при отключенном устройстве внешняя компонента просто не генерит внешнее событие. Ввод со сканера считается вводом с клавиатуры. И на все ваши Предупреждение(), Вопрос() и прочее будет "нажимать" кнопку "по умолчанию".
6 St17
 
05.07.13
13:38
(4)
Спасибо. Сделал отключение.

   ПолучитьСерверТО().ОтключитьКлиента(ЭтаФорма);

Процедура ВнешнееСобытие(Источник, Событие, Данные)
   Если Не ВводДоступен() Тогда
       Возврат;
   КонецЕсли;
   ПолучитьСерверТО().ОбработатьВнешнееСобытие(Источник, Событие, Данные, ЭтаФорма);
   ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);


(5) Создал форму с сообщение и двумя кнопками "ОК" и  "Повторить сообщение"! По умолчанию поставил кнопку "Повторить сообщение"
7 St17
 
05.07.13
13:39
"Повторить сообщение" заменил на картинку с восклицательным знаком. Смотрится отлично!