AXForum  
Вернуться   AXForum > Блоги > CRM, SharePoint и Черная Магия
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

Добро пожаловать в мой блог! Изначально он не задумывался как блог CRM разработчика, но жизнь сама внесла нужные коррективы. Тут я публикою все свои наблюдения относительно обозначенных в заголовке систем. Если Вы найдете в нем что-то интересное для Вас, как для заказчика, то буду рад сотрудничать с Вами! В моей компетенции 100% задач по MS CRM 3.0/4.0/2011:
  • Консалтинг
  • Проектирование
  • Разработка
  • Обучение


MVP 2010, 2011
Оценить эту запись

Глюки системных скриптов при обратной совместимости с crmForm

Запись от Артем Enot Грунин размещена 27.12.2012 в 17:29

В свое время, после выхода CRM 2011, я немало поразился, почему системные скрипты используют crmForm. Тогда я решил, что это еще все же новая система, так что еще не весь функционал переписали.

И вот не далее как несколько минут назад я чуть не сломал себе мозг пытаясь понять почему у меня перестала работать форма Маркетингового списка? При загрузке формы стал блокироваться атрибут "Заблокирован". Сперва я пытался понять от чего он может зависеть, а потом полез дебагером в скрипты:
X++:
function FormOnLoad(){
    if(crmForm.all.type.DataValue)crmForm.all.lockstatus.disabled=true;
    crmForm.all.type.attachEvent("onchange",DisableLockStatus)
}
Причем конструкция crmForm.all.type.DataValue судя по отладчику возвращала "0". Какое-то время я пытался понять всю глубину мысли разработчика этой конструкции, пока не пришло озарение. Я изменил формат отображения поля "Тип" с двух радиокнопок, на список (иначе он плохо помещался на экране)! Обратный эксперимент удался: работоспособность удалось вернуть.

Я решил провести более полный опыт: создал новый объект с тремя битовыми атрибутами, вынес их на форму и дал им форматы:
  • Две радиокнопки
  • Чекбокс
  • Список
Далее я добавил на загрузку формы скрипт, который выводит результаты проверки во вспомогательное текстовое поле:
X++:
var total = "";

for (var i = 1;i <= 3;i++)
{
    var field = "fixrm_bit" + i;
    var xrmValue = Xrm.Page.getAttribute(field).getValue();
    var crmValue = crmForm.all[field].DataValue;

    total += "Xrm.Page.getAttribute(\"" + field + "\").getValue() = " + xrmValue + " Type = " + typeof (xrmValue);
    total += '\n';
    total += "crmForm.all." + field + ".DataValue = " + crmValue + " Type = " + typeof (crmValue);
    total += '\n\n';
}

Xrm.Page.getAttribute("fixrm_total").setValue(total);
Вывод программы для значения "True":
X++:
Xrm.Page.getAttribute("fixrm_bit1").getValue() = true Type = boolean
crmForm.all.fixrm_bit1.DataValue = true Type = boolean

Xrm.Page.getAttribute("fixrm_bit2").getValue() = true Type = boolean
crmForm.all.fixrm_bit2.DataValue = true Type = boolean

Xrm.Page.getAttribute("fixrm_bit3").getValue() = true Type = boolean
crmForm.all.fixrm_bit3.DataValue = 1 Type = string
Иными словами, сбоит только список. Будьте бдительны!

Нажмите на изображение для увеличения
Название: Form.png
Просмотров: 1579
Размер:	16.4 Кб
ID:	268
Размещено в CRM
Просмотров 20945 Комментарии 0
Всего комментариев 0

Комментарии

 


Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:11.