24.06.2015, 16:49 | #1 |
Участник
|
Unified Service Desk - ошибка с EntityReference
Всем привет.
Установлена CRM2015 + Unified Service Desk. Создаю интерес из сессии контакта, по образцу создания обращения в семпле. Вызываю New_CRM_Page со следующими параметрами Получаю ошибку В трейсе - следующее: [2015-06-24 16:44:45.655] Process: w3wp |Organization:6d4e2950-8d09-4ad1-b1a8-1efc4fac1b0b |Thread: 121 |Category: Application |User: 00000000-0000-0000-0000-000000000000 |Level: Error |ReqId: 0e2a794b-2681-4ee2-8ae1-59f427119a79 | ErrorInformation.LogError ilOffset = 0x17 >MSCRM Error Report: -------------------------------------------------------------------------------------------------------- Error: Exception of type 'System.Web.HttpUnhandledException' was thrown. Error Message: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Error Details: Exception of type 'System.Web.HttpUnhandledException' was thrown. Source File: Not available Line Number: Not available Request URL:dyncrm2012/.../page.aspx;etc=4&firstname=%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B5%D0%B9&fullname=%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B5%D0%B9%20%D0%92%D0%B8%D0%BD%D0%BE%D0%B3%D1%80%D0%B0%D0%B4%D0%BE%D0%B2&lastname=%D0%92%D0%B8%D0%BD%D0%BE%D0%B3%D1%80%D0%B0%D0%B4%D0%BE%D0%B2&mobilephone=79859039090&pagemode=iframe&parentcontactid=%7bb06ea362-cfbd-e411-80ce-005056b54792%7d&parentcontactidtype=contact&theme=Outlook15White Stack Trace Info: [InvalidOperationException: CRM Parameter Filter - Invalid parameter 'parentcontactidtype=contact' in Request.QueryString on page /DYNCRM/_forms/read/page.aspx The raw request was 'GET /DYNCRM/_forms/read/page.aspx?emailaddress1=someone_g%40example.com&etc=4&firstname=%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B5%D0%B9&fullname=%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B5%D0%B9%20%D0%92%D0%B8%D0%BD%D0%BE%D0%B3%D1%80%D0%B0%D0%B4%D0%BE%D0%B2&lastname=%D0%92%D0%B8%D0%BD%D0%BE%D0%B3%D1%80%D0%B0%D0%B4%D0%BE%D0%B2&mobilephone=79859039090&pagemode=iframe&parentcontactid=%7bb06ea362-cfbd-e411-80ce-005056b54792%7d&parentcontactidtype=contact&theme=Outlook15White' called from http://dyncrm2012/DYNCRM/_common/err...er_lcid=1049.] at Microsoft.Crm.Application.ParameterFilter.ValidateParameter(HttpRequest request, ArrayList parameterCollection, String key, String value, ParameterSources source, EntityType pageEntityType, FormAdditionalAllowedParameters additionalAllowedParameters) at Microsoft.Crm.Application.ParameterFilter.ValidateParameters(Page page, EntityType pageEntityType, Boolean alwaysEnableParameterChecking, FormAdditionalAllowedParameters formAdditionalAllowedParametersTemp) at Microsoft.Crm.Application.ParameterFilter.ValidateParameters(Page page, EntityType pageEntityType, FormAdditionalAllowedParameters formAdditionalAllowedParametersTemp) at Microsoft.Crm.Application.Controls.AppPage.ValidatePageParameters() at Microsoft.Crm.Application.Controls.AppPage.OnInit(EventArgs e) at System.Web.UI.Control.InitRecursive(Control namingContainer) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) [HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown.] at System.Web.UI.Page.HandleError(Exception e) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest() at System.Web.UI.Page.ProcessRequest(HttpContext context) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) Из лога понятно, что ругается на параметр "Invalid parameter 'parentcontactidtype=contact'", но это значение, я так понимаю формируется стандартной функцией EntityReference. Что я делаю не так? Заранее спасибо за помощь. |
|
25.06.2015, 18:10 | #2 |
Участник
|
Попробуйте вместо "parentcontactid" и "parentcontactidtype" использовать "customerid" и "customeridtype".
__________________
Опыт позволяет ошибаться гораздо увереннее. |
|
29.06.2015, 10:59 | #3 |
Участник
|
Если использовать customerid - значение поля не появляется в интерфейсе. Необходимо заполнить именно родительский контакт. Из скрипта C# аналогичная конструкция работает без проблем.
|
|
29.06.2015, 12:06 | #4 |
Участник
|
Цитата:
А можете продемонстрировать "скрипт" C#, в котором все работает?
__________________
Опыт позволяет ошибаться гораздо увереннее. |
|
29.06.2015, 12:56 | #5 |
Участник
|
Да, обычный сreateRequest
if (!Row.CONTACTID_IsNull) { Guid _contact_id = new Guid(Row.CONTACTID); if (_contact_id != Guid.Empty) { lead["parentcontactid"] = new EntityReference("contact", _contact_id); } } В общем, если вырубить фильтр параметров, то после сохранения Интереса в USD значение в поле подтягивается корректно. Уж не знаю, почему так. Не может к несохраненной записи контакт подтянуть что ли. |
|
29.06.2015, 13:31 | #6 |
Участник
|
Цитата:
Сообщение от Chapelain
Да, обычный сreateRequest
if (!Row.CONTACTID_IsNull) { Guid _contact_id = new Guid(Row.CONTACTID); if (_contact_id != Guid.Empty) { lead["parentcontactid"] = new EntityReference("contact", _contact_id); } } В общем, если вырубить фильтр параметров, то после сохранения Интереса в USD значение в поле подтягивается корректно. Уж не знаю, почему так. Не может к несохраненной записи контакт подтянуть что ли. А если в адресную строку этот параметр подставить, то он пытается такое поле найти на форме. А такого поля нет.
__________________
Опыт позволяет ошибаться гораздо увереннее. |
|
29.06.2015, 15:15 | #7 |
Участник
|
Так-то я вас понял, спасибо)
Но в USD в это поле я также передаю EntityReference (см. первый скрин). И там он его воспринимает как parentcontactidtype и parentcontactid. Возможно имеет смысл просто guid в это поле класть. |
|
29.06.2015, 17:26 | #8 |
Участник
|
А что такое "первый скрин"? У Вас в изначальном сообщении вообще никаких скриншотов не видно.
__________________
Опыт позволяет ошибаться гораздо увереннее. |
|
30.06.2015, 00:06 | #9 |
Участник
|
А так? Мне тут разъяснили, что поскольку поле, которое заполняется является ссылочным тип N:1, то передавать в него значение нужно следующим образом: primarycontactid=[[$Context.primarycontactid.id]+] – ID связанно записи primarycontactidname=[[$Context.primarycontactid.name]+] – отображаемое имя записи Спасибо за помощь. |
|
30.06.2015, 11:20 | #10 |
Участник
|
И так не видно. Вы видимо пытаетесь копи-пастом скрин вставить. А тут, наверное, только через кнопку "Вставить изображение" в редакторе сообщения получится.
Цитата:
Сообщение от Chapelain
Мне тут разъяснили, что поскольку поле, которое заполняется является ссылочным тип N:1, то передавать в него значение нужно следующим образом: primarycontactid=[[$Context.primarycontactid.id]+] – ID связанно записи primarycontactidname=[[$Context.primarycontactid.name]+] – отображаемое имя записи Да не за что же. ))
__________________
Опыт позволяет ошибаться гораздо увереннее. |
|
Теги |
usd, crm2015 |
|
|