page no.
| Showpageid |
|---|
1 개요
Bulk Editor 는 여러 보고서의 설정, SQL, 스크립트를 한 번에 변경할 수 있는 관리자 도구입니다.
변경 내용을 실제로 적용하기 전에 미리 확인(Dry-Run) 할 수 있으며, 변경 시 원본 보고서를 자동으로 백업합니다.
필요한 경우 작업 단위로 변경 전 상태로 되돌릴 수 있습니다.
컬럼 정렬 통일, Connection Code 교체, 테이블명 변경처럼 여러 보고서에 동일한 변경 사항을 일괄 적용해야 하는 경우에 사용할 수 있습니다.
Bulk Editor 의 작업은 다음 순서로 진행합니다.
변경 및 복원
Bulk Editor 는 보고서를 변경하기 전에 결과를 미리 확인할 수 있으며, 실제 저장 시 원본 보고서를 자동으로 백업합니다.
| 기능 | 설명 |
|---|---|
| 미리 확인(Dry-Run) | 보고서를 저장하지 않고 변경될 내용만 확인합니다. 여러 번 실행해도 원본 보고서는 변경되지 않습니다. |
| 스크립트 검사 | 실행 전에 변환 스크립트의 오류를 확인합니다. |
| 자동 백업 | 변경 내용을 저장하기 전에 원본 보고서를 자동으로 백업합니다. |
| 변경 충돌 확인 | 작업 중 다른 사용자가 같은 보고서를 수정한 경우 저장하지 않고 해당 보고서를 오류로 표시합니다. |
| 되돌리기 | 마지막으로 저장한 작업을 메인 화면에서 변경 전 상태로 되돌릴 수 있습니다. |
| 복원 시 백업 | 되돌리기를 실행할 때 현재 상태도 자동으로 백업하여 필요한 경우 복원 이전 상태로 다시 되돌릴 수 있습니다. |
| 경고 | ||||
|---|---|---|---|---|
| ||||
[실행(저장)] 을 선택하면 서버에 저장된 원본 보고서에 변경 내용이 적용됩니다. 운영 중인 보고서를 변경하는 경우에는 먼저 Dry-Run 으로 변경 내용을 확인하세요. 여러 보고서를 일괄 변경할 때에는 일부 보고서를 대상으로 먼저 실행하여 결과를 확인한 후 적용 범위를 넓히는 것을 권장합니다. |
2 빠른 시작
Bulk Editor 는 다음 순서로 사용할 수 있습니다.
- 대상 선택 을 선택하여 변경할 보고서를 체크한 후 선택 추가 를 선택합니다.
- ② 변환 스크립트 영역에 transform(doc) 함수를 작성합니다. 처음 사용하는 경우 예제 에서 원하는 작업과 유사한 예제를 불러온 후 필요한 부분을 수정하는 것을 권장합니다.
- Dry-Run(저장 안 함) 을 선택하여 변경 내용을 미리 확인합니다. ③ 실행 결과 에서 보고서별 변경 전·후 내용을 확인할 수 있습니다.
- 변경 내용이 올바른지 확인한 후 ⚠ 실행 (저장) 을 선택하여 실제 보고서에 적용합니다.
- 적용한 내용을 되돌리려면 ↺ 방금 작업 되돌리기 를 사용합니다. 이전 작업의 백업을 확인하거나 복원하려면 백업 / 복원 을 사용합니다.
| 정보 | ||||
|---|---|---|---|---|
| ||||
먼저 보고서 1건을 대상으로 대상 선택 →Dry-Run → 실행 → 되돌리기 까지 진행해 보는 것을 권장합니다. 작업 결과와 복원 방법을 확인한 후 여러 보고서에 적용하세요. |
3 메인 화면
메인 화면에서는 작업 대상을 선택하고 변환 스크립트를 작성한 후, 변경 내용을 미리 확인하거나 실제 보고서에 적용할 수 있습니다.
📌 화면 구성
3.1 상단 도구 모음
상단 도구 모음에서는 Bulk Editor 의 주요 기능을 실행할 수 있습니다.
| 버튼 | 설명 |
|---|---|
| 도움말 | 변환 스크립트 작성 방법과 사용 예제를 확인합니다. |
| 백업 / 복원 | 이전 작업의 백업 내역을 확인하거나 보고서를 변경 전 상태로 복원합니다. |
| JSON 비교 | 변경 전·후 JSON을 비교하여 변환 스크립트를 생성합니다. |
| Dry-Run(저장 안 함) | 보고서를 저장하지 않고 변환 스크립트를 실행하여 변경될 내용을 확인합니다. |
| ⚠실행(저장) | 변경 내용을 확인한 후 원본 보고서를 백업하고 실제 보고서에 저장합니다. |
「대상 선택」, 「대상 비우기」는 상단 도구 모음이 아닌 ① 작업 대상 영역에서 사용할 수 있습니다.
3.2 작업 단계
화면 상단에는 현재 작업 진행 상태를 확인할 수 있도록 ①~④ 단계가 표시됩니다.
| 단계 | 설명 |
|---|---|
| ① 대상 선택 | 작업할 보고서를 선택한 상태 |
| ② 변환 스크립트 | 변환 스크립트가 작성된 상태 |
| ③ Dry-Run 검증 | 현재 선택한 보고서와 변환 스크립트로 Dry-Run을 완료한 상태 |
| ④ 실행 (저장) | 현재 선택한 보고서에 변경 내용을 저장한 상태 |
| 정보 | ||||
|---|---|---|---|---|
| ||||
Dry-Run 이후 작업 대상을 변경하거나 변환 스크립트를 수정하면 ③ Dry-Run 검증과 ④ 실행 (저장) 상태가 초기화됩니다. 변경된 내용으로 다시 Dry-Run을 실행하여 결과를 확인하세요. |
3.3 작업 대상
① 작업 대상 영역에서는 Bulk Editor로 변경할 보고서를 확인하고 선택할 수 있습니다.
| 항목 | 설명 |
|---|---|
| 선택 | 체크한 보고서만 Dry-Run 및 실행 대상에 포함됩니다. 보고서를 처음 추가하면 자동으로 선택되며, 저장이 완료된 보고서는 선택이 자동으로 해제됩니다. |
| 보고서 명 | 작업 대상 보고서의 이름을 표시합니다. |
| 상태 | 보고서별 처리 상태를 표시합니다. |
| 🔍 문서 구조 보기 | 해당 보고서의 문서 구조를 확인합니다. |
| 🎨 디자이너 실행 | 해당 보고서를 i-AUD Designer에서 엽니다. |
보고서의 처리 상태는 다음과 같이 표시됩니다.
| 상태 | 설명 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| 아직 작업을 실행하지 않은 상태 | ||||||||
| 작업을 실행하고 있는 상태 | ||||||||
| 변환 스크립트를 실행했지만 변경되는 내용이 없는 상태 | ||||||||
| Dry-Run 결과 변경될 내용이 확인된 상태 | ||||||||
| 변경 내용이 정상적으로 저장된 상태 | ||||||||
| 변환 스크립트 실행 중 오류가 발생한 상태 | ||||||||
| 변경 내용을 보고서에 저장하지 못한 상태 |
작업 대상 영역 상단에는 전체 보고서 수와 현재 선택된 보고서 수가 표시됩니다.
등록된 작업 대상이 없는 경우에는 +대상 선택 을 선택하여 보고서를 추가할 수 있습니다.
| 정보 | ||||
|---|---|---|---|---|
| ||||
보고서 목록에서 항목을 마우스 오른쪽 버튼으로 클릭하면 「디자이너 실행」, 「문서 구조 보기」 기능을 사용할 수 있습니다. |
4 작업 대상 선택
대상 선택 을 선택하면 폴더와 보고서 목록을 확인할 수 있는 팝업이 열립니다.
- 왼쪽 폴더 영역에서 작업할 폴더를 선택합니다.
- 선택한 폴더에 포함된 보고서가 오른쪽 목록에 표시됩니다.
- 필요한 경우 검색창에 보고서명 또는 보고서 코드를 입력하여 목록을 검색합니다.
- 작업 대상으로 추가할 보고서를 체크합니다.
- 선택 N건 추가 를 선택하여 체크한 보고서를 작업 대상에 추가합니다.
- 다른 폴더의 보고서를 추가하려면 같은 방법으로 반복합니다. 작업 대상 선택이 끝나면 닫기를 선택합니다.
검색 중에도 이미 체크한 보고서는 선택 상태가 유지됩니다.
여러 폴더에서 보고서를 추가할 수 있으며, 이미 작업 대상에 추가된 보고서는 중복으로 추가되지 않습니다.
| 정보 | ||||
|---|---|---|---|---|
| ||||
폴더와 보고서 목록에는 현재 로그인한 사용자가 접근할 수 있는 보고서만 표시됩니다. 작업 대상으로 선택할 수 있는 항목은 모듈 코드가 SD, SC 인 i-AUD 보고서이며, 목록의 아이콘으로 보고서 유형을 확인할 수 있습니다. |
5 변환 스크립트 작성
변환 스크립트는 transform(doc) 함수에 작성합니다. doc 에는 작업 대상 보고서의 전체 문서 정보가 JSON 형태로 전달되며, 선택한 보고서마다 transfomr(doc) 함수가 한 번씩 실행됩니다.
SQL 과 서버스크립트도 doc 을 통해 조회하고 변경할 수 있습니다.
암호화된 항목은 편집 가능한 상태로 전달되며, 저장할 때 자동으로 다시 암호화되므로 스크립트에서 암·복호화를 직접 처리할 필요는 없습니다.
처음 사용하는 경우에는 편집기 오른쪽 위 「예제」에서 작업과 유사한 예제를 불러와 필요한 조건과 값만 수정하는 것을 권장합니다.
기본 스크립트
편집기를 처음 열면 다음 스크립트가 기본으로 제공됩니다.
| 코드 블럭 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
function transform(doc) {
walkAllControls(doc, function (ctl, form) {
var isGrid =
ctl.Type === 'DataGrid' ||
ctl.Type === 'GroupGrid' ||
ctl.Type === 'TreeGrid';
if (!isGrid) { return; }
(ctl.Columns || []).forEach(function (col) {
if (!col.Name || col.Name.indexOf('ITEM_NAME') === -1) { return; }
// ITEM_NAME 컬럼을 왼쪽 정렬로 변경 (기본값이므로 키를 삭제한다)
delete col.TextPosition;
log(form.Name + '/' + ctl.Name + '/' + col.Name + ' → 왼쪽 정렬');
});
});
return true;
} |
반환값과 처리 결과
transform(doc) 의 반환값과 실제 변경 여부에 따라 보고서의 처리 결과가 결정됩니다.
| 경우 | 처리 결과 |
|---|---|
return true + 문서 변경 | 저장 대상이 됩니다. Dry-Run에서는 변경 예정, 실행 시에는 백업 후 저장됩니다. |
return false | 해당 보고서를 저장하지 않습니다. |
| 변경된 내용 없음 | 반환값과 관계없이 저장하지 않습니다. |
| 함수 실행 중 오류 발생 | 해당 보고서는 오류로 처리하고 다음 보고서의 작업을 계속합니다. |
| 정보 | ||||
|---|---|---|---|---|
| ||||
return true 를 사용하더라도 실제 문서 내용이 변경되지 않았다면 저장되지 않습니다. |
5.1 기본 함수
transform(doc) 안에서는 다음 함수를 별도로 선언하지 않고 사용할 수 있습니다.
| 함수 | 설명 |
|---|---|
walkAllControls(doc, cb) | 모든 폼의 컨트롤을 순회합니다. 컨테이너 안에 포함된 컨트롤도 함께 탐색하며 cb(ctl, form)을 호출합니다. |
eachOlapField(doc, cb) | OlapGrid의 iOLAPView.Fields를 순회하며 cb(fld, grid, form)을 호출합니다. |
log(메시지) | ③ 실행 결과에 메시지를 기록합니다. 변경된 항목이나 확인할 값을 기록할 때 사용합니다. |
walkAllControls 가 탐색하는 컨테이너
| 컨테이너 | 하위 컨트롤 위치 |
|---|---|
| Group, AddIn | ChildElements[] |
| Tab | TabItems[].Controls[] |
| iGrid (MX-Grid) | Controls[] |
| TableLayout | Rows[].Cells[].InnerControl |
OLAP 필드 주요 속
| 속성 | 값 |
|---|---|
fld.Area | 0 숨김 · 1 행 · 2 열 · 3 필터 · 4 데이터 |
fld.Category | 1 디멘젼 · 2 메저 |
fld.CreateType | 0 일반 필드 · 1 가상 필드(#MEASURES_HEADER# 등) |
| 정렬 | fld.TextAlignment / fld.HeaderAlignment |
일반 필드만 변경하려면 fld.CreateType === 0 조건을 사용할 수 있습니다.
5.2 문서 구조
doc 은 보고서의 폼, 컨트롤, 데이터소스, 스크립트 정보를 포함합니다.
SQL과 서버 스크립트는 편집 가능한 문자열로 전달됩니다. 암호화되어 있던 항목은 저장할 때 자동으로 다시 암호화되므로 변환 스크립트에서 별도로 처리할 필요가 없습니다.
보고서의 실제 속성 이름과 값은 작업 대상의 🔍 문서 구조 보기에서 확인할 수 있습니다.
5.3 작성 시 참고사항
기본값은 속성을 삭제하여 적용
일부 속성은 값이 없는 상태가 기본값을 의미합니다.
예를 들어 정렬 값은 'start'(왼쪽), 'center', 'end'(오른쪽)를 사용할 수 있지만, 왼쪽 정렬은 기본값이므로 'start'를 지정하지 않고 해당 속성을 삭제합니다.
| 코드 블럭 | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
delete col.TextPosition; // 왼쪽 정렬(기본값) col.TextPosition = 'end'; // 오른쪽 정렬 delete ctl.Visible; // 표시(기본값) ctl.Visible = false; // 숨김 |
컨트롤에 따라 정렬 속성이 다름
| 대상 | 본문 정렬 | 헤더 정렬 |
|---|---|---|
| 그리드 컬럼 | col.TextPosition | col.HeaderPosition |
| OLAP 필드 | fld.TextAlignment | fld.HeaderAlignment |
색상 변경 시 Style.Type 확인
컨트롤의 색상을 직접 변경하려면 Style.Type에 따라 적용 방식을 확인해야 합니다.
Style.Type | 의미 | 색상 적용 |
|---|---|---|
0 | 컨트롤 기본 스킨 | 직접 지정한 색상이 적용되지 않음 |
1 | 공통 BoxStyle 사용 | Style.BoxStyle에 스타일 이름 지정 |
2 | 직접 지정 | Style.Background.Color 등의 속성 사용 |
색상을 변경했지만 화면에 적용되지 않는 경우 Style.Type이 0 또는 1인지 확인하세요.
작성 시 주의사항
- 문서 전체 문자열을 변경하는 경우 속성 이름까지 변경될 수 있으므로 다른 값과 겹치지 않는 구체적인 문자열을 사용하세요.
- 정규식을 문자열로 작성하는 경우 역슬래시(
\)를 두 번 입력해야 합니다. 예:'\\bNAME\\b' - SQL에 조건을 추가하는 경우
GROUP BY,ORDER BY,UNION,WHERE등의 SQL 구조를 확인하여 적절한 위치에 추가하세요. 변경 후에는 Dry-Run으로 SQL을 확인하는 것을 권장합니다. - 그리드 컬럼을 추가하는 경우 조회 SQL에도 해당 컬럼이 포함되어 있어야 데이터가 표시됩니다.
- 기존 문자열에 내용을 추가하는 경우 스크립트를 반복 실행하면 같은 내용이 중복될 수 있습니다. 적용 여부를 확인할 수 있는 마커를 사용하는 것을 권장합니다. (→ 예제 ⑨)
중복 적용 방지 예제
| 코드 블럭 | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
var MARKER = '/* @BULK:myFix */';
if (script.indexOf(MARKER) > -1) {
log('이미 적용됨');
return false;
} |
5.4 예제 스크립트
편집기 오른쪽 위 「예제」 에서 자주 사용하는 변환 작업의 예제 스크립트를 불러올 수 있습니다.
예제를 선택하면 확인 후 현재 편집기의 내용이 선택한 예제로 변경됩니다. 목록에서 원하는 예제를 검색할 수도 있습니다.
| 예제 | 용도 |
|---|---|
| ① 데이터그리드 컬럼 속성 변경 | 조건에 맞는 그리드 컬럼의 정렬, 너비, 캡션 등을 변경 |
| ② OLAP 그리드 필드 속성 변경 | OLAP 필드의 포맷, 정렬, 너비 등을 변경 |
| ③ SQL 테이블명 변경 | 데이터소스 SQL에서 특정 테이블명을 변경 |
| ④ 서버 스크립트 문자열 변경 | 서버 스크립트의 특정 문자열을 변경 |
| ⑤ 컨트롤 공통 속성 변경 | 특정 유형의 컨트롤 속성을 일괄 변경 |
| ⑥ 컨트롤 스타일 변경 | 컨트롤에 공통 스타일(BoxStyle)을 적용 |
| ⑦ 데이터소스 접속 코드 변경 | 데이터소스의 DB 접속 코드를 일괄 변경 |
| ⑧ 클라이언트 스크립트 문자열 변경 | 클라이언트 스크립트의 특정 문자열을 변경 |
| ⑨ 클라이언트 스크립트에 함수 추가 | 중복 여부를 확인한 후 공통 함수를 추가 |
| ⑩ 문서 전체 문자열 변경 | 보고서 전체에서 특정 경로 또는 식별자 등을 변경 |
| ⑪ 문서 구조 확인 | 보고서를 변경하지 않고 폼, 컨트롤, 데이터소스 구조를 결과에 출력 |
| ⑫ BoxStyle 변경 | 특정 BoxStyle을 사용하는 컨트롤을 다른 스타일로 변경 |
| ⑬ 컨트롤 폰트 통일 | 지정한 유형의 컨트롤에 동일한 폰트와 크기를 적용 |
| ⑭ 그리드 컬럼 추가·삭제 | 지정한 그리드의 컬럼을 추가하거나 삭제 |
| ⑮ 데이터소스에 세션 파라미터 추가 | 데이터소스에 세션 파라미터와 SQL 조회 조건을 추가 |
| ⑯ 정규식 문자열 변경 | 정규식을 이용하여 지정한 범위의 문자열을 변경 |
| ⑰ 미사용 데이터소스 확인 | 사용되지 않는 것으로 판단되는 데이터소스를 결과에 표시 |
| ⑱ 컨트롤 이름 규칙 확인 | 컨트롤 이름이 유형별 접두사 규칙에 맞는지 확인 |
※ 예제는 추가되거나 삭제될 수 있습니다.
| 정보 | ||||
|---|---|---|---|---|
| ||||
어떤 속성을 변경해야 할지 모르는 경우 ⑪ 문서 구조 확인 예제를 사용하세요. 보고서를 변경하지 않고 폼, 컨트롤, 데이터소스 등의 구조를 ③ 실행 결과에서 확인할 수 있습니다. ⑰ 미사용 데이터소스 확인, ⑱ 컨트롤 이름 규칙 확인도 보고서를 변경하지 않는 점검용 예제입니다. |
6 Dry-Run 과 실행
변환 스크립트를 작성한 후 Dry-Run으로 변경 내용을 미리 확인하고, 결과가 올바르면 실행하여 실제 보고서에 적용합니다.
Dry-Run 과 실행은 선택된 보고서를 한 건씩 처리하며, 실제 저장 여부에 차이가 있습니다.
- 변환 스크립트에 오류가 있는지 확인합니다. 오류가 있으면 작업을 시작하지 않습니다.
- 선택한 보고서에 transform(doc) 을 실행합니다.
- 변경된 내용이 있는지 확인합니다. 변경 내용이 없거나 return false 인 보고서는 저장 대상에서 제외됩니다.
- 변경된 내용이 있으면 ③ 실행 결과에 변경 전·후 내용을 표시합니다.
- Dry-Run 에서는 보고서를 저장하지 않고 변경 예정으로 표시합니다. 실행에서는 원본 보고서를 백업한 후 변경 내용을 저장합니다.
- 작업이 완료되면 변경, 스킵, 오류 건수를 확인할 수 있습니다.
| 정보 | ||||
|---|---|---|---|---|
| ||||
실제 보고서에 적용하기 전에 Dry-Run 을 실행하여 대상 보고서와 변경 내용을 확인하는 것을 권장합니다. |
6.1 실행 결과 확인
③ 실행 결과에서는 보고서별 변경 내용과 처리 상태를 확인할 수 있습니다.
변경 내용은 다음과 같이 변경된 위치, 이전 값, 변경 후 값으로 표시됩니다.
경로 = 이전값 ⇒ 새값
보고서 한 건에서 변경된 항목이 많은 경우 최대 30건까지 표시되며, 나머지는 ... 외 n건 으로 표시됩니다.
| 상태 | 설명 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Dry-Run에서 변경 내용이 확인된 상태입니다. 실제 보고서에는 저장되지 않습니다. | ||||||||
| 변경 전 원본을 백업한 후 변경 내용이 정상적으로 저장된 상태입니다. | ||||||||
| 변경된 내용이 없거나 transform(doc)이 false를 반환하여 저장하지 않은 상태입니다. | ||||||||
| 작업 대상 보고서를 불러오지 못한 상태입니다. | ||||||||
| 변환 스크립트 실행 중 오류가 발생한 상태입니다. | ||||||||
| 변경 내용을 저장하지 못한 상태입니다. 다른 사용자의 동시 수정으로 인한 충돌도 포함됩니다. |
log() 로 기록한 내용과 변경된 항목의 상세 내용도 실행 결과에서 확인할 수 있습니다.
6.2 결과 필터
실행 결과 상단에는 처리 결과별 건수와 필터
- Dry-Run 후에는 변경 예정, 변경 없음 등의 결과가 표시됩니다.
| 기능 정보 |
|
|
|
|
|
|
|
|---|---|---|---|---|---|---|---|
| 시작 버전 정보 |
| ||||||
| 페이지 속성 | |||||||
|---|---|---|---|---|---|---|---|
| |||||||
|
...


