Мэханизм работает так:
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");