MS Dynamics CRM 2011, получение элементов подсетки из другой формы

Я новичок в jscript, и у меня проблемы с получением всех элементов в подсетке. Я попробовал код с этого сайта,

Получить строки в подсетке crm2011 с помощью JScript

https://lakshmanindian.wordpress.com/2012/05/25/retrieve-subgrid-rows-in-crm-2011-using-jscript/

но получайте каждый раз сообщение об ошибке:

(Переведено)


Ошибка в пользовательском событии поля

Поле:окно

Событие: загрузка

Ошибка: Невозможно вызвать предпочтение «управление» неопределенной или нулевой ссылкой.


Последний код, который я пробовал:

var grid = document.getElementById("accountContactsGrid").control;
for (var rowNo = 0; rowNo<grid.getRecordsFromInnerGrid().length; rowNo++)
  for (var cellNo = 0; cellNo<grid.getRecordsFromInnerGrid()[rowNo][3].cells.length; cellNo++)
     alert(grid.getRecordsFromInnerGrid()[rowNo][3].cells[cellNo].outerText);

Я попробовал это в учетной записи объекта (компании) с подсеткой «accountContactsGrid».

Моей главной целью было бы поймать все назначенные элементы в форме учетной записи и перечислить их в форме контактов. Но только если активирована галочка «Эко».

Это мой рабочий код:

var chkEko = Xrm.Page.getAttribute("testcrm_ekonomi").getValue();
if (chkEko === true)
{
    alert("Eko active: " + chkEko);
}
else
{
    alert("Eko not active: " + chkEko);
}

person user3772108    schedule 31.03.2015    source источник
comment
Вы ищете что-то, как показано ниже? [Как написать это в jQuery «window.parent.document.getElementById('parentPrice').innerHTML»?][1] [Нацеливание на родительское окно с помощью jQuery][2] [1]: stackoverflow.com/questions/ 726816/ [2]: stackoverflow.com/questions/18372746/   -  person Renjith    schedule 01.04.2015
comment
Нет, извините, я ищу код Xrm (CRM), чтобы поймать элементы в сетке. Я должен использовать это, потому что мне нужно получить данные из другой формы. Насколько я понимаю, единственный способ получить элементы из других форм - это только Xrm.. способ.   -  person user3772108    schedule 01.04.2015
comment
Как насчет того, чтобы получить эти записи, сделать вызов с помощью oData или Fetch и получить все связанные сущности, связанные с вашей родительской сущностью?   -  person Sxntk    schedule 06.04.2015
comment
Но это похоже на обходной путь, а не на встроенное решение CRM. Это должно быть возможно с кодом CRM. Я имею в виду, что это первый раз, когда кто-то хочет делать такие вещи?   -  person user3772108    schedule 08.04.2015


Ответы (2)


Через некоторое время и с помощью некоторых потоков я смог получить информацию об этой сетке. Но теперь у меня проблема поймать элементы. Я посмотрел переменную «сетка» и обнаружил, что переменная является объектом. Поскольку я действительно не знаю свойств объектов, я попытался получить все это. Но похоже мой код не работает и я не могу понять почему. Вот код на данный момент:

function subgridItemCount() {

// Get the Subgrid Control
var grid = Xrm.Page.ui.controls.get('accountContactsGrid')._control;

var keys = Object.keys(grid);

var getKeys = function(obj){
    var keys = [];
    for(var key in obj){
        keys.push(key);
    }
    return keys;
}
    for(var i = 0; i<keys.length; i++) {
    document.write(keys[i]);    
    }
}

Сначала я хотел получить свойство объекта, а затем свойствоValue. Или есть другой способ получить все значения объекта?

person user3772108    schedule 03.04.2015

Кажется, я на неправильном пути. Вот что я пытаюсь сделать:

В форме учетной записи/компании есть существующая сетка, которая называется Контакты. В этом поле назначены некоторые Контакты (кнопка "добавить существующий контакт").

Теперь, когда я открываю какой-либо контакт, там должно быть поле/сетка/iframe со списком всех компаний, которым назначен этот контакт.

Этот список должен быть связан с компаниями (когда я нажимаю на них, CRM должен открывать форму).

Может быть, кто-нибудь может дать мне совет? Мой план состоял в том, чтобы сначала найти все компании, а затем сравнить назначенные контакты с открытым с помощью некоторого Jscript. Затем скрипт должен перечислить все соответствующие контакты в контактной форме.

Этот способ не очень эффективен, так как скрипт должен сначала прочитать все компании. Но я не знаю другого пути...

person user3772108    schedule 08.04.2015