AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.09.2013, 11:30   #1  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
SetParameter не работает?
Добрый день, коллеги!

Есть задача: фильтровать записи в SubGrid в зависимости от значения поля с типом набор параметров.

Проблема на финальной стадии, когда я пытаюсь установить setParameter мне выдает что объект не поддерживает свойство или метод или не удалось получить свойство "SetParameter" ссылки, значение которой не определено или является NULL.

Вот сам код:

Цитата:

function filterSubGrid() {

//var accountsGrid = document.getElementById("new_dogovorGrid"); //grid to filter

var Casko = 100000001;
var Osago = 100000000;
var reguestGrid =Xrm.Page.ui.controls.get('new_dogovorGrid')._control;
debugger;
if (reguestGrid == null) { //make sure the grid has loaded
setTimeout(function () { updateSubGrid(); }, 2000); //if the grid hasn’t loaded run this again when it has
return;
}

var accountValue = Xrm.Page.getAttribute("new_account").getValue(); //field to filter by
var ProductValue = Xrm.Page.getAttribute("new_insurance_product").getValue(); //field to filter by

var accountId = "00000000-0000-0000-0000-000000000000"; //if filter field is null display nothing

if (accountValue != null && (ProductValue == Casko || ProductValue == Osago)) {
var accountId = accountValue[0].id;
}

//fetch xml code which will retrieve all the accounts related to the contact
var fetchXml = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" +
" <entity name='new_request'>" +
" <attribute name='new_requestid' />" +
" <attribute name='new_insurance_product' />" +
" <attribute name='new_insuransepayment' />" +
" <attribute name='new_total_limit' />" +
" <attribute name='new_client_account' />" +
" <order attribute='new_insurance_product' descending='false' />" +
" <filter type='and'>" +
" <condition attribute='new_client_account' operator='eq' uitype='account' value='" + accountId + "' />" +
" <condition attribute='new_insurance_product' operator='eq' value='" + ProductValue + "'/>" +
" <condition attribute='new_stage' operator='eq' value='100000006' />" +
" <condition attribute='new_result' operator='eq' value='1' /> " +
" </filter>" +
" </entity>" +
"</fetch>";


если пишу так - то объект не поддерживает свойство или метод
reguestGrid.setParameter("fetchXml", fetchXml); -

reguestGrid.refresh(); //refresh the sub grid using the new fetch xml


если пишу так - то не удалось получить свойство "SetParameter" ссылки, значение которой не определено или является NULL.

// reguestGrid.control.SetParameter("fetchXml", fetchXml); //set the fetch xml to the sub grid

// reguestGrid.control.refresh(); //refresh the sub grid using the new fetch xml
}
Старый 23.09.2013, 17:43   #2  
spectr is offline
spectr
Участник
Аватар для spectr
MCBMSS
Лучший по профессии 2014
 
287 / 70 (3) ++++
Регистрация: 19.10.2011
Адрес: Киев
поле UR12 они переименовали метод с SetParameter на setParameter или на оборот точно не помню.
Но нужно писать точно reguestGrid.control.setParameter
А для поддержки нескольких ролапов нужно писать так:
Код:
if (typeof  reguestGrid.control.setParameter != "undefined"){
 reguestGrid.control.setParameter("fetchXml", fetchXml);
}
if (typeof  reguestGrid.control.SetParameter != "undefined"){
 reguestGrid.control.SetParameter("fetchXml", fetchXml);
}
Старый 23.09.2013, 21:22   #3  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Этот код не работает, ошибка осталась. Я сети я находил подобный код.
Переименовалась с setParameter на setParameter.

Может еще кто-то подкинет идеи?

Цитата:
Сообщение от spectr Посмотреть сообщение
поле UR12 они переименовали метод с сна setParameter или на оборот точно не помню.
Но нужно писать точно reguestGrid.control.setParameter
А для поддержки нескольких ролапов нужно писать так:
Код:
if (typeof  reguestGrid.control.setParameter != "undefined"){
 reguestGrid.control.setParameter("fetchXml", fetchXml);
}
if (typeof  reguestGrid.control.SetParameter != "undefined"){
 reguestGrid.control.SetParameter("fetchXml", fetchXml);
}
Старый 23.09.2013, 22:21   #4  
Konstantin Katsovich is offline
Konstantin Katsovich
Участник
Аватар для Konstantin Katsovich
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
243 / 57 (2) ++++
Регистрация: 22.10.2008
Адрес: Israel
У меня вот такой код работает на 12,13 ролапе
Код:
var Interval = null;

function OnLoadForm() {
    var fetchXml = 'YOUR FETCH';
    ChangeFetch("YOUR SUBGRID NAME", fetchXml);
}

function ChangeFetch(sGridName, fetchXML) {
    Init();
    function Init() {
        Interval = setInterval(function () {
            var grid = document.getElementById(sGridName);
            if (grid != null && typeof grid.control != 'undefined' && grid.control != null) {
                clearInterval(Interval);
                try {
                    grid.control.SetParameter("fetchXml", fetchXML);
                    grid.control.refresh();
                }
                catch (e) { }
            }
        }, 300);
    }
}
У вас сабгрид на форме где находится в табе? секции? в открытом? закрытом?
Он первый на форме?
__________________
Читайте SDK!!!
Старый 24.09.2013, 11:23   #5  
spectr is offline
spectr
Участник
Аватар для spectr
MCBMSS
Лучший по профессии 2014
 
