Добрый день. Я столкнулся с ДЕЙСТВИТЕЛЬНО странной проблемой, пытаясь изменить сетку данных, и Google не повезло. Я использую приведенные ниже javascripts для установки выборки и макета подсетки под названием «Opp_Prods».
function timeOutReassignFilter()
{
console.log("About to setTimeout");
setTimeout(SetProductView, 1000);
console.log("Set TimeOut");
}
function SetProductView()
{
try
{
var accountId = Xrm.Page.data.entity.getId();
var viewId = '{00000000-0000-0000-0000-000000000001}';
var entityName = "opportunityproduct";
var viewDisplayName = "Associated Opportunity Products View";
console.log("About to set fetchxml: " + accountId);
var fetchXml = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" +
"<entity name='opportunityproduct'>" +
"<attribute name='productid' />" +
"<attribute name='productdescription' />" +
"<attribute name='priceperunit' />" +
"<attribute name='quantity' />" +
"<attribute name='new_serialnumber' />" +
"<attribute name='extendedamount' />" +
"<attribute name='opportunityproductid' />" +
"<order attribute='productid' descending='false' />" +
"<link-entity name='opportunity' from='opportunityid' to='opportunityid' alias='ac'>" +
"<filter type='and'>" +
"<condition attribute='parentaccountid' operator='eq' value='" + accountId + "' />" + //uiname='Test Account'
"</filter>" +
"</link-entity>" +
"</entity>" +
"</fetch>";
console.log("About to set layoutXml");
var layoutXml = "<grid name='Opp_Prods' object='1' jump='productid' select='1' icon='1' preview='1'>" +
"<row name='result' id='myproductid'>" +
"<cell name='productdescription' width='150' />" +
"<cell name='productid' width='150' />" +
"<cell name='priceperunit' width='150' />" +
"<cell name='quantity' width='150' />" +
"<cell name='extendedamount' width='150' />" +
"<cell name='new_serialnumber' width='150' />" +
"<cell name='opportunityproductid' width='150' />" +
"</row>" +
"</grid>";
console.log("About to set Control by adding custom view.");
// Xrm.Page.getControl("opp_prods").addCustomView(viewId, entityName, viewDisplayName, fetchXml, layoutXml, true);
document.getElementById("Opp_Prods").control.SetParameter("fetchXML", fetchXml);
document.getElementById("Opp_Prods").control.SetParameter("layoutXML", layoutXml);
Xrm.Page.ui.controls.get("Opp_Prods").refresh();
console.log("Custom View Added.");
}
catch(err)
{
console.log(err);
}
}
При загрузке формы выдает следующую ошибку:
Необработанное исключение: System.ServiceModel.FaultException`1 [[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, версия = 7.0.0.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35]]: System.Xml.XmlException: Microsoft Dynamics В CRM произошла ошибка. Справочный номер для администраторов или службы поддержки: #E63BFD86Detail:
-2147220970 System.Xml.XmlException: в Microsoft Dynamics CRM произошла ошибка. Справочный номер для администраторов или службы поддержки:E63BFD86 2015-08-25T16:13:21.2028543Z
<ErrorCode>-2147220970</ErrorCode> <ErrorDetails xmlns:d3p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic"
/> System.InvalidCastException: в Microsoft Dynamics CRM произошла ошибка. Справочный номер для администраторов или службы поддержки:
F2D68509
<Timestamp>2015-08-25T16:13:21.2028543Z</Timestamp> <InnerFault i:nil="true" /> <TraceText i:nil="true" /> </InnerFault> <TraceText i:nil="true" /> </OrganizationServiceFault>
А вот полная трассировка из наших журналов трассировки CRM:
[2015-08-25 11:24:37.314] Процесс: w3wp |Организация:f6d279c3-1548-e511-80bd-00155d001302 |Поток: 118 |Категория: Приложение |Пользователь: 00000000-0000-0000-0000-000000000000 |Уровень: Ошибка |ReqId: 021d486e-5560-4f4e-a87a-a138ee9f8f3f | ErrorInformation.LogError ilOffset = 0x17
Отчет об ошибках MSCRM: -------------------------------------------------------------- -------------------------------------------------- -------- Ошибка: System.InvalidCastException: невозможно привести объект типа «System.DBNull» к типу «Microsoft.Xrm.Sdk.OptionSetValue». в Microsoft.Crm.Application.Controls.Grid.UI.PropertyTemplatePropertiesConfigurationColumn.BindData(WebControl parentControl, IRowDataSource rowData) в System.Web.UI.Control.DataBind(логическое значение raiseOnDataBinding) в System.Web.UI.Control.DataBindChildren() в System.Web.UI.Control.DataBind (логическое значение raiseOnDataBinding) в System.Web.UI.WebControls.GridView.CreateRow (Int32 rowIndex, Int32 dataSourceIndex, DataControlRowType rowType, DataControlRowState rowState, логическое значение dataBind, Object dataItem, DataControlField [] поля, TableRowCollection rows, PagedDataSource pagedDataSource)
в System.Web.UI.WebControls.GridView.CreateChildControls(IEnumerable dataSource, Boolean dataBinding) в System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) в System.Web.UI. WebControls.GridView.PerformDataBinding (данные IEnumerable) в System.Web.UI.WebControls.DataBoundControl.OnDataSourc eViewSelectCallback (данные IEnumerable) в System.Web.UI.WebControls.DataBoundControl.PerformSelect() в Microsoft.Crm.Application.Controls.Grid.UI.LayoutProviderGridList.RenderGridData (вывод HtmlTextWriter) в Microsoft.Crm.Application.Controls.Grid. UI.LayoutProvider.Render (вывод HtmlTextWriter) в Microsoft.Crm.Application.Controls.GridUIProvider.Render (выход HtmlTextWriter) в Microsoft.Crm.Core.Application.WebServices.AppGridWebServiceHandler.GetRefreshResponseHtml (IGridUIProvider uiProvider, StringBuilder sbTemp) в Microsoft.Crm .Core.Application.WebServices.AppGridWebServiceHandler.Refresh (String gridXml, StringBuilder sbXml, StringBuilder sbHtml, логическое значение returnJsonData) в Microsoft.Crm.Core.Application.WebServices.AppGridWebServiceHandler.ProcessRequestInternal (контекст HttpContext)Сообщение об ошибке: System.InvalidCastException: невозможно преобразовать объект типа «System.DBNull» в тип «Microsoft.Xrm.Sdk.OptionSetValue». в Microsoft.Crm.Application.Controls.Grid.UI.PropertyTemplatePropertiesConfigurationColumn.BindData(WebControl parentControl, IRowDataSource rowData) в System.Web.UI.Control.DataBind(логическое значение raiseOnDataBinding) в System.Web.UI.Control.DataBindChildren() в System.Web.UI.Control.DataBind (логическое значение raiseOnDataBinding) в System.Web.UI.WebControls.GridView.CreateRow (Int32 rowIndex, Int32 dataSourceIndex, DataControlRowType rowType, DataControlRowState rowState, логическое значение dataBind, Object dataItem, DataControlField [] поля, TableRowCollection rows, PagedDataSource pagedDataSource)
в System.Web.UI.WebControls.GridView.CreateChildControls(IEnumerable dataSource, Boolean dataBinding) в System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) в System.Web.UI. WebControls.GridView.PerformDataBinding (данные IEnumerable) в System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback (IEnumerable data) в System.Web.UI.WebControls.DataBoundControl.PerformSelect() в Microsoft.Crm.Application.Controls.Grid.UI.LayoutProviderGridList.RenderGridData (вывод HtmlTextWriter) в Microsoft.Crm.Application.Controls.Grid.UI.LayoutProvider .Render (вывод HtmlTextWriter) в Microsoft.Crm.Application.Controls.GridUIProvider.Render (вывод HtmlTextWriter) в Microsoft.Crm.Core.Application.WebServices.AppGridWebServiceHandler.GetRefreshResponseHtml (IGridUIProvider uiProvider, StringBuilder sbTemp) в Microsoft.Crm.Core. Application.WebServices.AppGridWebServiceHandler.Refresh (String gridXml, StringBuilder sbXml, StringBuilder sbHtml, логическое значение returnJsonData) в Microsoft.Crm.Core.Application.WebServices.AppGridWebServiceHandler.ProcessRequestInternal (контекст HttpContext)Исходный файл: недоступен
Номер строки: Недоступно
URL запроса: https://manufacturingdemo.crm2015.cloudappsonline.net/AppWebServices/AppGridWebService.ashx?operation=Refresh
Информация о трассировке стека: [InvalidCastException: невозможно привести объект типа «System.DBNull» к типу «Microsoft.Xrm.Sdk.OptionSetValue».] в Microsoft.Crm.Application.Controls.Grid.UI.PropertyTemplatePropertiesConfigurationColumn.BindData(WebControl parentControl , IRowDataSource rowData) в System.Web.UI.Control.DataBind(логическое значение raiseOnDataBinding) в System.Web.UI.Control.DataBindChildren() в System.Web.UI.Control.DataBind(логическое значение raiseOnDataBinding) в System.Web.UI .WebControls.GridView.CreateRow(Int32 rowIndex, Int32 dataSourceIndex, DataControlRowType rowType, DataControlRowState rowState, Boolean dataBind, Object dataItem, поля DataControlField[], строки TableRowCollection, PagedDataSource pagedDataSource)
в System.Web.UI.WebControls.GridView. CreateChildControls(IEnumerable dataSource, Boolean dataBinding) в System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) в System.Web.UI.WebControls.GridV iew.PerformDataBinding(данные IEnumerable) в System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(данные IEnumerable) в System.Web.UI.WebControls.DataBoundControl.PerformSelect() в Microsoft.Crm.Application.Controls.Grid.UI. LayoutProviderGridList.RenderGridData (вывод HtmlTextWriter) в Microsoft.Crm.Application.Controls.Grid.UI.LayoutProvider.Render (вывод HtmlTextWriter) в Microsoft.Crm.Application.Controls.GridUIProvider.Render (выход HtmlTextWriter) в Microsoft.Crm.Core. Application.WebServices.AppGridWebServiceHandler.GetRefreshResponseHtml(IGridUIProvider uiProvider, StringBuilder sbTemp) в Microsoft.Crm.Core.Application.WebServices.AppGridWebServiceHandler.Refresh(String gridXml, StringBuilder sbXml, StringBuilder sbHtml, Boolean returnJsonData) в Microsoft.Crm.Core.Application. WebServices.AppGridWebServiceHandler.ProcessRequestInternal (контекст HttpContext)[XmlException: System.InvalidCastException: невозможно привести объект типа «System.DBNull» к типу «Microsoft.Xrm.Sdk.OptionSetValue». в Microsoft.Crm.Application.Controls.Grid.UI.PropertyTemplatePropertiesConfigurationColumn.BindData(WebControl parentControl, IRowDataSource rowData) в System.Web.UI.Control.DataBind(логическое значение raiseOnDataBinding) в System.Web.UI.Control.DataBindChildren() в System.Web.UI.Control.DataBind (логическое значение raiseOnDataBinding) в System.Web.UI.WebControls.GridView.CreateRow (Int32 rowIndex, Int32 dataSourceIndex, DataControlRowType rowType, DataControlRowState rowState, логическое значение dataBind, Object dataItem, DataControlField [] поля, TableRowCollection rows, PagedDataSource pagedDataSource)
в System.Web.UI.WebControls.GridView.CreateChildControls(IEnumerable dataSource, Boolean dataBinding) в System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) в System.Web.UI. WebControls.GridView.PerformDataBinding (данные IEnumerable) в System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback (IEnumerable data) в System.Web.UI.WebControls.DataBoundControl.PerformSelect() в Microsoft.Crm.Application.Controls.Grid.UI.LayoutProviderGridList.RenderGridData (вывод HtmlTextWriter) в Microsoft.Crm.Application.Controls.Grid.UI.LayoutProvider .Render (вывод HtmlTextWriter) в Microsoft.Crm.Application.Controls.GridUIProvider.Render (вывод HtmlTextWriter) в Microsoft.Crm.Core.Application.WebServices.AppGridWebServiceHandler.GetRefreshResponseHtml (IGridUIProvider uiProvider, StringBuilder sbTemp) в Microsoft.Crm.Core. Application.WebServices.AppGridWebServiceHandler.Refresh(String gridXml, StringBuilder sbXml, StringBuilder sbHtml, логическое значение returnJsonData) в Microsoft.Crm.Core.Application.WebServices.AppGridWebServiceHandler.ProcessRequestInternal(контекст HttpContext)] в Microsoft.Crm.Core.Application.WebServices. AppGridWebServiceHandler.ProcessRequestInternal (контекст HttpContext) в System.Web.HttpApplication.CallHandlerExecutionStep .System.Web.HttpApplication.IExecutionStep.Execute() в System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логическое значение и завершено синхронно)
Я совершенно сбит с толку, и помощь, которую вы, ребята, можете предложить, будет чрезвычайно оценена. Больше всего беспокоит то, что ни одно из полей, которые я извлекаю, не является набором опций, так что же здесь происходит? Спасибо.