Описание работы
Первоначально был взят код из интернета:
https://helpf.pro/faq8/view/642.html
и в нём исправлена ошибка, чтобы он запускался. У себя, в обработку добавил JavaScript, чтобы было удобно проверять ошибки.
А потом, началась оптимизация работы: чтобы работало быстро и без интернета.
Советы по скорости работы с MS Word
help по Word: https://docs.microsoft.com
метод CheckSpelling - возвращает Истина/Ложь, в зависимости от того, есть ли в проверяемом тексте (слове) ошибка.
метод CheckSpelling - работает очень быстро (в Конфигураторе - меню Отладка - Замер производительности).
метод GetSpellingSuggestions - возвращает список вариантов слов замены орфографической ошибки, работает долго.
Можно не все слова проверять на ошибки, а только те, длина которых больше трёх символов.
Больше всего проблем со скоростью вызывает строка:
Word = Новый COMОбъект("Word.Application");
Оптимизация следующая:
При первом запуске она будет тормозить в любом случае. А вот последующие запуски можно исключить ))
1) Если на компьютере пользователя достаточно оперативной памяти - эта строка коннекта "живёт" некоторое время в оперативной памяти (компьютер пользователя), даже при разрыве коннекта Word.Quit()
И последующие вызовы происходят быстро. Но это не очень надёжно, т.к. коннект должен быть!
2) Поэтому в Конфигураторе можно написать несколько строк кода...
Модуль Управляемого приложения - ПередНачаломРаботыСистемы()
и сохранить в глобальную переменную на &Клиент-е
этот важный для нас коннект COMОбъект("Word.Application")
И конечный пользователь будет рад, что ждать нужно только при запуске 1С Приложения, а остальное время всё "летает".
Директива глобальной переменной: &Клиент т.к. используем MS Word на компьютере пользователя, хотя можно использовать и сервер 1С.
У ОбщихМодулей есть свойство - Повторное использование возвращаемых значений (сохранять на время сеанса).
Модуль Управляемого приложения - ПриЗавершенииРаботыСистемы()
Word.Quit()
И всё оборачиваем в Попытка-Исключение. А также, если что, повторное создание.
Если у пользователя долго запускается MS Word, проверьте размер файла шаблона Normal.dot
C:\Users\Пользователь\AppData\Roaming\Microsoft\Шаблоны
Его можно удалить, если размер больше 50Кб (у меня он 16Кб). Он создастся новый при первом последующем запуске.
На компьютере пользователя, Диспетчер задач - процессы - задать соответствие - (если много процессоров, поставить галочки)
И ещё один совет: пользователя нужно отвлекать чем-то, когда программа долго работает (загрузка, выгрузка и т.д.).
Например, как это сделано в типовых конфигурациях, показывать анимацию )) Это не шутка, html-код это позволяет.
У меня быстро всё запускается, кроме первого раза, пользователь просто не успеет разглядеть кота, поэтому это не делал.
Описание настроек
Запустить Конфигуратор и добавить обработку в раздел Обработки. Затем запустить 1С Предприятие.
ОбработкаТест - это пример вызова в программе основной обработки ПроверкаПравописанияWord.
Тестировал на платформах 1С:Предприятие 8.3 (8.3.12.1685), (8.3.18.1741).
MS Word 2007