Рассмотрим частую и довольно неприятную ситуацию, когда при запуске информационной базы 1С пользователи сталкиваются с аварийным завершением работы и сообщением: «Ошибочное имя локализации» (например, rm-CH, ru-KZ, ru1). Эта проблема может возникнуть внезапно, даже если накануне программа закрылась корректно и никакие обновления конфигурации не устанавливались.
Проанализируем ситуацию по шагам и разберем несколько проверенных способов решения этой проблемы, начиная от настроек операционной системы и заканчивая параметрами запуска платформы и корректировкой программного кода в конфигураторе.
Посмотрим на самую распространенную причину: сбой возникает из-за некорректных языковых и региональных установок на компьютере пользователя. Платформа 1С очень чувствительна к настройкам среды, в которой она запускается. Если в системе установлен язык или формат, отличный от того, который поддерживает или ожидает платформа (например, Русский (Молдова) или указана страна Казахстан), 1С выдаст ошибку.
Выполним следующие шаги для настройки Windows:
Если настройки ОС верны, но база все равно выдает ошибку, проанализируем параметры самой информационной базы. Иногда платформа пытается применить региональные настройки сеанса, которые несовместимы с базой.
Использовать региональные настройки текущего сеанса. Это заставит платформу игнорировать странные параметры, которые может передавать ОС.Рассмотрим вариант жесткой фиксации локализации на уровне запуска платформы. Это особенно полезно, если вы не можете изменить настройки системы (например, на сервере).
Для начала, при установке платформы всегда старайтесь указывать русский язык в качестве используемого по умолчанию. Если платформа уже установлена, применим дополнительные ключи запуска:
/Lru. Это укажет платформе использовать русский язык интерфейса./VLru или /VL ru_RU. Этот параметр жестко задает код локализации всего сеанса в обход системных настроек Windows.Также мы можем внести изменения глобально в конфигурационный файл платформы. Найдите файл conf.cfg в каталоге установки платформы 1С и добавьте в него строку: SystemLanguage=RU.
Выясним причину ошибки, если локально (через тонкий или толстый клиент) 1С запускается без проблем, а при открытии через браузер возникает сбой. Веб-серверы (Apache или IIS) или сами веб-браузеры могут передавать платформе непредвиденные региональные маски, например ru_KZ, en-gb или служебные конструкции вроде ru/DEBUG. Платформа не может сопоставить их с доступными локализациями.
В этом случае необходимо проверить настройки пула приложений веб-сервера (в IIS) или конфигурационные файлы Apache, убедившись, что региональные стандарты для службы веб-сервера установлены в ru-RU. Также в файле публикации базы default.vrd можно жестко прописать нужный язык.
Посмотрим на программную сторону вопроса. Ошибка может быть рукотворной и скрываться в дереве метаданных. Если кто-то из разработчиков случайно изменил код языка в ветке Общие -> Языки на некорректный (например, en_ вместо en или tt_RU), платформа перестанет распознавать локализацию.
Разберем интересный пример из практики с конфигурацией «1С:Больница 2.0». Ошибка имела вид: Ошибочное имя локализации 'ru1'. Выяснилось, что в конфигураторе было добавлено два языка: с кодом ru и ru1 (второй предназначался для санатория).
При вызове метода ПредставлениеКодаЛокализации() платформа обрезала полное наименование и оставляла только первое слово («Русский»). В результате элементы справочника языков печатных форм становились неуникальными, что приводило к фатальным ошибкам.
Исправим эту программную недоработку с помощью расширения, переопределив функцию получения представления языка:
&Вместо("ПредставлениеЯзыка")
Функция Язык_ПредставлениеЯзыка(КодЯзыка) Экспорт
Если КодЯзыка = "ru1" Тогда
Возврат "Русский санаторно курортный";
Иначе
Представление = ПредставлениеКодаЛокализации(КодЯзыка);
ЧастиСтроки = СтрРазделить(Представление, " ", Истина);
ЧастиСтроки[0] = ТРег(ЧастиСтроки[0]);
Представление = СтрСоединить(ЧастиСтроки, " ");
Возврат Представление;
КонецЕсли;
КонецФункции
Также обратите внимание на ошибки, связанные с форматными строками. Иногда при обновлении старых баз или использовании специфических масок форматирования, содержащих строку вида Л= (указание локализации для числа или даты), платформа не может корректно разобрать такую маску. В таком случае необходимо найти проблемную форматную строку в коде или свойствах элементов формы и скорректировать её, убрав или исправив код языка.
Применяя эти методы последовательно — от проверки региональных настроек ОС до анализа параметров запуска и кода конфигурации, — вы сможете надежно локализовать и устранить ошибку «Ошибочное имя локализации» в любой информационной базе 1С.