page no.
📖 이 문서에서 다루는 내용
i-AUD 의 JScript 에서 ServerScript 를 호출하는 두 가지 API - RunScript 와 RunScriptEx 의 사용법을 설명합니다.
이럴 때 이 문서를 읽어보세요:
| RunScript | RunScriptEx | |
|---|---|---|
| 파라미터 전달 | ❌ 불가능 | ✅ params 객체로 전달 |
| 사용 시기 | 전달할 파라미터가 없거나 전역 파라미터만 사용 시 | 검색 조건, 처리 대상 등 추가 값을 서버에 넘길 때 |
특별한 이유가 없다면 RunScriptEx 를 사용하세요. 파라미터가 없을 때는 빈 객체 {} 를 넘기면 됩니다. 나중에 파라미터를 추가해야 할 때 메서드 변경 없이 확장 가능합니다. |
// 파라미터 없이 호출
Matrix.RunScript(gridNames, scriptName, function(p) {
if(p.Success == false){
Matrix.Alert(p.Message);
return
}
var ds = p.DataSet;
});
//파라미터와 함께 호출
Matrix.RunScriptEx("GridName", "ServiceName",{"VS_CODE":"codevalue","VS_NAME":"name value"}, function(p) {
if(p.Success == false){
Matrix.Alert(p.Message);
return
}
var ds = p.DataSet;
}); |
파라미터 요약
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| gridNames | string | string[] | ✅ | 서버로 전송할 그리드 이름 ( 없으면 "" ) |
| scriptName | string | ✅ | 실행할 서버 스크립트 이름 |
| params | object | RunScriptEx만 | 서버에 전달할 파라미터 |
| callBack | function | ✅ | 서버 응답 처리 콜백 |
scriptName 은 어떤 서버스크립트를 실행할지 지정합니다. 세 가지 형식이 있습니다.
|
DataGrid에서 변경된 데이터를 서버로 함께 넘길 때 지정합니다.. 전송할 데이터가 없으면 빈 문자열 ("") 을 사용합니다.
서버 스크립트에서는 req.getDataTable("그리드명") 으로 전달된 데이터를 가져와서 사용합니다. |
// 그리드 사용 안함
Matrix.RunScriptEx("", "doSearch", params, callBack);
// 단일 그리드
Matrix.RunScriptEx("GRD_EMPLOYEE", "doSave", params, callBack);
// 복수 그리드 (콤마 구분 또는 배열)
Matrix.RunScriptEx("GRD_MASTER,GRD_DETAIL", "doSave", params, callBack);
Matrix.RunScriptEx(["GRD_MASTER", "GRD_DETAIL"], "doSave", params, callBack); |
var params = {
VS_DEPT_CODE: "D001",
VN_YEAR: 2025,
VS_FROM_DATE: "2025-01-01",
VS_TO_DATE: "2025-12-31"
};
Matrix.RunScriptEx("", "doSearch", params, function(p) {
if(p.Success == false){
Matrix.Alert(p.Message);
return
}
var ds = p.DataSet;
}); |
var req = Matrix.getRequest();
var vsDeptCode = req.getParam("VS_DEPT_CODE"); // → "D001"
var vnYear = req.getParam("VN_YEAR"); // → "2025" |
| 속성 | 타입 | 설명 |
|---|---|---|
| p.Success | boolean | ✅/❌ 서버 처리 성공 여부 |
| p.Message | string | 💬 실패 시 오류 메시지 |
| p.DataSet | DataSet | 📦 서버에서 반환한 데이터셋 |
여러 보고서에서 동일하게 필요한 로직(메일 발송, 파일 업로드, 사용자 검증 등)을 하나의 전용 보고서에 모아두고 '@보고서코드@스크립트명' 으로 호출하는 방식입니다.
[공통 서비스 보고서 RPT_COMMON] ServerScript/ @SEND_MAIL.ts ← 이름이 @로 시작 → 서버에 @SEND_MAIL.jsx로 저장 [업무 보고서 RPT_EMP_MGMT] |
같은 보고서 또는 다른 위치의 스크립트를 현재 스크립트에 인라인으로 포함합니다.
|
❓ 자주 묻는 질문 (FAQ)
가장 간단한 방법은 i-AUD 디자이너에서 파일 다이얼로그를 열고, 헤더 영역에서 마우스 오른쪽 버튼을 클릭한 후 ‘코드’ 옵션을 활성화하여 확인하는 것입니다.
|
다음 순서로 점검해보세요: 1. ✅ scriptName 오타 확인 (보고서 코드나 스크립트명 불일치) 2. 🚀 공통 스크립트 보고서가 서버에 배포되어 있는지 확인 3. 🔍 서버 스크립트에서 예외 발생 → AUD.log 확인 4. 🔑 |
서버에서 Matrix.ThrowException("메시지") 를 호출하면 콜백의 p.Success === false, p.Message 에 내용이 전달됩니다.
|
getParam() 은 항상 문자열을 반환하므로, 복잡한 타입은 JSON.stringify 로 직렬화해서 넘기고 서버에서 파싱합니다.
|
Matrix.WriteLog() 를 사용합니다. 서버 로그 파일에 기록됩니다.
|
🔗 관련 문서
👉🏻 [i-AUD] 서버 스크립트 호출 시 파라미터를 함께 등록하는 API가 추가되었습니다. 👉🏻 4-9. i-AUD 보고서 세션 변수, 전역 변수 사용방법 👉🏻 Log Viewer 👉🏻 사용자별 로그 분리 |
|