Разработка
14
Июн
0

Отлаживание скриптов в CRM

В MS CRM через пользовательский интерфейс можно добавлять скрипты к формам и полям. Это обеспечивает очень легкий способ форматирования строк, валидациию вводимой информации, вызовы AJAX, и т.д. В то время как это дает Вам большие возможности, это также может доставить Вам много головной боли в процессе отладки.

Debugger

Один из способов отладки – это добавление в скрипт строк debugger. Что-то вроде этого:

debugger
var aName = crmForm.all.address1;
debugger
crmForm.all.address1_city.DataValue = "Город " + aName.DataValue;
debugger

В результате чего, при нахождении такой строчки, эксплорер предложит открыть код в установленной программе отладчике (если у Вас вообще такая имеется – в данном случаи это Visual Studio). Открыв которую, можно постепенно передвигаться от одного debugger’а к другому, отсеивая, таким образом, корректный код и находя не корректный («споткнувшись», программа выдаст ошибку и Вы будете точнее знать где у Вас косяк 🙂 ).


IE 8 Developer Tools

Использование debugger’а для разработчиков может быть довольно трудоёмким, потому что это требует постоянного переключения между формами. Поэтому разработчики IE 8 добавили в него очень полезный инструмент – IE 8 Developer Tools.

IE 8 Developer Tools упростил процесс отладки скриптов в CRM 4, потому что он позволяет добавлять точки разрыва в Ваш скрипт и начинать отладку без необходимости вызова дополнительных инструментальных средств.

  1. В качестве примера повесим вот такой скриптик на событие onChange поля Название в секции Адрес, формы Бизнес-партнеров:
    var aName = crmForm.all.address1;
    crmForm.all.address1_city.DataValue = "Город " + aName.DataValue;
    

    По замыслу, при изменении поля Название, полю Город (в то же секции) присваивается значение «Город » + значение поля Название. Но в этом скрипте есть одна ошибка: неправильное имя поля Название в первой строке (address1 вместо address1_name);

  2. Создайте форму предварительного просмотра и попробуйте изменить поле Название – выскочит ошибка. Теперь займемся ее отладкой (притворимся, что мы не знаем где она 🙂 );
  3. Используйте кнопку F12, чтобы включить Developer Tools. После открытия инструмента, перейдите на вкладку Script и выберите соответствующий файл скрипта из ниспадающего списка. Для формы Предварительного просмотра используется файл preview.aspx – вот его и выберите. Из всего многообразия представленных здесь скриптов перейдите к тому, что Вы ввели;
  4. Чтобы начать отлаживание, Вы должны будете добавить контрольную точку (для этого щелкните слева от строки: добавится красная точка) и нажать на верхней панели инструментов кнопку Начать отладку» (т.к. скрипт валится на том, что мы пытаемся получить значение не существующего поля, то и точку разрыва будем ставить именно на этой строчке). После вернитесь к форме предварительного просмотра, и снова измените поле Название, в результате чего, снова произойдет событие onchange. Но на этот раз отладчик остановится на нашей контрольной точке;
  5. Взглянув на вкладку Локальные (в правой области окна), Вы можете увидеть, что ошибка в том, что переменная aName не определена, т.к. crmForm.all.address1 не возвращает значения;
  6. Прежде, чем исправить эту ошибку на форме, можно принудительно заставить aName равняться address1_name вместо address1. Чтобы сделать это, после того, как отладчик споткнется на контрольной точки, введите следующий код на вкладке Консоль (вбивать нужно в нижней части окна) или окне Смотреть:
    aName = crmForm.all.address1_name

    а затем нажмите кнопку Продолжить (в виде зеленой стрелки на панели инструментов) или нажмите F5 и работа скрипта продолжится, корректно заполнив нужное поле;

  7. После того, как код выполнится, можно заключить, что ошибка найдена! И теперь ее надо исправить в событии на форме!




Бага

Иногда, при многократном изменении скрипта, Developer Tools будет, вместо отображении новой страницы, брать старую – из кэша, Очистка кэша IE поможет Вам устранить эту проблему (благо на панели инструментов даже есть такая кнопочка 🙂 ).

Комментарии (0)

*

code