Классическая жалоба пользователей 1С, которые работают через RemoteApp: окно программы выглядит как локальное, индикатор языка на панели задач переключается с RU на EN, а в поле ввода продолжают печататься русские буквы. Или наоборот — сочетание клавиш срабатывает через раз, и приходится щёлкать мышью по индикатору. С обычным удалённым рабочим столом такого почти не бывает, а с RemoteApp — регулярно.
Коротко: в RemoteApp раскладку «согласовывают» клиентский компьютер и профиль пользователя на сервере. Проблема почти всегда в том, что набор языков или язык ввода по умолчанию у них разный. Выровняйте языки ввода по умолчанию на клиенте и в профиле на сервере, проверьте параметры переключения на клиенте, а при необходимости заставьте сервер игнорировать клиентскую раскладку параметром IgnoreRemoteKeyboardLayout.
Почему в RemoteApp раскладка ведёт себя иначе
В полноэкранной RDP-сессии у вас есть удалённый рабочий стол со своей панелью задач и своим индикатором языка — всё переключение происходит внутри сервера. В RemoteApp удалённого рабочего стола не видно: окно 1С встроено в ваш локальный рабочий стол, а индикатор на панели задач — локальный. При этом сама программа работает на сервере и получает раскладку из серверного профиля.
В архивной статье инженеров Microsoft описано, как формируется набор языков, доступных для RemoteApp-окна: это сумма двух вещей — языка и раскладки по умолчанию на клиенте и всех языков, которые заданы в профиле пользователя на сервере. Если на клиенте первым стоит английский, а на сервере в профиле только русский (или наоборот), получаются рассинхронизация и тот самый эффект «индикатор переключился, а ввод — нет». Ещё один источник различий — профили: у одного и того же пользователя на разных серверах фермы профиль может быть создан по-разному, поэтому проблема «то есть, то нет».
Шаг 1. Проверьте языки в профиле на сервере
Зайдите на сервер обычной RDP-сессией (не RemoteApp) под проблемным пользователем и откройте Параметры → Время и язык → Язык и регион. В списке предпочитаемых языков должны быть и русский, и английский, у каждого — по своей раскладке (русская и «США»). Лишние раскладки, которые пользователь не использует, лучше удалить.
Чтобы новые пользователи сразу получали правильный набор, настройте языки у своей учётной записи и скопируйте их в профиль по умолчанию: Панель управления → Региональные стандарты → вкладка «Дополнительно» → «Копировать параметры», отметьте «Экран приветствия и системные учётные записи» и «Новые учётные записи пользователей». В Windows 11 и новых версиях Windows Server то же самое делает командлет:
Copy-UserInternationalSettingsToSystem -WelcomeScreen $True -NewUser $True
Изменения вступают в силу после перезагрузки. Уже существующие профили эта настройка не трогает — их правят у каждого пользователя.
Шаг 2. Выровняйте язык ввода по умолчанию на клиенте
На компьютере пользователя (Windows 10/11) откройте Параметры → Время и язык → Ввод → Дополнительные параметры клавиатуры. Здесь три полезных настройки:
- Переопределение для метода ввода по умолчанию (Override for default input method) — выберите тот же язык, что первым стоит в профиле на сервере. Обычно я ставлю одинаково везде, например английский (США) или русский — главное, чтобы совпадало.
- Позволить выбирать метод ввода для каждого окна приложения (Let me use a different input method for each app window) — при включённой опции каждое окно помнит свой язык. Для RemoteApp это часто только запутывает: попробуйте снять галочку и проверить поведение.
- Использовать языковую панель на рабочем столе, если она доступна (Use the desktop language bar when it’s available) — по описанию Microsoft, начиная с Windows 8 / Windows Server 2012 эта опция позволяет показывать «удалённую» языковую панель, которая применяется, когда активно окно RemoteApp.
Переопределение языка по умолчанию можно задать и из PowerShell под пользователем:
Set-WinDefaultInputMethodOverride -InputTip "0409:00000409"
Здесь 0409:00000409 — английский (США) с раскладкой US, для русского языка и русской раскладки используется 0419:00000419. После изменения закройте все RemoteApp-окна и подключитесь заново: раскладка согласуется в момент подключения.
Шаг 3. Старый рецепт с реестром клиента
В Windows 7 эту проблему часто решали правкой реестра на клиенте: в разделе HKEY_USERS.DEFAULTKeyboard LayoutPreload меняли местами значения 1 и 2, чтобы первым стоял английский (00000409), а вторым — русский (00000419).

