스크립팅: 첫 번째 및 후속 구성 확인 중
구성이 초기화 중인지 또는 재구성되는지 테스트하고 결과에 따라 실행할 코드를 설정할 수 있습니다.
때로는 구성을 초기화할 때나 재구성할 때만 코드를 실행해야 하는 경우도 있습니다. 예를 들어, 구성 시작 시 필드를 기본값으로 설정하고 나중에 편집할 때는 사용자의 선택 항목을 유지할 수 있습니다.
아래 메서드는 서로 간섭하지 않고 결합할 수 있으며 구성 가능한 제품에 대해 유연하고 고유한 코드 동작을 생성할 수 있습니다.
userEdited: 필드가 편집되지 않은 경우에만 실행 중
구성/재구성 시 보강에서 두 개의 필드 속성에 value 액세스할 수 있습니다. 및 userEdited. value 이 속성은 필드에 포함된 데이터를 보유하고 일반적으로 스크립팅 userEdited 시 액세스하는 데이터이지만 최종 사용자가 필드를 변경했는지 여부를 저장하는 부울 값을 포함합니다.
이는 사용자가 필드를 변경하지 않은 경우에만 기본값을 쓰는 if 문에서 사용할 수 있습니다. 예:
if (cfgRequest.[fieldVariableName].userEdited == false) {
//code to run
}
구성이 초기화되면 모든 필드의 속성이 userEdited 아니오로 설정되지만, 재구성 시 사용자가 변경한 내용에 따라 일부 필드가 예로 설정됩니다. 필드가 편집되었거나 편집되지 않은 경우에만 동작이 발생하도록 하려면 다음 검사 중 하나 후에 실행할 코드를 작성하십시오.
lineId 파트너 필드
또는 구성/재구성 시 보강 스크립트에서 한 번만 검사하고 Salesforce 통합을 수행하려는 경우, lineId 재구성 시 파트너 필드는 상위 구성 가능 제품 견적 라인의 Salesforce ID로만 채워집니다. 구성이 초기화될 때 채워지지 않습니다.
구성이 초기화될 때 CPQ 구성이 아직 저장되지 않았기 때문에 이 ID가 아직 존재하지 않기 때문입니다. 구성이 생성되고 견적 라인 편집기가 저장된 후 CPQ 에만 Salesforce에서 견적 라인이 생성됩니다. 따라서 파트너 필드가 lineId 있는 것을 볼 때 현재 세션이 새 구성이 아닌 재구성으로 인한 것임을 확신할 수 있습니다.
스크립트 작성자는 초기화 또는 재구성 시에만 실행해야 하는 모든 코드를 이 값에 대한 검사에 넣어 이러한 차이를 활용할 수 있습니다.
구성 시/재구성 보강에서 필드를 참조할 수 있는 방법은 다음과 같습니다.
cfgRequest.partner.quote.lineId.value;
구성이 초기화될 때만 동작이 발생해야 하는 경우 다음 검사를 추가할 수 있습니다.
if (cfgRequest.partner.quote.lineId.value == null) {
//code to run
return cfgRequest;
}
검사에 return cfgRequest; 라인을 추가하면 라인 ID를 검사한 후의 코드가 실행되지 않습니다.
마찬가지로 구성이 재구성된 경우에만 동작이 발생해야 하는 경우 역 검사를 추가합니다.
if (cfgRequest.partner.quote.lineId.value != null) {
//code to run
return cfgRequest;
}
파트너 필드에 대한 자세한 내용은 다음 문서를 참조하십시오 CPQ 필드, 시스템 필드 및 파트너 필드.
isInitial: 텍스트 필드 생성
Salesforce가 구성기의 엔트리포인트로 사용되는지 여부에 관계없이, 구별이 존재하도록 보장하는 또 다른 방법은 현재 구성이 초기화로 인한 것인지 재구성으로 인한 것인지 확인하는 필드를 만드는 것입니다.
변수 이름이 isInitial인 텍스트 필드를 생성합니다. 필드를 Blueprint와 연결합니다. 그런 다음, 구성/재구성 시 보강에서 다음 라인을 추가합니다.
if (cfgRequest.isInitial.value === "Yes" || cfgRequest.isInitial.value === "No") {
cfgRequest.isInitial.set("value","No");
}
else
{
c fgRequest.isInitial.set("value","Yes");
}
초기화 시 isInitial 필드는 비어 있습니다. 따라서 스크립트는 else 절에서 isInitial 값을 Yes로 설정합니다.
첫 번째 재구성에서 isInitial 은 예가 됩니다. 따라서 스크립트는 if 절에서 isInitial 값을 No로 설정합니다.
이후의 모든 재구성에서 isInitial 은 아니요가 되며 아니요로 유지됩니다.
이 방법은 전체 QLE를 저장할 필요가 없다는 추가 이점이 있습니다 초기화 또는 재구성을 구분하기 위해 SFDC에서. 이 메서드는 사용자가 구성기에 두 번째로 들어갈 때 즉시 감지합니다.
이 방법에는 특히 초기화 또는 재구성 시 규칙을 발생시키는 것과 같이 규칙에서 새 필드를 조건으로 참조하는 기능도 포함됩니다. 구성/재구성 시 스크립트에만 동작이 존재할 필요는 없습니다. 그러나 최종 사용자의 관점에서 유사한 구성 환경을 유지하려면 초기화와 재구성 간에 동작상 차이가 너무 많이 생기지 않도록 주의해야 합니다.