Почему управляемая форма открывается на английском языке и как это исправить?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Анализ настроек пользователя и свойств конфигурации

Первым делом проверим базовые параметры самой информационной базы, которые определяют язык интерфейса сеанса:

  1. Свойство конфигурации «Основной язык». Откроем дерево метаданных, перейдем в свойства корневого элемента конфигурации и убедимся, что в свойстве ОсновнойЯзык указан русский язык.
  2. Настройки пользователя в Конфигураторе. Перейдем в меню «Администрирование» — «Пользователи». Откроем карточку текущего пользователя и проверим поле «Основной язык». Если там выбран английский или значение не задано, платформа может применять резервные правила сопоставления. Установим русский язык явно.
  3. Параметры запуска информационной базы. В окне запуска «1С:Предприятия» откроем параметры нужной базы и проверим строку дополнительных параметров запуска. Для явного указания языка интерфейса и кода локализации используются ключи /L ru и /VL ru_RU.

Проверка метаданных языков и синонимов элементов

Если базовые настройки заданы верно, но управляемые формы продолжают открываться на английском языке, необходимо исследовать метаданные конфигурации:

  1. Код языка в ветке «Общие» — «Языки». Развернем ветку общих объектов и откроем свойства языка «Русский». Обратим внимание на реквизит КодЯзыка. Стандартное значение для платформы — двухбуквенный код ru. Если там указано нестандартное значение (например, rus), платформа при обработке ключа /L ru не сможет сопоставить системный язык с языком метаданных и переключится на альтернативный вариант.
  2. Порядок следования языков в дереве метаданных. Если системе не удается однозначно определить язык интерфейса при инициализации хоста управляемой формы, она берет первый по списку язык из ветки «Языки». Если английский язык расположен выше русского, переместим русский язык на самую первую позицию с помощью стрелок перемещения в командной панели дерева метаданных.
  3. Язык редактирования конфигурации. В процессе разработки текст заголовков элементов мог быть внесен не в тот языковой слой. Проверим меню «Конфигурация» — «Язык редактирования конфигурации». Если при создании формы активным языком был выбран английский, то русские надписи могли записаться в свойства для английской локали, в то время как русские синонимы остались пустыми. Откроем свойства элементов управляемой формы и проверим мультиязычные строки в свойствах Заголовок и Подсказка.

Конфигурационный файл платформы conf.cfg

Платформа «1С:Предприятие» считывает глобальные настройки из файла conf.cfg, который может переопределять поведение локализации независимо от параметров запуска конкретной базы.

Рассмотрим, где находится этот файл и что в нем нужно проверить:

  1. Перейдем в системный каталог настроек платформы. Обычно это %ProgramFiles%\1cv8\conf (или bin\conf в папке конкретной версии платформы).
  2. Откроем файл conf.cfg в текстовом редакторе.
  3. Найдем параметр SystemLanguage. Если операционная система имеет англоязычный интерфейс, а параметр установлен в значение SystemLanguage=System или SystemLanguage=EN, платформа принудительно переключает системные элементы форм на английский.
  4. Установим явное значение параметра:

SystemLanguage=RU

Сохраним изменения в файле и перезапустим сеанс «1С:Предприятия».

Особенности запуска управляемых форм в обычном приложении

Когда приложение запускается в режиме обычного приложения (RunModeOrdinaryApplication), управляемые формы функционируют через специальный встроенный хост. При этом контекст запуска имеет важные архитектурные особенности:

  1. События модуля МодульУправляемогоПриложения в таком режиме не вызываются.
  2. Если логика инициализации языка или параметров сеанса была прописана разработчиками в процедуре ПриНачалеРаботыСистемы модуля управляемого приложения или модуля обычного приложения, встроенный хост управляемых форм может не получить эти данные вовремя.
  3. Вся инициализация языковых настроек и параметров, влияющих на работу форм обоих типов, должна быть вынесена в МодульСеанса в обработчик события УстановкаПараметровСеанса:

Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
    // Инициализация общих параметров сеанса, 
    // доступных как в обычном, так и в управляемом контексте
КонецПроцедуры

Для проверки этой гипотезы запустим приложение принудительно в режиме чистого управляемого приложения, добавив в строку запуска параметр /RunModeManagedApplication. Если в этом режиме формы открываются корректно на русском языке, причину следует искать в разделении контекстов обычного и управляемого приложения.

Проверка установленных языковых пакетов платформы и локали ОС

Системные кнопки («Save and Close», «More actions» и стандартные команды) отображаются на английском языке, если в самой операционной системе отсутствует требуемый языковой пакет платформы «1С:Предприятие»:

  1. Языковые пакеты платформы. При установке «1С:Предприятия» на операционную систему с английским региональным форматом пакет «Интерфейсы на различных языках — Русский» может быть не установлен автоматически. Запустим инсталлятор платформы через «Установка и удаление программ», выберем режим изменения состава компонентов и убедимся, что для русского интерфейса включена выборочная установка.
  2. Системная локаль операционной системы. Проверим региональные стандарты Windows (включая параметр «Язык программ, не поддерживающих Юникод»). Если там установлен английский язык, внутренние компоненты платформы могут считывать язык хоста ОС.
  3. Очистка временных файлов. Платформа кэширует скомпилированные описания форм. Завершим работу всех процессов 1cv8.exe и очистим каталоги пользовательского кэша в папках %LocalAppData%\1C\1cv8 и %AppData%\1C\1cv8.

Последовательная проверка метаданных конфигурации, настроек файла conf.cfg и установленных языковых пакетов позволяет гарантированно локализовать сбой и вернуть русскоязычный интерфейс управляемых форм.

← На главную