2016-09-15 2 views
0

Учитывая этот код: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); 

Im призывающую эту .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 и Закон = 512 ??? что я считаю, что при редактировании?

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

ответ

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-адрес содержать несколько идентификаторов в одном и том же атрибуте. В этих случаях эти идентификаторы разделяются запятыми. Итак, если Id не определен, мы проверяем, есть ли в нем запятая. Если есть, мы берем 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); 

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

Шесть Клещей Поддержка

+0

Nice, но когда я пытаюсь сохранить изменения, которые она дает ошибку в строке 21: 'ошибка eWare.eWareBlockContainer '8000ffff' [Исключение директивы SafeCall]: Ошибка де SQL'. Строка 21 - это CRM.AddContent (Container.Execute()); ' –

+0

Что говорит SQL-журнал? –

+0

В данный момент не зафиксировано. Но я сделал это так: Когда экран находится в режиме редактирования, я просто распечатаю всю страницу Sage CRM с помощью CRM.GetPageNoFrameSet() и т. Д. Теперь, когда я нажимаю кнопку сохранения (я думаю, действие установлен на ту же страницу). 'Request.Form' dfined, поэтому экран находится в режиме сохранения, и только тогда есть i' SaveChanges() 'и закрывает всплывающее окно, перезагружает родительский wuindow и т. д. и т. д. (все без печати ничего). Здесь я не помещаю весь код, потому что пространство слишком маленькое –

Смежные вопросы