Раздел .DEFAULT — это настройки экрана входа и системных учётных записей, а не текущего пользователя. На Windows 10/11 я не правлю его руками: тот же результат даёт «Копировать параметры» в региональных стандартах (флажок «Экран приветствия и системные учётные записи») или командлет Copy-UserInternationalSettingsToSystem -WelcomeScreen $True -NewUser $False. Если же у вас ещё работают клиенты на Windows 7, старый рецепт по-прежнему применим, но саму систему пора обновлять — она давно без поддержки.
Шаг 4. Серверная настройка IgnoreRemoteKeyboardLayout
Если клиентов много и выровнять их все нельзя (разные ПК, ноутбуки сотрудников, домашние компьютеры), можно пойти с другой стороны: запретить серверу брать раскладку у клиента. По умолчанию язык ввода по умолчанию в сессии берётся с клиентского компьютера; параметр IgnoreRemoteKeyboardLayout со значением 1 заставляет сервер использовать раскладку из профиля пользователя на сервере. В описании RemoteApp-панели Microsoft отдельно отмечает, что при этом параметре клиентская раскладка по умолчанию в языковую панель не добавляется.
reg add "HKLMSYSTEMCurrentControlSetControlKeyboard Layout" /v IgnoreRemoteKeyboardLayout /t REG_DWORD /d 1 /f
Параметр описан в статье Microsoft KB924852 (изначально для Windows Server 2003 SP1), а в материале инженеров Microsoft о языковой панели RemoteApp он упоминается уже для серверов и клиентов RDP 8.1, то есть поколения Windows Server 2012 R2. После изменения перезагрузите сервер и проверьте на тестовом пользователе. Подробнее эта настройка разобрана в статье о проблемах с переключением раскладки на терминальном сервере.
Что проверить, если ничего не помогло
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Проблема только у части пользователей | Разные профили на сервере | Сравнить языки в профилях, при необходимости пересоздать профиль |
| То работает, то нет у одного пользователя | Ферма из нескольких серверов, профили отличаются | Выровнять профиль по умолчанию на всех серверах |
| Индикатор переключается, ввод нет | Разный язык по умолчанию на клиенте и сервере | Шаг 2 или IgnoreRemoteKeyboardLayout |
| Не работает сочетание Win+Пробел | Сочетания с клавишей Windows обрабатываются по настройке «Применять комбинации клавиш Windows» | Использовать Alt+Shift или Ctrl+Shift, проверить параметр keyboardhook в RDP-файле |
Бывает, что проще не бороться с десятком разных клиентских машин, а дать пользователям единообразную среду. Если 1С через RemoteApp вам нужна, но поддерживать сервер самостоятельно не хочется, можно воспользоваться арендой 1С в облаке — такие серверы мы сдаём в Service4biz.
Описание того, как формируется языковая панель для RemoteApp, есть в архиве блога Microsoft (на французском) и в официальном описании параметров RDP-файла: Supported RDP properties.
Частые вопросы
Почему в полноэкранной сессии всё работает, а в RemoteApp нет?
В полноэкранной сессии есть удалённая панель задач и переключение идёт внутри сервера. В RemoteApp индикатор языка локальный, а программа — удалённая, и их языковые настройки должны совпадать. Отсюда и рассинхронизация.
Надо ли править реестр на каждом клиенте?
Нет. На Windows 10/11 то же самое делается в «Дополнительных параметрах клавиатуры» или командлетом Set-WinDefaultInputMethodOverride, а в домене — скриптом входа. Если клиентов много, практичнее серверный параметр IgnoreRemoteKeyboardLayout.
Влияет ли на это версия 1С?
Как правило, нет: раскладку программе отдаёт Windows, и клиент 1С в RemoteApp обычно ведёт себя так же, как «Блокнот», опубликованный через RemoteApp. Удобный способ проверки — опубликовать notepad.exe и посмотреть, повторяется ли проблема.
Нужно ли перезагружать клиентский компьютер?
После изменения языка по умолчанию у пользователя обычно хватает закрыть все RemoteApp-окна и подключиться заново. После копирования параметров на экран приветствия или правки .DEFAULT нужна перезагрузка.