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

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

В современных интерфейсах пользователи привыкли к комфортной работе с текстом: автоматическому исправлению ошибок, подчеркиванию опечаток и всплывающим подсказкам (автодополнению). В стандартных полях ввода 1С (Управляемые формы) такой функционал «из коробки» ограничен. Однако, используя возможности платформы по работе с HTML-документами и интеграцию с внешними сервисами, мы можем реализовать полноценную проверку орфографии «на лету».

Использование поля HTML-документа и атрибута spellcheck

Самый простой и эффективный способ добавить проверку орфографии — это использование поля 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.

Переход на современный движок (WebKit и Chromium)

Проанализируем развитие платформы: начиная с версии 8.3.14, разработчики 1С добавили возможность использовать движок WebKit, а в более поздних релизах — полноценный Chromium (WebView2). Это критически важно, так как современные движки имеют встроенные словари и работают стабильнее. Чтобы проверка орфографии работала корректно, убедитесь, что в свойствах конфигурации или конкретного поля не форсируется режим совместимости с устаревшими версиями браузеров.

Посмотрим на преимущества использования современного движка:

  1. Стабильность: Подчеркивание ошибок работает автоматически на уровне ОС или браузерного компонента.
  2. Производительность: Быстрая обработка больших объемов текста без зависания интерфейса 1С.
  3. Подсказки: Возможность программно вызывать всплывающие окна с вариантами слов через JavaScript.

Интеграция с продвинутыми редакторами (TinyMCE, Quill)

Если стандартного тега textarea недостаточно, мы можем интегрировать внутрь 1С профессиональные JS-редакторы, такие как TinyMCE или CKEditor. Эти инструменты позволяют не только проверять орфографию, но и форматировать текст, добавлять списки и таблицы.

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


&НаКлиенте
Процедура ПолучитьТекстИзРедактора()
    // Вызываем JS-функцию, которая вернет содержимое редактора
    ТекстИзHTML = Элементы.ПолеHTML.Документ.defaultView.getContent();
    Сообщить(ТекстИзHTML);
КонецПроцедуры

Использование таких библиотек позволяет реализовать «подсказки при наборе» (autocomplete) гораздо эффективнее. Редактор отслеживает нажатия клавиш и, сверяясь со своим словарем, предлагает варианты завершения слова в небольшом всплывающем окне прямо под курсором.

Проверка орфографии «на лету» через API Yandex Speller

Ситуация, когда нужно проверять текст без использования HTML-полей (в обычных строковых реквизитах 1С), требует обращения к внешним сервисам. Одним из самых популярных является Yandex Speller. Рассмотрим, как реализовать проверку асинхронно, чтобы не блокировать работу пользователя.

Проанализируем алгоритм работы:

  1. Пользователь вводит текст в поле 1С.
  2. При изменении текста (с небольшой задержкой, чтобы не спамить запросами — так называемый debounce) текст отправляется в API Яндекса.
  3. Сервис возвращает JSON с найденными ошибками и вариантами замен.
  4. Программа визуализирует эти подсказки пользователю.

Пример кода для отправки запроса к API:


&НаСервереБезКонтекста
Функция ПроверитьТекстЧерезЯндекс(Знач ТекстДляПроверки)
    Соединение = Новый HTTPСоединение("speller.yandex.net", 443, , , , , Новый ЗащищенноеСоединениеOpenSSL());
    Запрос = Новый HTTPЗапрос("/services/spellservice.json/checkText?text=" + ТекстДляПроверки);
    Ответ = Соединение.Получить(Запрос);
    
    Если Ответ.КодСостояния = 200 Тогда
        Возврат Ответ.ПолучитьТелоКакСтроку(); // Получаем JSON с ошибками
    КонецЕсли;
    Возврат "";
КонецФункции

Чтобы реализовать подсказки «как на смартфоне», полученный JSON можно выводить в виде выпадающего списка под полем ввода или использовать встроенные механизмы 1С для подбора (автоподбор).

Альтернатива: Использование LanguageTool и Hunspell

Разберем еще несколько мощных инструментов. LanguageTool — это сервис, который проверяет не только орфографию, но и грамматику с пунктуацией. Его API очень богато функциями и может быть интегрировано аналогично решению от Яндекса. Он отлично подходит для подготовки официальных документов в 1С:Документооборот.

Для тех, кто предпочитает офлайн-решения, существуют внешние компоненты, использующие движок Hunspell. Это тот же механизм, который применяется в LibreOffice и Google Chrome. Подключив такую компоненту (через ПодключитьВнешнююКомпоненту), вы сможете проверять текст даже без доступа к интернету, используя локальные файлы словарей (.dic и .aff).

Особенности мобильной платформы 1С

Важно отметить, что если ваша задача — сделать проверку «как на смартфоне» именно для мобильного приложения 1С, то дополнительные усилия практически не требуются. В мобильной платформе 1С при активации поля ввода управление передается системной клавиатуре устройства (iOS или Android). В этом случае все функции автозамены, предиктивного ввода и исправления ошибок работают на уровне операционной системы. Разработчику достаточно использовать обычное поле ввода 1С, и пользователь получит привычный интерфейс со всеми подсказками, настроенными в его телефоне.

Резюмируя: для реализации качественной проверки орфографии в настольной версии 1С лучше всего использовать ПолеHTMLДокумента с современным движком Chromium, так как это дает доступ к мощным инструментам веба (атрибут spellcheck, JS-библиотеки) при минимальных затратах на разработку.

← На главную