Вводные данные: платформа «1С:Предприятие 8.3» (8.3.24.1586). Конфигурация «Документооборот КОРП» редакция 3.0 (3.0.15.41), далее — ДО. Установленный Microsoft Office или OpenOffice.
Задача: создание функционала проверки орфографии в полях ввода с видом «Поле форматированного документа».
Решение: в ДО уже есть функционал для полей ввода типа строка (например, элемент «Заголовок» и «Содержание» в «ФормаЭлемента» справочник «ДокументыПредприятия»). Учитывая это, реализовать решение очень просто. Достаточно сделать так же, как в форме «ФормаЭлемента» справочника «ДокументыПредприятия».
&НаКлиенте
Процедура ПроверитьОрфографию(Команда)
#Если ВебКлиент Или МобильныйКлиент Тогда
Возврат;
#КонецЕсли
// Проверяем одновременно оба поля
ИДРазделитель = СокрЛП(Новый УникальныйИдентификатор());
ТекстСодержания = Объект.Заголовок + Символы.Таб + ИДРазделитель + Символы.Таб + Объект.Содержание;
ОписаниеОповещения = Новый ОписаниеОповещения("ЗавершениеПроверитьОрфографию",
ЭтотОбъект,
Новый Структура("ИДРазделитель", ИДРазделитель));
ОрфографияКлиент.ПроверитьОрфографиюТекст(ОписаниеОповещения, ТекстСодержания);
КонецПроцедуры
&НаКлиенте
Процедура ЗавершениеПроверитьОрфографию(Результат, Параметры) Экспорт
Если Результат.ТекстИзменен Тогда
Разделитель = Символы.Таб + Параметры.ИДРазделитель + Символы.Таб;
ТекстСодержания = Результат.ПроверяемыйТекст;
Объект.Заголовок = Лев(ТекстСодержания, СтрНайти(ТекстСодержания, Разделитель) - 1);
Объект.Содержание = Прав(ТекстСодержания,
СтрДлина(ТекстСодержания) - СтрНайти(ТекстСодержания, Разделитель) - СтрДлина(Разделитель) + 1);
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
«ФормаЭлемента» справочника «ДокументыПредприятия»
С полем вида «Форматированный документ» немного сложнее.
По моему мнению, самый простой вариант в этом случае — задействовать типовое решение ДО.
В форме «ФормаЭлемента» справочника «ШаблоныПисем» есть проверка орфографии поля «HTML документа». Проблему можно обойти, выгрузив содержание «Форматированного документа» в HTML-текст через метод «ПолучитьHTML». Подробнее он описан в Синтакс-помощнике.
Весь код проверки орфографии в форме справочника «ШаблоныПисем» нужно скопировать в общий модуль и объявить экспортные процедуры. В таком случае можно будет использовать проверку в любой форме по своему усмотрению.
В формах, в которых будет проводиться проверка, также необходимо модифицировать функционал:
- добавить кнопку и команду вызова проверки;
- добавить экспортную процедуру в модуль формы для передачи результата проверки и загрузки результата в поле вида «Форматированный документ».
Ниже показан код решения для формы «ФормаЭлемента» документа «Задача».
&НаСервере
&После("ПриСозданииНаСервере")
Процедура ИСВС_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ИСВС_СобытияФормДоп.ПриСозданииНаСервереПосле(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ИСВС_КомандаПроверитьОрфографию(Команда) Экспорт
#Если ВебКлиент Или МобильныйКлиент Тогда
Возврат;
#КонецЕсли
ОрфографияКлиент.ИСВС_ПроверитьОрфографиюТекущегоЭлементаФормы(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ИСВС_ЗагрузитьHTMLДокументВРеквизитФормы(Параметры) Экспорт
ИСВС_ЗагрузитьHTMLВПолеФорматированногоДокументаНаСервере(Параметры);
КонецПроцедуры
&НаСервере
Процедура ИСВС_ЗагрузитьHTMLВПолеФорматированногоДокументаНаСервере(Параметры)
ЭтотОбъект[Параметры.ИмяРеквизита].УстановитьHTML(Параметры.HTMLДокумент,Параметры.Вложения);
КонецПроцедуры
код решения для формы «ФормаЭлемента» документа «Задача»
Полный код проверки прикреплен к статье файлом cfe.
P.S. Сам метод типовой проверки достаточно простой, и на Инфостарте наверняка есть статьи об использовании словарей редактора Microsoft Word в 1С с помощью «com». В ДО все это можно наглядно увидеть в общем модуле «ОрфографияКлиент». Конечно, интереснее было бы использовать проверку с помощью нейросетей, но лень-матушка.
Проверено на следующих конфигурациях и релизах:
- Документооборот КОРП, редакция 3.0, релизы 3.0.15.41