16.09.2013, 09:01 | #1 |
Участник
|
Ошибка в изменяемом событии поля
Доброго всем времени суток уважаемые коллеги!!
Столкнулся вот с какой проблемой: при разработке используются скрипты на формах и многие их них отрабатывают на событиях при закрузке - или изменении полей Так вот появляется ошибка: Ошибка в изменяемом событии поля. Поле:window Событие:Onload Ошибка:"(название функции)" - не определено при событии изменения поля - скрипт вообще не отрабатывает. Подскажите - в какую сторону капнуть и что можно проверить. |
|
16.09.2013, 10:31 | #2 |
Участник
|
1) если пишете так function name_my(){} то у вас точно синтаксическая ошибка с скобками;
2)если пишете так name_my = function(){} то у вас или вариант 1 или идет вызов функции name_my или другой до ее инициализации, актуально очень если идет деление как в Xrm.Page |
|
16.09.2013, 10:32 | #3 |
Участник
|
а легче всего написать слово debugger; в самом начале и пройтись пошагово по коду
|
|
16.09.2013, 13:41 | #4 |
Участник
|
Попробовал по вашему способу, ошибка точно такая же.
Попытаться смоделировать ситуацию на тестовом стенде, ошибка такая же: Ошибка в изменяемом событии поля. Поле:window Событие:Onload Ошибка:"(название функции)" - не определено такое ощущение что с настройками IIS что то не так а вот что именно. |
|
16.09.2013, 22:38 | #5 |
Участник
|
Попытаюсь объяснить что и как в деталях:
Около года назад был установлен СРМ сервер, и по техническим причинам он вышел из строя, но остались бакапы баз данных. С помощью которых был выполнен импорт организации на новый установленный сервер. Дистрибутив новый - который содержит в себе 13 UR и который возможно установить на Windows Server 2012, что в принципе и было выполнено. С запуском самой системы проблем не возникло, все пользователи домена авторизуясь в домене подключаются к СРМ, но не работает ни один скрипт JS который на старом сервере работал. Вот тут то собственно и уточняющий вопрос: может что то помимо самой установки сервера необходимо проверить чтоб работали скрипты? |
|
17.09.2013, 07:17 | #6 |
Участник
|
Цитата:
|
|
17.09.2013, 11:46 | #7 |
Участник
|
Вопрос а какой именно лог? При включении трассировки создаются множество файлов. Трассировку включил с помощью CrmDiagTool2011
прикладываю к сообщению файлик который генерит эта утилита |
|
18.09.2013, 16:52 | #8 |
Участник
|
Была похожая проблема с переходом на новый роллап - не работало часть JS-функций.
1. Сидите через браузер или через CRM Outlook клиент? Если второе, необходимо его обновить до той же версии роллапа. 2. Некоторые функции с 12 Rollup работают по-другому (неподдерживаемые). Попробуйте на тестовой сущности повесить на анлоад простой скрипт function onload() { alert(); } и проверить, будет ли работать. Он должен быть единственным в подключаемом веб-ресурсе. 3. Появляется ли данная ошибка, если на форме отсутствуют скрипты? |
|
19.09.2013, 10:15 | #9 |
Участник
|
Цитата:
Сообщение от Space-06
Попытаюсь объяснить что и как в деталях:
Около года назад был установлен СРМ сервер, и по техническим причинам он вышел из строя, но остались бакапы баз данных. С помощью которых был выполнен импорт организации на новый установленный сервер. Дистрибутив новый - который содержит в себе 13 UR и который возможно установить на Windows Server 2012, что в принципе и было выполнено. С запуском самой системы проблем не возникло, все пользователи домена авторизуясь в домене подключаются к СРМ, но не работает ни один скрипт JS который на старом сервере работал. Вот тут то собственно и уточняющий вопрос: может что то помимо самой установки сервера необходимо проверить чтоб работали скрипты? 2) На старом СРМ скрипты случайно не с СРМ 4.0 ? 3) На старый СРМ скрипты случайно не переходили с СРМ 4.0 через мигрейшен тулз ? 4) Названия в функциях в библиотеках случайно не OnLoad, OnChange_название поля ? И дайте посмотреть хоть на одну скриптовую библиотеку Последний раз редактировалось spectr; 19.09.2013 в 10:40. |
|
26.09.2013, 21:25 | #10 |
Участник
|
доброго времени суток, долго не отвечал был в командировке и до разработок не доходило время.
Вообщем в простой форме на Онлоад событии простой алерт срабатывает а не работает вот какая функция: на Форме (контакта, звонка или любой другой сущности) необходимо получить данные родительского клиента, такие как область, город, телефон и т.д. использую для этого функционал XrmServiceToolkit.Soap.Retrive X++: retrievedAccount = XrmServiceToolkit.Soap.Retrieve("account", Xrm.Page.data.entity.attributes.get("to").getValue()[0].id, ["telephone2", "address1_city", "address1_stateorprovince"]); a = retrievedAccount.attributes["address1_city"].value; .. //далее по коду присваиваю значения нужным полям на форме если вдруг в родительской сущности отсутствует одно из значений, необходимых для получения (не проставлен телефон или область и т.д.) сразу же при загрузке формы, в отладчике пишет "не удалось получить значение Value объект не определен или его значение равно Null вот тут и думаю каким образом возможно перебором определить - какое значение удалось получить а какое нет и в конечном результате на целевую сущность их вставить. пользуюсь вот такой проверкой: if (retrievedAccount.attributes["address1_city"] !== "undefined") {a = retrievedAccount.attributes["address1_city"].value;} и в результате все равно попадаю на эту ошибку. Из за ошибки весь скрипт с последующими функциями перестает работать. А раньше ведь точно такой же скрипт работал Может сталкивался кто из вас коллеги - с проверкой подобной - как проверить есть ли входные данные или нет и продолжить работу если отсутствуют таковые |
|
27.09.2013, 09:07 | #11 |
Участник
|
Цитата:
if (retrievedAccount.attributes["address1_city"] !== "undefined") {a = retrievedAccount.attributes["address1_city"].value;}
и если я правильно понимаю логику (я не разработчик, но все же) undefined - если поле вообще никогда не заполнялось, null - если оно заполнялось, но сейчас данных нет (я не утверждаю на 100%). и поэтому нужна проверка на null. |
|
27.09.2013, 17:51 | #12 |
Участник
|
Из положения вышел примерно таким способом:
X++: function set_accountinfo() { var id = Xrm.Page.data.entity.attributes.get("to").getValue()[0].id; var cols = ["telephone2", "address1_city", "address1_stateorprovince"]; var outcols = ["new_telephone2", "new_city", "new_province"] var retrievedAccount = XrmServiceToolkit.Soap.Retrieve("account", id, cols); var param = {}; for (var i in cols){ if (retrievedAccount.attributes[cols[i]]){//alert("Поле " + cols[i]); //param[cols[i]] = Xrm.Page.data.entity.attributes.get(outcols[i]).setValue(retrievedAccount.attributes[cols[i]].value); }}} Спасибо всем за участие!!! |
|
|
|