Каталог решений - Пример проверки раскладки клавиатуры (Wscript, управляемые формы, внешняя обработка)

Пример проверки раскладки клавиатуры (Wscript, управляемые формы, внешняя обработка)

Пример проверки раскладки клавиатуры (Wscript, управляемые формы, внешняя обработка)

В наличии

Пример проверки раскладки клавиатуры для управляемых форм с помощью объекта Wscript.
Может использоваться для проверки сканера, подключенного в клавиатурном режиме, когда нет возможности подключения сканера в режиме COM-порта.

Категория:

Описание

Проблема достаточна известная, материалов достаточно, в том числе и решений с помощью внешних компонент, библиотек.

Хочу поделится еще одним способом, который пришлось реализовать из-за невозможности подключения сканера в режиме COM-порта.

Решение в общем-то очевидное и простое, однако натолкнулся на некоторые трудности в его реализации.

Итак, пускай есть следующая форма для ввода штрих-кода:

 

 

  1. создадим реквизит с типом строка и связанное с ним поле текстового документа (! но не поле ввода) на форме — это поле будет исключительно для проверки раскладки (поле имеет цвет фона формы и поэтому будет казаться невидимым).
  2. перед вводом штрих-кода нужно будет "послать" в созданное поле с помощью Wscript какую-нибудь клавишу
  3. проверяем клавишу
  4. продолжаем действие (например, показать окно ввода штрих-кода) или показываем предупреждение о необходимости переключить раскладку

Вроде все просто, однако натолкнулся на проблему, связанную с тем, что при попытке получить текст из этого поля сразу после отправки клавишу будет получена пустая строка "". Понятно, "не успевает" 1с).

Подключаем обработчик ожидания с минимальным интервалом. В этом обработчике уже получаем текст и делаем проверку, не забыв сразу его отключить.

Теперь уже сам код:

1. Процедура нажатия на кнопку с подключением  обработчика ожидания

&НаКлиенте
Процедура ВвестиШтрихКод(Команда)
	
	ВведенныйШтрихКод = "";
	
	ПроверкаРаскладки = "";
	ТекущийЭлемент = Элементы.ПроверкаРаскладки;
	WshShell = Новый COMОбъект("Wscript.Shell");
	WshShell.SendKeys("+2"); 
	WshShell.SendKeys("^a");
	WshShell = Неопределено;
	
	ПодключитьОбработчикОжидания("ВвестиШтрихКодПроверитьРаскладкуЗавершение", 1);
	
КонецПроцедуры

2. Сам обработчик ожидания

&НаКлиенте
Процедура ВвестиШтрихКодПроверитьРаскладкуЗавершение()

	ВведенныйСимвол = Элементы.ПроверкаРаскладки.ВыделенныйТекст;
	ОтключитьОбработчикОжидания("ВвестиШтрихКодПроверитьРаскладкуЗавершение");
	Если ВведенныйСимвол <> "@" Тогда
		ПоказатьПредупреждение(, "Необходимо переключиться на английский язык!");
	Иначе
		ОпОп = Новый ОписаниеОповещения("ВводШтрихКодаЗавершение", ЭтотОбъект);
		ПоказатьВводСтроки(ОпОп, , "Введите штрих-код:");
	КонецЕсли;
	
КонецПроцедуры

3. Действие после проверки раскладки

&НаКлиенте
Процедура ВводШтрихКодаЗавершение(Текст, ДопПар) Экспорт

	Если Текст = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ВведенныйШтрихКод = Текст;
	
КонецПроцедуры

В заключение, прикладываю саму обработку с примером для управляемых форм.

 

Дополнительная информация

Разработка велась на платформе 8.3.20.1674.

Поддерживается толстый и тонкий клиент.

Операционная система Winowds 10.

has been added to your cart:
Оформление заказа