0

СИТУАЦИЯ: Привет У меня есть запрос, который хорошо работает & в соответствии с ожиданиями только на странице salesforce vf.Проблема Iframe: Salesforce не получает родителя в вложенном запросе SOQL

PROBLEM Он возвращает выходные данные без родительского объекта при вызове из iframe.

Код в вершине:

public class showServiceHistory { 
CKSW_BASE__Service__c services; 
String id = ApexPages.currentPage().getParameters().get('id'); 
String x; 
public myValues() 
{ 
    services = [SELECT id, name, (SELECT Name, Previous_Status__c, New_Status__c, Reason_Code__c, comment__c FROM Service_Status_History__r) FROM CKSW_BASE__Service__c WHERE id=:id];   
} 
public String getxx() 
{ 
    x=JSON.Serialize(services); 
    return x; 
} 
} 

Код в ФЖ

< apex:page controller="myValues" > 

< apex:pageBlock title="{!xx}" > 

</apex:pageBlock> 

</apex:page> 

Выход из Salesforce

{"attributes":{"type":"CKSW_BASE__Service__c","url":"/services/data/v38.0/sobjects/CKSW_BASE__Service__c/sss"},"Id":"s","Name":"S","Service_Status_History__r":{"totalSize":6,"done":true,"records":[{"attributes":{"type":"Service_Status_History__c","url":"/services/data/v38.0/sobjects/Service_Status_History__c/ss"},"Service__c":"asss","Id":"uu","Name":"yyy","Previous_Status__c":"xyz","New_Status__c":"y","Reason_Code__c":"xyz","Comment__c":"abc"}]}

И

Выход из фрейма

{ "атрибуты": { "типа": "CKSW_BASE__Service__c", "URL": "/ услуги/данные/v38.0/sobjects/CKSW_BASE__Service__c/444 "}," Id ":" 444" , "Имя": "А"}

на странице Vf я получаю желаемый результат с полной стоимостью, но из iframe в моем URL-адресе force.com родительский объект (вложенный запрос) недоступен.

Однако, когда я вызова только родитель с простыми посвященного запросом, он возвращает значение в как (IFrame и URL) мест.

ПОЧЕМУ МОЙ НЕИСПРАВНОСТЫЙ СОК НЕ МОЖЕТ ПОЛУЧИТЬ РОДИТЕЛЬНЫЙ ОБЪЕКТ. ЧТО Я ПРОЧИТАЛ ЗДЕСЬ?

Заранее спасибо. Пожалуйста, помогите.

Выход из Iframe

ответ

0

Вы проверили свои FLS?

Build -> Разработка -> Сайты -> -> Public Access Settings

Это является виновником в большинстве случаев на Force.com исход.

0

Да, я уже проверил, предоставил доступ общественности. И даже я могу видеть их при конвертировании и печати в формате JSON. Но я не могу видеть их в iframe, если они напечатаны с формой объекта синтаксического анализа.

Следовательно, это сработало для меня, отправив значения в формате строки Json и разобрав его там.

В Vf странице

<apex:page Controller="showServiceHistory" sidebar="false" showheader="false"> 
<html> 
    <head> 
    <!--<meta http-equiv="refresh" content="20" ></meta> --> 

</head> 
<a id="history_data" style="display:none;">{!history}</a> 
<a id="service_data" style="display:none">{!service}</a> 
<style> 
    table { 
     width: 100%; 
    } 

    table, 
    th, 
    td { 
     border-collapse: collapse; 
     color: #3088D0; 
    } 

    th, 
    td { 
     padding: 5px; 
     text-align: left; 
     color: #1F497D; 
    } 

    tr { 
     //color: #337AB7; 
    } 

    table#t01 tr:nth-child(even) { 
     background-color: #DCE6F1; 
     //color: #337AB7; 
    } 

    table#t01 tr:nth-child(odd) { 
     background-color: #fff; 
    } 

    table#t01 th { 
     background-color: #B8CCE4; 
     //color: #000015; 
    } 

    a:link { 
     color: #62B3E2; 
    } 

    a:visited { 
     color: #62B3E2; 
    } 
</style> 


<table id="t01"> 
    <thead> 
     <tr> 
      <th> 
       Name 
      </th> 

      <th> 
       Previous Status 
      </th> 
      <th> 
       New Status 
      </th> 
      <th> 
       Comment 
      </th> 
     </tr> 
    </thead> 
    <tbody id="show_values"> 
    </tbody> 

</table> 
<script> 
    function x() 
    { 
    var history={}; var service={}; 
    history=JSON.parse(document.getElementById("history_data").innerHTML); 
    service=JSON.parse(document.getElementById("service_data").innerHTML); 
    var show=''; 
     for(var i=0;i<history.length;i++) 
     { 
      show=show+'<tr><td>'+history[i].Name+'</td><td>'+history[i].Previous_Status__c+'</td><td>'+history[i].New_Status__c+'</td><td>'+history[i].Comment__c+'</td><td>'+service.CKSW_BASE__Location__c+'</td></tr>'; 
     } 
      document.getElementById("show_values").innerHTML=document.getElementById("show_values").innerHTML+show; 
    } 
    x(); 
</script> 
</html> 

В апекс кодовой страницы

public class showServiceHistory { 
List<Service_Status_History__c> histories; 
String x; 
CKSW_BASE__Service__c services; 
String id = ApexPages.currentPage().getParameters().get('id'); 
public showServiceHistory() 
{ 
    services = [SELECT CKSW_BASE__Resource__c, CKSW_BASE__Location__c, (SELECT Name, Previous_Status__c, New_Status__c, comment__c FROM Service_Status_History__r) FROM CKSW_BASE__Service__c WHERE id=:id];   
    histories = services.Service_Status_History__r; 
} 
public String getService() 
{ 
    return JSON.Serialize(services); 
} 
public String getHistory() 
{ 
    return JSON.Serialize(histories); 
} 

}

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

  • Нет связанных вопросов^_^