Добро пожаловать в мой блог! Изначально он не задумывался как блог CRM разработчика, но жизнь сама внесла нужные коррективы. Тут я публикою все свои наблюдения относительно обозначенных в заголовке систем. Если Вы найдете в нем что-то интересное для Вас, как для заказчика, то буду рад сотрудничать с Вами! В моей компетенции 100% задач по MS CRM 3.0/4.0/2011:
MVP 2010, 2011
- Консалтинг
- Проектирование
- Разработка
- Обучение
MVP 2010, 2011
Глюки системных скриптов при обратной совместимости с crmForm
Запись от Артем Enot Грунин размещена 27.12.2012 в 17:29
В свое время, после выхода CRM 2011, я немало поразился, почему системные скрипты используют crmForm. Тогда я решил, что это еще все же новая система, так что еще не весь функционал переписали.
И вот не далее как несколько минут назад я чуть не сломал себе мозг пытаясь понять почему у меня перестала работать форма Маркетингового списка? При загрузке формы стал блокироваться атрибут "Заблокирован". Сперва я пытался понять от чего он может зависеть, а потом полез дебагером в скрипты:
Причем конструкция crmForm.all.type.DataValue судя по отладчику возвращала "0". Какое-то время я пытался понять всю глубину мысли разработчика этой конструкции, пока не пришло озарение. Я изменил формат отображения поля "Тип" с двух радиокнопок, на список (иначе он плохо помещался на экране)! Обратный эксперимент удался: работоспособность удалось вернуть.
Я решил провести более полный опыт: создал новый объект с тремя битовыми атрибутами, вынес их на форму и дал им форматы:
Вывод программы для значения "True":
Иными словами, сбоит только список. Будьте бдительны!
И вот не далее как несколько минут назад я чуть не сломал себе мозг пытаясь понять почему у меня перестала работать форма Маркетингового списка? При загрузке формы стал блокироваться атрибут "Заблокирован". Сперва я пытался понять от чего он может зависеть, а потом полез дебагером в скрипты:
X++:
function FormOnLoad(){ if(crmForm.all.type.DataValue)crmForm.all.lockstatus.disabled=true; crmForm.all.type.attachEvent("onchange",DisableLockStatus) }
Я решил провести более полный опыт: создал новый объект с тремя битовыми атрибутами, вынес их на форму и дал им форматы:
- Две радиокнопки
- Чекбокс
- Список
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);
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
Всего комментариев 0