1С 8.2 переключение раскладки клавиатуры (с помощью dynwrap.dll)
Функция для автоматического переключения раскладки клавиатуры. (с помощью dynwrap.dll)
Дабы не переключать каждый раз (при вводе информации в разных полях) с "Rus" на "Eng", можно эту работу возложить на функцию.
- Описание
- Подробнее
Описание
Мэханизм работает так:
1) регистрируем dll-ку в операционке:
regsvr32.exe «C:\WINDOWS\system32\dynwrap.dll»
2) Создаем функцию на сервере:
Функция ПереключитьРаскладкуDW(Имя) Экспорт
Попытка
Wrapper = новый COMОбъект(«DynamicWrapper»);
Wrapper.Register(«USER32.DLL», «ActivateKeyboardLayout», «i=ll», «f=s», «r=l»);
Wrapper.Register(«USER32.DLL», «LoadKeyboardLayout», «i=sl», «f=s», «r=t»);
Исключение
Возврат Истина;
КонецПопытки;
SRus = «00000419»;
SEng = «00000409»;
NRus = 1049;
NEng = 1033;
Попытка
Если Нрег(Имя) = Нрег(«Rus») тогда
Wrapper.LoadKeyboardLayout(SRus, 1);
Wrapper.ActivateKeyboardLayout(NRus, 0);
Иначе
Wrapper.LoadKeyboardLayout(SEng, 1);
Wrapper.ActivateKeyboardLayout(NEng, 0);
КонецЕсли;
возврат Ложь;
Исключение
Возврат Истина;
КонецПопытки;
КонецФункции
3) Запускаем функцию (в моем случае при открытии формы справочника):
&НаКлиенте
Процедура ПриОткрытии(Отказ)
//переключим раскладку на английскую
Раскл = ФункцииНасервере.ПереключитьРаскладкуDW(«Eng»);
КонецПроцедуры
Для возврата обратно на русскую пишем:
Раскл = ФункцииНасервере.ПереключитьРаскладкуDW(«Rus»);

