Помощник по настройке формы CRM 4.0 - PullRequest
1 голос
/ 23 ноября 2010

У меня проблемы с выполнением простых настроек с помощью javascript в помощнике по формам (MS CRM 4.0). То, чего я пытаюсь достичь, - это когда я открываю помощник по формам, чтобы он был выбран не так, как текущие (по умолчанию) в поиске.

Например, как на рисунке ниже, когда я выбираю Клиента, я хочу, чтобы мой выбор по умолчанию был «Контакт», а не Учетная запись текущей и по умолчанию.

alt text

Пока что для основного поиска (помощник по формам) мне удалось изменить фокус следующим образом:

crmForm.all.customer.SetFocus();

Но почему-то я не могу получить идентификатор другого взгляда. Я пытался выкопать его из HTML, но ничего, что я пытался, казалось, не сработало.

Я ценю любую помощь, статьи, документацию.

Спасибо!

1 Ответ

2 голосов
/ 23 ноября 2010

Это проще, чем я думал, хотя, конечно, Microsoft ничего не собиралась делать. Следующее предназначено для формы Инцидент, поэтому вам, возможно, придется настроить индексы списка выбора для фактической используемой формы.

В коде OnLoad вашей формы поместите следующую функцию (часть window. важна, чтобы функция не выходила из области действия, когда код OnLoad завершен):

window.setFormAssistantPicklist = function()
{
    var plMain = document.getElementById("ContextSelect");
    if ((plMain) && (1 == plMain.selectedIndex))
    {
        var plSub = document.getElementById("selObjects");
        if (plSub)
        {
            plSub.selectedIndex = 1;
            plSub.fireEvent("onchange");
        }
        else
        {
            setTimeout(setFormAssistantPicklist, 1000);
        }
    }
};

Это будет проверять, выбрано ли «Клиент» и загружена ли нижняя панель помощника по формам, «Клиент», и если это так, выберите «Контакт» во втором списке выбора и запустите событие OnChange. Если второй список выбора не может быть найден, нижняя панель все еще загружается (я не уверен, есть ли способ перехватить событие OnReadyStateChange этого вызова загрузки, что, конечно, будет более элегантным), и мы проверим его снова секунду спустя.

Теперь нам нужно убедиться, что этот код вызывается при изменении выбора в верхнем списке выбора. Это также входит в ваш код OnLoad:

var pl = document.getElementById("ContextSelect");
if (pl)
{
    pl.onchange = function ()
    {
        RelatedInformationPane.LoadContextData(); // this is the standard OnChange code of the lookup selection picklist
        setFormAssistantPicklist();
    }
}

Это приведет к загрузке нижней панели, после чего будут выполнены проверки в setFormAssistantPicklist() и, возможно, соответствующий список выбора.

...