Кастомизация
30
Сен
2

Проверка орфографии в MS CRM

Плохо учили в школе русский(немецкий, японский) язык? 🙂 Но деловые письма писать надо! … и Марьивановны нет под рукой, чтобы проверила орфографию… Что ж, будем использовать подручные средства… 🙂 и начнем с самого простого.

IE7Pro

IE7Pro – аддон для IE, добавляющий в него много новых возможностей и расширений, делающий Ваш обозреватель более простым, более функциональным, более безопасным и настраиваемым. Мы не будем сейчас вдаваться во все его функциональные возможности (Вы сами можете это сделать на официальном сайте http://www.ie7pro.com/), т.к. в этом посте нас интересует только одна из них – проверка орфографии.

Установка:

  • Скачайте последнюю версию IE7Pro (можете воспользоваться локальным зеркалом IE7Pro 2.4.7, сделанным на текущий момент);
  • Когда выскочит предложение скачать файл щелкните Run (чтобы сразу установить);
  • Пройдитесь по несложной процедуре установки;



  • Далее Вам нужно установить дополнительные языки (локальное зеркало для версии IE7Pro 2.x) на которых будет производится проверка орфографии – отметьте их галками во время установки;
  • После установки IE7Pro у Вас в браузере появится значок этой программы (справа на панели состояния). Щелкните по нему правой кнопкой и выберите Настройка. Из всех функций доступных в этой надстройке убедитесь, что проверка орфографии отмечена галкой (если нет – поставьте ее). Также убедитесь, что установлена галка «Разрешить настройку контекстного меню».



Пробуем:

  1. Создайте, например, новую запись Задачи;
  2. Щелкните право кнопкой мыши по текстовой области. Появится контекстное меню. В подменю Языки орфографии Вы можете отметить словарь с которым будет сверятся орфография введенных Вами слов. В этом же меню будут появляться варианты правки ошибочных слов, если Вы щелкните по ним правой кнопкой мыши (их отыскать не трудно – они будут подчеркнуты красной линией).


Microsoft Office Word Правописание

Если Вам приходилось работать с Microsoft Office Word, то Вы в курсе, что в него встроен интрумент проверки орфографии. А раз есть готовая реализация функциона, то почему бы ею не воспользоваться: заставим Microsoft Word искать ошибки в MS CRM.

  • Выгрузите ISV.config и повесьте на интересующий Вас объект такую кнопку (по нажатию на которую будет происходить проверка орфографии, а точнее будет вызываться функцию, которую мы рассмотрим далее):

    <ToolBar ValidForCreate="0" ValidForUpdate="1">
    	<Button Icon="/_imgs/ico_18_home.gif" JavaScript="document.SpellCheck();">
    		<Titles>
    			<Title LCID="1049" Text="Орфография" />
    		</Titles>
    		<ToolTips>
    			<ToolTip LCID="1049" Text="Орфография" />
    		</ToolTips>
    	</Button>
    </ToolBar>
    
  • А на онлоад интересующего Вас объекта повесьте следующий код (в данном случаи я эксперементирую с Электронной почтой):

    document.SpellCheck = function() { 
    
        var target = crmForm.all.description.DataValue;
        window.clipboardData.setData('Text', target );
    
        var oWord = new ActiveXObject("Word.Application");
        oWord.Visible = false;
        oWord.Documents.Add();
        oWord.Top = -2000;
        oWord.Selection.Paste();
    
        oWord.ActiveDocument.CheckSpelling();
        oWord.Selection.WholeStory();
        oWord.Selection.Copy();
    
        oWord.ActiveDocument.Close(0);
        oWord.Quit(0);
    
        z = clipboardData.getData("Text");
        window.frames['descriptionIFrame'].document.body.innerHTML = z;
    
        window.clipboardData.clearData();
    
    }
    

    Эта функция копирует текст, введенный в поле основного текста письма (в данном случае это description – поменяйте его для Вашего случая) и вставляет его в документ Word, но этот документа не видим, потому что он скрыт и перемещен за пределы экрана (oWord.Top = -2000). Затем функция вызывает метод проверки орфографии Word.CheckSpelling() для переданного текста. После корректировки всех слов, весь текст будет вставлен назад в основное поле электронной почты (а точнее в iFrame descriptionIFrame – это особенность объекта Электронная почта – имя iFrame можно узнать с помощью Internet Explorer Developer Toolbar), а процесс Word закроется.



Тестируем: откройте объект Электронной почты, введите какой-нибудь текст с ошибкой и нажмите нашу кнопку.


Примечание:

  1. Чтобы этот код работал Вам необходимо разрешить в настройках браузера доступ к буферу обмена, а также поиграться с другими настройками безопасности (ActiveX);
  2. Здесь мы делаем проверку основного поля в объекте Электронная почта, поэтому Вы можете наблюдать HTML-теги. Это связано с особенностью формирования письма CRM’ом. В других многострочных полях Вы такого не увидите;
  3. Ну, и как Вы понимаете этот подход требует, чтобы на клиентской машине был установлен Microsoft Word (в данном примере использовался 2007 версия).

API Яндекс.Спеллера

Яндекс.Спеллер – сервис проверки правописания, который помогает находить и исправлять орфографические ошибки. Работа сервиса основана на использовании орфографического словаря (в настоящее время Спеллер проверяет тексты на русском, украинском и английском языках). И т.к. его работа основана на веб-стандартах мы без труда подключим его к CRM.

Итак, подключаем…

  • Запускать проверку орфографии будем по нажатию кнопки. Поэтому первым делом добавим ее на форму. Выгрузите ISV.config и откройте в каком-либо текстовом редакторе и добавьте следующий код кнопки для нужного Вам объекта (в данном примере Письмо):
    <ToolBar ValidForCreate="0" ValidForUpdate="1">
    	<Button Icon="/_imgs/ico_18_home.gif" JavaScript="spellCheck();">
    		<Titles>
    			<Title LCID="1049" Text="Орфография" />
    		</Titles>
    		<ToolTips>
    			<ToolTip LCID="1049" Text="Орфография" />
    		</ToolTips>
    	</Button>
    </ToolBar>
    
  • Импортируйте ISV.config обратно.


  • Далее нужно скачать клиентскую часть Спеллера (локальное зеркало) и поместить все файлы входящие в архив в папку <сайт CRM>\ISV\speller
  • Далее нам нужно пойти на лютый ансапорт – будем редактировать исходный файл CRM. В данном примере я буду проверять на орфографию основную часть объекта Письмо, поэтому откройте на редактирование файл <сайт CRM>\Activities\letter\edit.aspx и добавьте в него следующие строчки (где-нибудь между тегами <head> и </head> и не забудьте заменить в нем имя CRM сервера)
    <script type="text/javascript" src="http://crm2008/ISV/speller/spell.js"></script>
    
    <script type="text/javascript">
    	var speller = new Speller({ url: "http://crm2008/ISV/speller/", lang: "ru", options: Speller.IGNORE_URLS });
    
    	function spellCheck() {
    		var form = document.forms["crmForm"];
    		speller.check([form.description]);
    	}
    </script>
    

    Пояснение: в этом коде crmForm это название тега <form> в которое входит поле description – эти имена Вы можете узнать с помощью Internet Explorer Developer Toolbar. Их необходимо корректировать в зависимости от конкретного объекта.
    Также Вы можете перечислить несколько полей одной формы

    speller.check([ form.ctrl_1, form.ctrl_2, ..., form.ctrl_N ]);
    



Пробуем: создайте объект Письмо, введите в основное поле текст (с ошибкой) и нажмите новую кнопочку «Орфография» 🙂


З.Ы.

Чтобы Яндекс.Спеллера успешно работал необходимо:

  1. Добавить speller.yandex.net в доверенные узлы;
  2. Вам возможно придется понизить настройки безопасности браузера – зависит от Ваших текущих настроек. В данном примере у меня настроен минимальный уровень безопансности, поэтому у меня никаких проблем не возникло.


Комментарии (2)
  • Александр 30.09.2009

    Спасибо, первый способ самый простой для юзверя и вполне эффективно работает, правда в Firefox все реализовано лучше и проще но он не работает с CRM

    Еще я читал что для тех же целей можно применить панель от Google — но я панели не сильно люблю, так что описанный способ считаю пока лучшим

    еще раз спасибо

  • slivka_83 30.09.2009

    Добрый день.

    Не знаю как работает в FF проверка орфографии (мне больше ослик нравится), но на FF можно организовать просмотр CRM:
    http://blog.sonomapartners.com/2007/11/microsoft-crm-r.html
    хотя при этом все равно будет использоваться ядро IE. Но может этого будет достаточно для проверки в FF 🙂

    А вот всякие панельки (гугловские, яндекса и т.д.) действительно зло для CRM — удалять их беспощадно 🙂

*

code