В современных интерфейсах пользователи привыкли к комфортной работе с текстом: автоматическому исправлению ошибок, подчеркиванию опечаток и всплывающим подсказкам (автодополнению). В стандартных полях ввода 1С (Управляемые формы) такой функционал «из коробки» ограничен. Однако, используя возможности платформы по работе с HTML-документами и интеграцию с внешними сервисами, мы можем реализовать полноценную проверку орфографии «на лету».
Самый простой и эффективный способ добавить проверку орфографии — это использование поля 1С типа ПолеHTMLДокумента. Внутри этого поля мы можем разместить стандартный HTML-тег textarea или редактируемый блок div. Современные браузерные движки, встроенные в 1С, поддерживают атрибут spellcheck, который включает системную проверку правописания.
Рассмотрим базовый пример наполнения поля HTML-документа. Нам необходимо сформировать строку HTML и передать ее в поле на форме:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ТекстHTML =
"<html>
|<body style='margin:0; padding:0;'>
|<textarea id='myText' spellcheck='true' style='width:100%; height:100vh; border:none; outline:none; font-family:Arial;'>
|Введите здесь текст с ошипкой...
|</textarea>
|</body>
|</html>";
ПолеHTML = ТекстHTML;
КонецПроцедуры
В данном примере атрибут spellcheck='true' заставляет движок подчеркивать слова, которых нет в словаре. При нажатии правой кнопкой мыши пользователь увидит контекстное меню с вариантами исправления. Разберем по шагам, почему это может не работать в старых конфигурациях: до версии платформы 8.3.14 1С использовала движок Internet Explorer. В Windows 7 и ниже IE часто игнорировал этот атрибут. Для решения проблемы в старых версиях требовалось вносить изменения в реестр Windows, чтобы заставить 1С использовать последнюю версию рендеринга IE.
Проанализируем развитие платформы: начиная с версии 8.3.14, разработчики 1С добавили возможность использовать движок WebKit, а в более поздних релизах — полноценный Chromium (WebView2). Это критически важно, так как современные движки имеют встроенные словари и работают стабильнее. Чтобы проверка орфографии работала корректно, убедитесь, что в свойствах конфигурации или конкретного поля не форсируется режим совместимости с устаревшими версиями браузеров.
Посмотрим на преимущества использования современного движка:
Если стандартного тега textarea недостаточно, мы можем интегрировать внутрь 1С профессиональные JS-редакторы, такие как TinyMCE или CKEditor. Эти инструменты позволяют не только проверять орфографию, но и форматировать текст, добавлять списки и таблицы.
Выясним, как организовать обмен данными между 1С и таким редактором. Для этого используется событие поля HTML ПриНажатии или специализированные методы вызова функций JavaScript из кода 1С:
&НаКлиенте
Процедура ПолучитьТекстИзРедактора()
// Вызываем JS-функцию, которая вернет содержимое редактора
ТекстИзHTML = Элементы.ПолеHTML.Документ.defaultView.getContent();
Сообщить(ТекстИзHTML);
КонецПроцедуры
Использование таких библиотек позволяет реализовать «подсказки при наборе» (autocomplete) гораздо эффективнее. Редактор отслеживает нажатия клавиш и, сверяясь со своим словарем, предлагает варианты завершения слова в небольшом всплывающем окне прямо под курсором.
Ситуация, когда нужно проверять текст без использования HTML-полей (в обычных строковых реквизитах 1С), требует обращения к внешним сервисам. Одним из самых популярных является Yandex Speller. Рассмотрим, как реализовать проверку асинхронно, чтобы не блокировать работу пользователя.
Проанализируем алгоритм работы:
debounce) текст отправляется в API Яндекса.Пример кода для отправки запроса к API:
&НаСервереБезКонтекста
Функция ПроверитьТекстЧерезЯндекс(Знач ТекстДляПроверки)
Соединение = Новый HTTPСоединение("speller.yandex.net", 443, , , , , Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос("/services/spellservice.json/checkText?text=" + ТекстДляПроверки);
Ответ = Соединение.Получить(Запрос);
Если Ответ.КодСостояния = 200 Тогда
Возврат Ответ.ПолучитьТелоКакСтроку(); // Получаем JSON с ошибками
КонецЕсли;
Возврат "";
КонецФункции
Чтобы реализовать подсказки «как на смартфоне», полученный JSON можно выводить в виде выпадающего списка под полем ввода или использовать встроенные механизмы 1С для подбора (автоподбор).
Разберем еще несколько мощных инструментов. LanguageTool — это сервис, который проверяет не только орфографию, но и грамматику с пунктуацией. Его API очень богато функциями и может быть интегрировано аналогично решению от Яндекса. Он отлично подходит для подготовки официальных документов в 1С:Документооборот.
Для тех, кто предпочитает офлайн-решения, существуют внешние компоненты, использующие движок Hunspell. Это тот же механизм, который применяется в LibreOffice и Google Chrome. Подключив такую компоненту (через ПодключитьВнешнююКомпоненту), вы сможете проверять текст даже без доступа к интернету, используя локальные файлы словарей (.dic и .aff).
Важно отметить, что если ваша задача — сделать проверку «как на смартфоне» именно для мобильного приложения 1С, то дополнительные усилия практически не требуются. В мобильной платформе 1С при активации поля ввода управление передается системной клавиатуре устройства (iOS или Android). В этом случае все функции автозамены, предиктивного ввода и исправления ошибок работают на уровне операционной системы. Разработчику достаточно использовать обычное поле ввода 1С, и пользователь получит привычный интерфейс со всеми подсказками, настроенными в его телефоне.
Резюмируя: для реализации качественной проверки орфографии в настольной версии 1С лучше всего использовать ПолеHTMLДокумента с современным движком Chromium, так как это дает доступ к мощным инструментам веба (атрибут spellcheck, JS-библиотеки) при минимальных затратах на разработку.