Sage CRM - загрузка экрана с данными объекта?

Учитывая этот код:

var Container = CRM.GetBlock("Container");
    var CustomCommunicationDetailBox = CRM.GetBlock("CustomCommunicationDetailBox");
    Container.AddBlock(CustomCommunicationDetailBox);

    if(!Defined(Request.Form)){
        CRM.Mode=Edit;
    }else{
            CRM.Mode=Save;
        }

    CRM.AddContent(Container.Execute());
    var sHTML=CRM.GetPageNoFrameset();
    Response.Write(sHTML);

Я называю эту страницу.asp с этими параметрами, но, кажется, не работает

popupscreeens.asp?SID=33185868154102&Key0=1&Key1=68&Key2=82&J=syncromurano%2Ftabs%2FCompany%2FCalendarioCitas%2Fcalendariocitas.asp&T=Company&Capt=Calendario%2Bcitas&CLk=T&PopupWin=Y&Key6=1443Act=512

Обратите внимание на Key6=Comm_Id и Act=512??? что я считаю, что это при редактировании?

Как я могу достичь, чтобы заполнить поле экрана с лицом дада? В данном случае это объект связи

1 ответ

Решение

Чтобы заполнить пользовательский экран данными, вам необходимо передать данные на экран.

Во-первых, вам нужно получить значение Id. В этом случае мы получаем его с URL:

var CommId = Request.QueryString("Key6") + '';

Мы собираемся поставить еще несколько проверок. Они предназначены главным образом для обработки сценариев, которые возникли в разных версиях или от разных действий пользователя.

// check we have a value and get the Id from context if we don't
if(CommId == 'undefined'){
    CommId = CRM.GetContextInfo("Communication","comm_communicationid");
}
// if CommId is still undefined, set it to zero to check later
// otherwise, make sure the URL only contains one CommId
if(CommId == 'undefined'){
    CommId = 0;
} else if(CommId.indexOf(",") > -1){
    CommId = CommId.substr(0,CommId.indexOf(","));
}

Определенные действия пользователя могут заставить URL-адрес содержать несколько идентификаторов в одном атрибуте. В этих случаях эти идентификаторы разделяются запятыми. Итак, если идентификатор не определен, мы проверяем, есть ли в нем запятая. Если есть, мы берем 1-й идентификатор.

После того, как у нас есть идентификатор, нам нужно загрузить запись. К этому моменту вы уже должны были проверить, что у вас есть действительный идентификатор (например, не ноль), и включить некоторую обработку ошибок. На некоторых страницах вы можете захотеть отобразить ошибку, на других вы можете захотеть создать новую пустую запись. Это получает запись:

var CommRecord = CRM.FindRecord("communication","comm_communicationid = " + CommId);

После этого вам нужно применить запись к экрану. Используя ваш пример выше:

CustomCommunicationDetailBox.ArgObj = CommRecord;

Добавив все это в ваш скрипт, вы получите:

var CommId = Request.QueryString("Key6") + '';

// check we have a value and get the Id from context if we don't
if(CommId == 'undefined'){
    CommId = CRM.GetContextInfo("Communication","comm_communicationid");
}

// if CommId is still undefined, set it to zero to check later
// otherwise, make sure the URL only contains one CommId
if(CommId == 'undefined'){
    CommId = 0;
} else if(CommId.indexOf(",") > -1){
    CommId = CommId.substr(0,CommId.indexOf(","));
}

// add some error checking here

// get the communication record
var CommRecord = CRM.FindRecord("communication","comm_communicationid = " + CommId);

// get the container and the detail box
var Container = CRM.GetBlock("Container");
var CustomCommunicationDetailBox = CRM.GetBlock("CustomCommunicationDetailBox");

// apply the communication record to the detail box
CustomCommunicationDetailBox.ArgObj = CommRecord;

// add the box to the container
Container.AddBlock(CustomCommunicationDetailBox);

// set the moder
if(!Defined(Request.Form)){
    CRM.Mode=Edit;
} else {
    CRM.Mode=Save;
}

// output
CRM.AddContent(Container.Execute());
var sHTML=CRM.GetPageNoFrameset();
Response.Write(sHTML);

Однако мы бы посоветовали добавить больше обработки ошибок / исключений. Если пользователь сохраняет запись, вам также необходимо добавить перенаправление после того, как страница написана.

"Six Ticks" - поддержка

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