2017-12-05 3 views
0

작업 표 레코드의 모든 필드에 대해 변경 이벤트가 발생할 때 호출되는 작업 표 레코드에 적용된 다음 스크립트가 있습니다. 이것은 시체 필드에서 완벽하게 작동하지만 timegrid (Timesheet의 하위 요소) 안의 필드에서 실패합니다. 내가 할 일은 작업 표에 시간을 추가 할 때 사용자가 선택한 고객을 기반으로 사용자 정의 필드를 표시/숨기기 만하는 것입니다. 이벤트를 캡처하고 고객을 확인한 다음, 사실이면 다른 필드를 숨기려고합니다.SuiteScript를 통해 작업 표 격자에서 데이터 가져 오기

아래 예제는 isDisplay 함수를 테스트하기위한 출발점에 불과합니다. 이벤트가 발생한 모든 필드를 숨 깁니다. 시간 격자에서 고객을 변경하여 테스트 할 때 실제 고객 인 올바른 ID를 얻습니다.하지만 getField()를 호출하면 null이 반환됩니다. 그러나 body 필드 중 하나 (예 : 날짜)를 전달하면 getField()가 제대로 작동합니다.

예 :

define(['N/currentRecord'], function() { 

     function fieldChanged(context) { 
     //get reference to whichever field is changing and hide it... 
     var f = context.currentRecord.getField({fieldId: context.fieldId});  
     f.isDisplay = false; 
     } 

     return { 
      fieldChanged: fieldChanged 
     } 
    } 
); 

사람이 올바른 방향으로 날 지점 수 있습니까? 시간 그리드 필드에 도달해야하는 또 다른 방법이 있습니까? 나는 SuiteScript의 새로운 브랜드입니다.

+0

빠른 답변을 얻기 위해 어떤 상황에서 "긴급한"또는 다른 유사한 문구를 추가 할 수 있습니까?] (// meta.stackoverflow.com/q/326569) - 요약하면 자원 봉사자를 대처하는 이상적인 방법이 아니며, 아마도 답을 얻는 데 비생산적입니다. 이 질문을 귀하의 질문에 추가하지 마십시오. – halfer

답변

0

Record.getField(options)은 본문 필드를 반환합니다. 하위 목록 필드를 얻으려면 Record.getCurrentSublistField(options)이 필요합니다. Context.sublistId을 확인하여 변경된 필드가 하위 목록 필드인지 여부를 확인할 수 있습니다.

관련 문제