Ошибка при использовании addCustomView в CRM 2016

В CRM есть два объекта: "Контакты" и пользовательский объект, называемый "Сервисы", которые связаны отношением "многие ко многим". В отдельной форме, в сущности "Сервисная деятельность", есть поле обслуживания и поле контакта. Моя цель - отфильтровать поле контакта с выбранным сервисом, но только если поле сервиса заполнено. Если он заполнен, я хочу добавить настраиваемое представление в поле контакта, которое показывает только контакты, которые связаны с указанной служебной записью. В противном случае в поле контактов отображается только представление по умолчанию.

Вот мой код:

function filtroRecurso()
{
    var servicioEd = Xrm.Page.data.entity.attributes.get("new_servicio");
    if (servicioEd.getValue() != null)
        {
            var serviceId  = servicioEd.getValue()[0].id;
            var serviceName = servicioEd.getValue()[0].name;
            var viewId = "{00000000-0000-0000-0000-000000000001}";
            var entityName = "contact";
            var viewDisplayName = "Custom View";
            var fetchXml;

            fetchXml = "<fetchxml>" +  
                "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'>" + 
                "<entity name='contact'>" + 
                "<attribute name='fullname' />" + 
                "<attribute name='new_contacttype' />" + 
                "<attribute name='telephone1' />" + 
                "<attribute name='new_prepacademico' />" + 
                "<attribute name='new_municipio' />" + 
                "<attribute name='new_modalidades' />" + 
                "<attribute name='emailaddress1' />" + 
                "<attribute name='address1_line2' />" +
                "<attribute name='address1_line1' />" + 
                "<attribute name='contactid' />" + 
                "<order attribute='fullname' descending='false' />" + 
                "<filter type='and'>" + 
                "<condition attribute='statecode' operator='eq' value='0' />" + 
                "<condition attribute='new_contacttype' operator='eq' value='100000019' />" + 
                "</filter>" + 
                "<link-entity name='connection' from='record1id' to='contactid' alias='ab'>" + 
                "<filter type='and'>" + 
                "<condition attribute='record2id' operator='eq' value='" + serviceId + "' />" + 
                "</filter>" + 
                "</link-entity>" + 
                "</entity>" + 
                "</fetch>" + 
                "</fetchxml>";

            var layoutXml = "<layoutxml>" + 
                "<grid name='resultset' object='2' jump='fullname' select='1' preview='1' icon='1'>" + 
                "<row name='result' id='contactid'>" + 
                "<cell name='fullname' width='150' />" + 
                "<cell name='new_contacttype' width='100' />" + 
                "<cell name='new_prepacademico' width='100' />" + 
                "<cell name='new_modalidades' width='100' />" + 
                "<cell name='telephone1' width='100' />" + 
                "<cell name='emailaddress1' width='150' />" + 
                "<cell name='address1_line1' width='150' />" + 
                "<cell name='address1_line2' width='150' />" + 
                "<cell name='new_municipio' width='100' />" +
                "</row>" +
                "</grid>" + 
                "</layoutxml>";

            Xrm.Page.getControl("new_maestros").addCustomView(viewId, entityName, viewDisplayName, fetchXml, layoutXml, true);
        }
}

Я извлек fetchXml и layoutXml с помощью сохраненных запросов из пользовательского представления, которое я создал. В представлении я отфильтровал по определенной записи Службы, чтобы проверить, будет ли она возвращать правильные записи Контакта, что он и сделал, но в своем коде я заменяю определенное имя и идентификатор Службы на имя и идентификатор, извлеченные из записи, указанной в поле обслуживания, которое находится в форме.

Когда сервисное поле пусто, поле контактов установлено на вид по умолчанию. Но если поле службы заполнено, форма возвращает ошибку при попытке выбрать запись контакта. Это не помогает, что ошибка является общим "ошибка произошла", который не предлагает никакой информации.

Мой код неверен или моя цель недостижима?

1 ответ

Решение

Вот как должен работать ваш выбор

<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'>  
    <entity name='contact'>  
        <attribute name='fullname' />  
        <attribute name='new_contacttype' />  
        <attribute name='telephone1' />  
        <attribute name='new_prepacademico' />  
        <attribute name='new_municipio' />  
        <attribute name='new_modalidades' />  
        <attribute name='emailaddress1' />  
        <attribute name='address1_line2' /> 
        <attribute name='address1_line1' />  
        <attribute name='contactid' />  
        <order attribute='fullname' descending='false' />
        <filter type='and'>
            <condition attribute='statecode' operator='eq' value='0' />
            <condition attribute='new_contacttype' operator='eq' value='100000019' />
        </filter>
        <link-entity name='connection' from='record1id' to='contactid' alias='ab'>
            <filter type='and'>
                <condition attribute='record2id' operator='eq' value='YourGUID' />
            </filter>
        </link-entity>
    </entity>
</fetch>

Мы удаляем <fetchxml> а также </fetchxml>, сравнивая uiname='" + serviceName + "' uitype='new_services' а также "<attribute name='contactid' />" был дубликат

Другие вопросы по тегам