Имя: Пароль:
1C
1С v8
Подключение сканера в разрыв клавиатуры
0 кассир
 
21.08.25
14:47
Добрый день.
Есть сканер который работает в режиме клавиатуры. Необходимо его подключить к форме 1с 8.
Есть следующий код(нашел в интернете), но не получается получить штрих код
Процедура ПриОткрытии()
    ПодключитьОбработчикОжидания("ОбработатьНажатиеКлавиши", 0.1, Ложь); // Периодичность - 0.1 секунды
КонецПроцедуры

Процедура ПриЗакрытии()
    ОтключитьОбработчикОжидания("ОбработатьНажатиеКлавиши");
КонецПроцедуры

Процедура ОбработатьНажатиеКлавиши()
    // Как получить здесь нажатые клавиши( при сканировании будет штрих)?
КонецПроцедуры
1 Fragster
 
гуру
21.08.25
14:51
продолжайте наблюдение
2 Волшебник
 
21.08.25
14:51
(0) Не надо врать. Многократный обработчик ожидания с периодичностью менее 1 сек не подключится!

Если указано значение меньше 1, то значение третьего параметра должно быть равно Истина.
3 Fragster
 
гуру
21.08.25
14:55
(2) а кто сказал, что найденный в интернете код будет работать?
4 Fragster
 
гуру
21.08.25
14:57
нет бы инструкцию поискать, документацию к конфигурации или библиотеке подключаемого оборудования поизучать.

на крайняк - подумать, как сделать так, чтобы оно работало просто так. например через установку у сканера префикса типа F7 и кнопки в 1с, с этим сочетанием клавиш, которая открывает ввод строки (как в ТиС было сделано когда-то)
5 кассир
 
21.08.25
14:58
Да для 0.1 устанавливается только однократный вызов поэтому ложь. Переправил на 1 и поставил истина. Выполняется многократно. Подскажите тогда без драйверов можно ли подключить сканер в режиме клавиатуры к форме?
6 Fragster
 
гуру
21.08.25
15:00
(5) > Подскажите тогда без драйверов можно ли подключить сканер в режиме клавиатуры к форме?

да
7 кассир
 
21.08.25
15:01
Есть документация по работе со сканером 1CScanOPOSScan_v2.epf. Но интересно поянять можно ли это сделать по простому. Я 1с 7.7 я делал через formex.dll Там можно было настроить сканер в режиме STX ... ETX  и потом как нажатые клавиши это прочитать. В 1с 8 не нахожу эту возможность.
8 кассир
 
21.08.25
15:03
(6) Подстажите ссылку плиз где почитать как это сделать?
9 Злопчинский
 
21.08.25
15:08
(7) "Я 1с 7.7 я делал через formex.dll Там можно было настроить сканер в режиме STX ... ETX  и потом как нажатые клавиши это прочитать. "
- а поподробнее можно про упомянутое..?
10 Злопчинский
 
21.08.25
15:09
(8) только учесть, что скорее всего сканирование будет отрабатывать в зависимости от того, на каком элементе формы стоит фокус...
?
11 Fragster
 
гуру
21.08.25
15:16
(8)(10) см (4)
12 Fragster
 
гуру
21.08.25
15:17
(7) какой формекс, нафига? в клюшках использовался либо драйвер либо подход из (4)
13 Злопчинский
 
21.08.25
15:26
(11) это надо 8-ую конфигу править, а если без правок...?
14 Злопчинский
 
21.08.25
15:26
(12) или держать на форме только одно активное поле для ввода и фокус постоянно на нем...
15 кассир
 
21.08.25
17:12
(9) Ответ:

// Настраиваем сканер префикс STX суфикс ETX
// Подключаем formex.dll 
ЗагрузитьВнешнююКомпоненту("FormEx.dll")

// предопределенная процедура из formex.dll используется для считывания штрих-кодов USB-сканером
Процедура ПриНажатииКнопкиКлавиатуры(Конт,КодКлавиши,Alt,Shift,Ctrl,Символ,ФСО) 
		МояОбработкаКлавиши(Конт,КодКлавиши,Alt,Shift,Ctrl,Символ,ФСО);
КонецПроцедуры
//
Функция МояОбработкаКлавиши(Конт,КодКлавиши,Alt,Shift,Ctrl,Символ,ФСО) Экспорт 
	Если Символ =Симв(2) Тогда // это перфикс STX
			Сообщить("Начало ШК");
		КонецЕсли;		
		считываемШтрихКод = 1;
		глШтрихКод = "";
		Возврат 0;
	КонецЕсли;			

	Если Символ =Симв(3) Тогда //это суфикс ETX   
		Сообщить("Конец ШК"); 
		считываемШтрихКод = 0;
		ОбработатьШрихкод();//это Ваша процедура которая возьмет переменную глШрихКод и сделает что нужно)))
	КонецЕсли; 
	 
	Если считываемШтрихКод = 1 тогда 
		глШрихКод = глШтрихКод + Символ;//это глобальная   
	КонецЕсли;

КонецФункции
16 кассир
 
21.08.25
15:33
Нужно при создании документа приходная накладная при сканировании товара автоматом добавлять его в документ. Это только через OPOSscan в 1с 8 реализуемо?
17 Злопчинский
 
21.08.25
16:15
(15) ETX STX - это само оборудование отдает, или это символы считанного ШК (какого формата)..?
18 кассир
 
21.08.25
16:18
(17) это сам сканер добавляет( в штрих коде их нет). Это называется суфикс и префикс настраивается в самом сканере
19 кассир
 
21.08.25
16:21
https://help.mertech.ru/barcode_scanners/SUPERLEAD/suffix_ETX.html  ссылка на пример сканера mertech
20 Fragster
 
гуру
21.08.25
17:04
(13) если у тебя типовая - то там есть БПО. если нетиповая - то что мешает править?
21 Fragster
 
гуру
21.08.25
17:05
(16) нет
22 Fragster
 
гуру
21.08.25
17:06
Волшебник почему в (15) нет подсветки у ссылки на (9)?
23 Волшебник
 
21.08.25
17:13
(22) Не знаю. Надо дебажить

Upd. В коде была фраза: Симв(02), почему-то из-за неё ломалось
После замены на Симв(2) цифра стала синей
24 Builder
 
21.08.25
17:17
Я один не понимаю нахрена эти извраты, когда уже давно (и даже в клюшках) драйвера умеют генерить событие для клавиатурных сканеров?
25 MWWRuza
 
гуру
21.08.25
20:58
+(24) Именно так.

И вообще, что мешает использовать сканер в режиме эмуляции com-порта? Не умеет? Где вы такие сканеры берете. Все современные сканеры переключаются и в КБ и в ком... Зато сразу отпадает куча вопросов по сканированию ШК маркировки. А то, то язык не тот, то регистр, то управляющие символы не передаются, то сжирает часть кода. С COM-портовыми сканерами таких проблем нет.
Единственное оправдание использования КБ сканеров - если их нужно в нескольких программах, запущенных одновременно использовать. А так, работает везде, в том числе и по RDP.
26 H A D G E H O G s
 
21.08.25
22:29
(25) "если их нужно в нескольких программах, запущенных одновременно использовать."

Ставим VSPE, добавляем Splitter и расшариваем COMпорт на множество программ
Закон Брукера: Даже маленькая практика стоит большой теории.