287 / 70 (3) ++++
Регистрация: 19.10.2011
Адрес: Киев
Цитата:
Этот код не работает, ошибка осталась. Я сети я находил подобный код.
потому что вы использовать такое:
Цитата:
var reguestGrid =Xrm.Page.ui.controls.get('new_dogovorGrid')._control;
А нужно:
Код:
var reguestGrid = document.getElementById("new_dogovorGrid");
....
if (typeof  reguestGrid.control.setParameter != "undefined"){
 reguestGrid.control.setParameter("fetchXml", fetchXml);
}
if (typeof  reguestGrid.control.SetParameter != "undefined"){
 reguestGrid.control.SetParameter("fetchXml", fetchXml);
}
И проверка на готовность грида не коректна
Вместо:
Цитата:
if (reguestGrid == null) { //make sure the grid has loaded
setTimeout(function () { updateSubGrid(); }, 2000); //if the grid hasn’t loaded run this again when it has
return;
}
Нужно: (примитив)
Код:
if (reguestGrid != null)
	{
		if (reguestGrid .readyState != "complete")
		{
			setTimeout(updateSubGrid, 1000);
			return;
		}
	}
	else
	{
		setTimeout(updateSubGrid, 1000);
		return;
	}
или как у Konstantin Katsovich:
Код:
if (grid != null && typeof grid.control != 'undefined' && grid.control != null)

Последний раз редактировалось spectr; 24.09.2013 в 11:30.
Старый 24.09.2013, 18:35   #6  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Я код переписал, мне не ясно почему если пишу так, то переменная содержит значение reguestGrid {...} Object, (FormUIControl)


Цитата:
var reguestGrid =Xrm.Page.ui.controls.get('new_dogovorGrid')._control;


А переменная reguestGrid = undefined, когда пишу таким образом document.getElementById("new_dogovorGrid") = [Object, HTMLDivElement]

Цитата:
var reguestGrid = document.getElementById("new_dogovorGrid")


Цитата:

function filterSubGrid() {


var Casko = 100000001;
var Osago = 100000000;

var reguestGrid =Xrm.Page.ui.controls.get('new_dogovorGrid')._control;

var reguestGrid1 = document.getElementById("new_dogovorGrid");

debugger;

if (reguestGrid != null)
{
if (reguestGrid .readyState != "complete")
{
setTimeout(filterSubGrid, 1000);
return;
}
}
else
{
setTimeout(filterSubGrid, 1000);
return;
}

var accountValue = Xrm.Page.getAttribute("new_account").getValue(); //field to filter by
var ProductValue = Xrm.Page.getAttribute("new_insurance_product").getValue(); //field to filter by

var accountId = "00000000-0000-0000-0000-000000000000"; //if filter field is null display nothing

if (accountValue != null && (ProductValue == Casko || ProductValue == Osago)) {
var accountId = accountValue[0].id;
}

//fetch xml code which will retrieve all the accounts related to the contact
var fetchXml = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" +
" <entity name='new_request'>" +
" <attribute name='new_requestid' />" +
" <attribute name='new_insurance_product' />" +
" <attribute name='new_insuransepayment' />" +
" <attribute name='new_total_limit' />" +
" <attribute name='new_client_account' />" +
" <order attribute='new_insurance_product' descending='false' />" +
" <filter type='and'>" +
" <condition attribute='new_client_account' operator='eq' uitype='account' value='" + accountId + "' />" +
" <condition attribute='new_insurance_product' operator='eq' value='" + ProductValue + "'/>" +
" <condition attribute='new_stage' operator='eq' value='100000006' />" +
" <condition attribute='new_result' operator='eq' value='1' /> " +
" </filter>" +
" </entity>" +
"</fetch>";

if (typeof reguestGrid.control.setParameter != "undefined"){
reguestGrid.control.setParameter("fetchXml", fetchXml);
}

if (typeof reguestGrid.control.SetParameter != "undefined"){
reguestGrid.control.SetParameter("fetchXml", fetchXml);

}

}
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Не работает простой отчет. Dzam Dynamics CRM: Разработка 4 20.10.2015 11:46
axforum blogs: Правила поиска дубликатов (Duplicate Detection Rules) CRM 2011. Как это работает и почему правила иногда автоматически становятся черновиками? Blog bot Dynamics CRM: Blogs 0 11.03.2013 20:11
Не работает фильтрация по сроку в действиях DimaV Dynamics CRM: Функционал 9 29.04.2010 06:48
CRM Deployment Manager. User manager не работает kras Dynamics CRM: Администрирование 18 05.12.2006 17:34
CRM очень медленно работает... CRM30 Dynamics CRM: Администрирование 12 26.07.2006 18:01
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 07:46.