Как отключить или настроить проверку орфографии во встроенном браузере 1С

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

При работе с современными версиями платформы «1С:Предприятие 8.3» разработчики и пользователи часто сталкиваются с тем, что встроенный браузер начинает подчеркивать все русские слова красным цветом. Это происходит даже в тех случаях, когда текст написан абсолютно грамотно. Ситуация осложняется тем, что в привычном интерфейсе 1С нет кнопки «Отключить проверку» или выбора языка словаря, как в обычном Google Chrome или Яндекс.Браузере.

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

Выясняем причину: переход на WebKit

Проанализируем техническую составляющую вопроса. Начиная с версии платформы 8.3.14, компания 1С отошла от использования системного Internet Explorer в качестве движка для «Поля HTML-документа». Теперь в платформу встроен собственный браузер на базе движка WebKit (Chromium). Это позволило корректно отображать современные сайты, использовать CSS3 и современные стандарты JavaScript, но привнесло свои особенности в работу со словарями.

Основная проблема заключается в том, что встроенный WebKit в 1С часто инициализируется с локалью по умолчанию en-US. Даже если у вас установлена русская Windows и русская платформа 1С, внутренние механизмы проверки орфографии браузерного компонента могут «думать», что основной язык ввода — английский. В результате любое русское слово распознается как ошибка. Поскольку интерфейса управления словарями в 1С нет, нам придется решать задачу программными методами.

Решение 1. Программное отключение через свойства документа 1С

Если вы используете «Поле HTML-документа» на форме, мы можем обратиться к объектной модели документа (DOM) напрямую из кода 1С. Рассмотрим, как принудительно отключить проверку для всего тела страницы.

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


&НаКлиенте
Процедура ПолеHTMLПриДокументСформирован(Элемент)
    // Получаем объект документа
    ДокументHTML = Элементы.ПолеHTML.Документ;
    
    // Проверяем наличие тела документа
    Если ДокументHTML.body <> Неопределено Тогда
        // Отключаем проверку орфографии для всего документа
        ДокументHTML.body.spellcheck = Ложь;
    КонецЕсли;
КонецПроцедуры

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

Решение 2. Использование JavaScript для динамических полей

Рассмотрим ситуацию, когда страница на сайте техподдержки или в другой внешней системе генерирует поля ввода динамически. В этом случае установка spellcheck = false для body может не сработать. Разберем, как принудительно «пройтись» по всем полям ввода с помощью JavaScript.

Для этого мы воспользуемся методом ВыполнитьJavaScript() (или ExecuteJavaScript() в зависимости от версии платформы). Посмотрим на пример реализации:


&НаКлиенте
Процедура ОтключитьПроверкуЧерезJS()
    // Текст скрипта, который находит все текстовые поля и отключает проверку
    ТекстСкрипта = "
    |document.querySelectorAll('input, textarea, [contenteditable]').forEach(el => {
    |    el.spellcheck = false;
    |});
    |";
    
    Элементы.ПолеHTML.ВыполнитьJavaScript(ТекстСкрипта);
КонецПроцедуры

Данный подход является наиболее универсальным, так как он затрагивает не только стандартные теги input и textarea, но и современные блоки с атрибутом contenteditable, которые часто используются в продвинутых веб-редакторах.

Решение 3. Настройка встроенного HTML-редактора 1С

Если проблема возникает не во внешнем сайте, а во встроенном HTML-редакторе 1С (который часто используется для редактирования писем или описаний товаров), то ситуация аналогична. Технически этот редактор работает в режиме designMode = 'on'. Чтобы отключить в нем подчеркивание, выполним следующие шаги:

  1. Убедимся, что поле переведено в режим редактирования.
  2. Установим свойство spellcheck в значение false.

Пример кода для инициализации редактора без проверки орфографии:


&НаКлиенте
Процедура ИнициализироватьРедактор()
    Документ = Элементы.ПолеРедактора.Документ;
    Если Документ <> Неопределено Тогда
        Документ.designMode = "on";
        Документ.body.spellcheck = Ложь;
    КонецЕсли;
КонецПроцедуры

Работа с системными настройками Windows

Проанализируем ситуацию глубже. Встроенный браузер 1С во многом опирается на Windows Spell Checking API. Если программные методы внутри 1С по какой-то причине не помогают (например, версия платформы имеет специфический баг), можно попробовать изменить настройки самой операционной системы.

Разберем последовательность действий для Windows 10/11:

  1. Перейдите в Параметры системы.
  2. Выберите раздел Устройства (или «Время и язык» в новых версиях) -> Ввод.
  3. Найдите переключатель «Выделять слова с ошибками» и переведите его в положение Откл.

Важный нюанс: это действие отключит подчеркивание во всех приложениях, использующих системный API (включая стандартный блокнот или браузер Edge), поэтому используйте этот метод как крайнюю меру.

Проблема с отсутствием русского словаря

Иногда подчеркивание происходит потому, что в системе установлен русский язык интерфейса, но не загружены компоненты базового ввода. Проверьте в настройках языка Windows, установлен ли компонент «Basic typing» (Базовый ввод) для русского языка. Без этого компонента WebKit не сможет получить доступ к словарю через системные вызовы, и будет считать любое слово ошибочным.

Подведем итог: в большинстве случаев для решения проблемы достаточно программно установить spellcheck = false через объектную модель 1С или выполнить короткий скрипт JavaScript. Это позволит избавить пользователей от раздражающего красного подчеркивания и сделает работу с веб-контентом в среде 1С более комфортной.

← На главную