При работе с современными версиями платформы «1С:Предприятие 8.3» разработчики и пользователи часто сталкиваются с тем, что встроенный браузер начинает подчеркивать все русские слова красным цветом. Это происходит даже в тех случаях, когда текст написан абсолютно грамотно. Ситуация осложняется тем, что в привычном интерфейсе 1С нет кнопки «Отключить проверку» или выбора языка словаря, как в обычном Google Chrome или Яндекс.Браузере.
В этой статье мы подробно разберем, почему возникает эта проблема, как работает современный движок отображения HTML в 1С и какими программными методами можно усмирить встроенную проверку орфографии.
Проанализируем техническую составляющую вопроса. Начиная с версии платформы 8.3.14, компания 1С отошла от использования системного Internet Explorer в качестве движка для «Поля HTML-документа». Теперь в платформу встроен собственный браузер на базе движка WebKit (Chromium). Это позволило корректно отображать современные сайты, использовать CSS3 и современные стандарты JavaScript, но привнесло свои особенности в работу со словарями.
Основная проблема заключается в том, что встроенный WebKit в 1С часто инициализируется с локалью по умолчанию en-US. Даже если у вас установлена русская Windows и русская платформа 1С, внутренние механизмы проверки орфографии браузерного компонента могут «думать», что основной язык ввода — английский. В результате любое русское слово распознается как ошибка. Поскольку интерфейса управления словарями в 1С нет, нам придется решать задачу программными методами.
Если вы используете «Поле HTML-документа» на форме, мы можем обратиться к объектной модели документа (DOM) напрямую из кода 1С. Рассмотрим, как принудительно отключить проверку для всего тела страницы.
Важно помнить: обращаться к документу нужно только после того, как страница полностью загружена. Проанализируем пример кода, который можно разместить в обработчике события ПриДокументСформирован:
&НаКлиенте
Процедура ПолеHTMLПриДокументСформирован(Элемент)
// Получаем объект документа
ДокументHTML = Элементы.ПолеHTML.Документ;
// Проверяем наличие тела документа
Если ДокументHTML.body <> Неопределено Тогда
// Отключаем проверку орфографии для всего документа
ДокументHTML.body.spellcheck = Ложь;
КонецЕсли;
КонецПроцедуры
Этот метод работает для простых форм, где текст вводится непосредственно в body или в статические элементы. Если же на странице используются сложные редакторы, это свойство может быть переопределено внутренними скриптами сайта.
Рассмотрим ситуацию, когда страница на сайте техподдержки или в другой внешней системе генерирует поля ввода динамически. В этом случае установка spellcheck = false для body может не сработать. Разберем, как принудительно «пройтись» по всем полям ввода с помощью JavaScript.
Для этого мы воспользуемся методом ВыполнитьJavaScript() (или ExecuteJavaScript() в зависимости от версии платформы). Посмотрим на пример реализации:
&НаКлиенте
Процедура ОтключитьПроверкуЧерезJS()
// Текст скрипта, который находит все текстовые поля и отключает проверку
ТекстСкрипта = "
|document.querySelectorAll('input, textarea, [contenteditable]').forEach(el => {
| el.spellcheck = false;
|});
|";
Элементы.ПолеHTML.ВыполнитьJavaScript(ТекстСкрипта);
КонецПроцедуры
Данный подход является наиболее универсальным, так как он затрагивает не только стандартные теги input и textarea, но и современные блоки с атрибутом contenteditable, которые часто используются в продвинутых веб-редакторах.
Если проблема возникает не во внешнем сайте, а во встроенном HTML-редакторе 1С (который часто используется для редактирования писем или описаний товаров), то ситуация аналогична. Технически этот редактор работает в режиме designMode = 'on'. Чтобы отключить в нем подчеркивание, выполним следующие шаги:
spellcheck в значение false.Пример кода для инициализации редактора без проверки орфографии:
&НаКлиенте
Процедура ИнициализироватьРедактор()
Документ = Элементы.ПолеРедактора.Документ;
Если Документ <> Неопределено Тогда
Документ.designMode = "on";
Документ.body.spellcheck = Ложь;
КонецЕсли;
КонецПроцедуры
Проанализируем ситуацию глубже. Встроенный браузер 1С во многом опирается на Windows Spell Checking API. Если программные методы внутри 1С по какой-то причине не помогают (например, версия платформы имеет специфический баг), можно попробовать изменить настройки самой операционной системы.
Разберем последовательность действий для Windows 10/11:
Важный нюанс: это действие отключит подчеркивание во всех приложениях, использующих системный API (включая стандартный блокнот или браузер Edge), поэтому используйте этот метод как крайнюю меру.
Иногда подчеркивание происходит потому, что в системе установлен русский язык интерфейса, но не загружены компоненты базового ввода. Проверьте в настройках языка Windows, установлен ли компонент «Basic typing» (Базовый ввод) для русского языка. Без этого компонента WebKit не сможет получить доступ к словарю через системные вызовы, и будет считать любое слово ошибочным.
Подведем итог: в большинстве случаев для решения проблемы достаточно программно установить spellcheck = false через объектную модель 1С или выполнить короткий скрипт JavaScript. Это позволит избавить пользователей от раздражающего красного подчеркивания и сделает работу с веб-контентом в среде 1С более комфортной.