Как зафиксировать русский язык и региональные форматы в веб-клиенте 1С

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

При работе с веб-клиентом 1С:Предприятие разработчики и системные администраторы часто сталкиваются с неприятной проблемой: интерфейс программы отображается на русском языке, однако форматы вывода чисел, дат и сумм прописью «плывут». Вместо привычного формата ДД.ММ.ГГГГ пользователи видят американский формат ММ/ДД/ГГГГ, а календарь и названия месяцев отображаются на английском языке.

Такая ситуация возникает из-за того, что веб-клиент 1С пытается автоматически подстроиться под языковые настройки браузера пользователя или операционной системы сервера. Давайте разберем эту проблему подробно, выясним причины ее возникновения и рассмотрим все возможные способы решения — от простых параметров в строке подключения до глубоких системных настроек веб-сервера и программного кода.

Решение 1. Использование параметров запуска веб-клиента в URL (L и VL)

Рассмотрим самый оперативный и действенный способ решения проблемы «на лету» — использование параметров командной строки веб-клиента непосредственно в URL-адресе. Когда мы публикуем информационную базу на веб-сервере, по умолчанию 1С пытается определить язык и региональные настройки автоматически. Но мы можем явно указать платформе, какие параметры использовать.

Для этого в адресной строке используются два ключевых параметра:

Посмотрим на пример правильного формирования URL для принудительного использования русского языка и российских стандартов форматирования:

http://имя_сервера/имя_публикации/?L=ru&VL=ru_RU

Разберем эту конструкцию:

  1. Параметр L=ru указывает платформе, что весь интерфейс должен быть переведен на русский язык.
  2. Параметр VL=ru_RU жестко задает региональные стандарты Российской Федерации. Благодаря этому даты примут привычный вид ДД.ММ.ГГГГ, а разделителем дробной части в числах станет запятая вместо точки.

Именно этот способ позволяет быстро решить проблему, когда у иностранного пользователя (например, англичанина с английской локалью ОС и браузера) интерфейс и форматы данных должны оставаться строго русскими.

Решение 2. Настройка региональных установок информационной базы в Конфигураторе

Проанализируем ситуацию, когда параметры URL помогают, но при обычном входе настройки все равно сбиваются. Это происходит из-за того, что в самой базе данных приоритет отдается настройкам сеанса пользователя. Чтобы исправить это глобально для базы, выполним следующие шаги:

  1. Откроем информационную базу в режиме Конфигуратор.
  2. В главном меню перейдем в раздел Администрирование -> Настройка региональных установок информационной базы....
  3. В открывшемся окне найдем важный флаг «Использовать региональные установки текущего сеанса» и снимем его.
  4. Установим основной язык и региональные стандарты в значение Русский (Россия).
  5. Нажмем кнопку ОК для сохранения настроек.

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

Решение 3. Настройка конфигурационного файла conf.cfg на стороне сервера

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

Выясним, где находится этот файл в зависимости от операционной системы вашего сервера:

Откроем этот файл с правами администратора и добавим (или отредактируем) следующую строку:

SystemLanguage=RU

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

Решение 4. Настройка региональных стандартов операционной системы сервера

Иногда форматы дат и чисел «плывут» из-за того, что сам веб-сервер (Apache или IIS) работает под системной учетной записью с английской локалью (например, en_US). Это особенно критично при выполнении фоновых и регламентных заданий на сервере, которые генерируют печатные формы.

Рассмотрим, как настроить серверную ОС по шагам.

Для серверов под управлением Linux (Ubuntu, Debian, РЕД ОС):

  1. Убедимся, что в системе сгенерирована русская локаль. Выполним в терминале команду:

    sudo locale-gen ru_RU.UTF-8

  2. Настроим локаль по умолчанию для службы веб-сервера. Например, для Apache в Ubuntu откроем файл окружения:

    sudo nano /etc/apache2/envvars

    И добавим в конец файла строку:

    export LANG=ru_RU.UTF-8

  3. Перезапустим веб-сервер командой sudo systemctl restart apache2.

Для серверов под управлением Windows Server (IIS):

  1. Зайдем в систему под учетной записью администратора.
  2. Перейдем в Панель управления -> Региональные стандарты.
  3. На вкладке Дополнительно найдем раздел «Экран приветствия и учетные записи новых пользователей» и нажмем кнопку Копировать параметры.
  4. Установим флажки «Экран приветствия и системные учетные записи» и «Новые учетные записи пользователей». Это скопирует русские региональные настройки для системной учетной записи SYSTEM, от имени которой часто работают пулы приложений IIS.
  5. Перезапустим службу IIS.

Решение 5. Автоматическое перенаправление (URL Rewrite) на веб-сервере

Чтобы избавить пользователей от необходимости вручную вводить суффиксы ?L=ru&VL=ru_RU в адресной строке браузера, мы можем настроить автоматическую подстановку этих параметров на стороне веб-сервера.

Проанализируем настройку правил перенаправления для популярных веб-серверов.

Настройка для веб-сервера Apache:
В корневом каталоге публикации (там, где лежит файл default.vrd) создадим или отредактируем файл .htaccess (или внесем изменения непосредственно в конфигурационный файл виртуального хоста Apache). Добавим следующее правило перенаправления:


RewriteEngine On
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)$ /$1?L=ru&VL=ru_RU [R=301,L]

Это правило проверяет: если строка запроса пустая (пользователь просто ввел адрес базы), то сервер автоматически перенаправит его на URL с нужными параметрами локализации.

Настройка для веб-сервера IIS:
В конфигурационном файле публикации web.config, расположенном в каталоге публикации базы, добавим аналогичное правило в секцию <system.webServer> (требуется установленный модуль URL Rewrite):


<rewrite>
    <rules>
        <rule name="Force Locale" stopProcessing="true">
            <match url="^(.*)$" />
            <conditions>
                <add input="{QUERY_STRING}" pattern="^$" />
            </conditions>
            <action type="Redirect" url="{R:1}?L=ru&VL=ru_RU" redirectType="Found" />
        </rule>
    </rules>
</rewrite>

Решение 6. Программная фиксация формата в кодовой базе 1С

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

Встроенные функции платформы Формат() и ЧислоПрописью() поддерживают явное указание локали через параметр Л (или его английский аналог L).

Посмотрим на пример форматирования даты, где мы принудительно задаем русскую локаль:


// Независимо от локали клиента, месяц всегда выведется на русском языке
СтрокаДаты = Формат(ТекущаяДата(), "Л=ru_RU; ДФ='dd MMMM yyyy ""г.""'");
// Результат: "25 Сентября 2023 г."

Аналогично поступим с выводом суммы прописью. Чтобы избежать ситуации, когда сумма пишется на английском языке (например, *Fifteen dollars* вместо *Пятнадцать рублей*), явно передадим код локализации во втором параметре функции:


// Принудительно выводим сумму прописью на русском языке
ПараметрыПрописи = "рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2";
СтрокаСуммы = ЧислоПрописью(ЗаказПокупателя.СуммаДокумента, "Л=ru_RU", ПараметрыПрописи);

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

← На главную