diff --git a/M01_MasterData/SheetLogic/M01_SL_Import.ts b/M01_MasterData/SheetLogic/M01_SL_Import.ts index f94905ddf..93db36b6c 100644 --- a/M01_MasterData/SheetLogic/M01_SL_Import.ts +++ b/M01_MasterData/SheetLogic/M01_SL_Import.ts @@ -384,7 +384,8 @@ function newTable(b: Build, n: Extract, sig: string): TableB const cols = tableCols(table); const rows = tableRows(table); b.row(node, t("Table"), { 값: n.head }, t("Outside")); - b.pill(node, "in", { name: t("Table"), cell: "E1", outside: true }); + // 바깥 값 「표」 알약 — Table 상자와 같은 꼴(출력 · 블록 왼위 · 머리 줄 포함) · Eval · 서버가 이 칸에서 블록을 채움 + b.pill(node, "out", { name: "표", cell: "E1", outside: true }); rows.forEach((r, i) => r.forEach((v, j) => { const c = cellOf(v); @@ -653,7 +654,7 @@ export function outsideOf(sl: SheetLogic, calc?: CalcValues): SlOutsideAt[] { const out: SlOutsideAt[] = []; for (const node of sl.nodes) { const passed: Record = {}; - const outside = node.pillsIn.filter((p) => p.outside); + const outside = [...node.pillsIn, ...node.pillsOut].filter((p) => p.outside); const sheet = sl.workbook.시트.find((s) => s.id === node.sheetId); for (const p of node.pillsIn) { const note = sheet?.칸[`C${p.cell.slice(1)}`]?.값; diff --git a/resources/tester/test_m01_sl_import.py b/resources/tester/test_m01_sl_import.py index 84a0d44c2..3187d11a3 100644 --- a/resources/tester/test_m01_sl_import.py +++ b/resources/tester/test_m01_sl_import.py @@ -214,6 +214,9 @@ def test_가져온_시트로직_값이_calc_와_같음(row: dict, given: dict, m sheets = {s["id"] for s in sl["workbook"]["시트"]} assert len(sheets) == len(sl["nodes"]) and all(n["sheetId"] in sheets for n in sl["nodes"]) ids = {n["id"]: n for n in sl["nodes"]} + for n in sl["nodes"]: # 표 상자 = 「표」 바깥 값 출력 알약(E1 · Table 상자와 같은 꼴) + if n["kind"] == "table": + assert {"name": "표", "cell": "E1", "outside": True} in n["pillsOut"] for e in sl["edges"]: assert any(p["name"] == e["from"]["pill"] for p in ids[e["from"]["node"]]["pillsOut"]) assert any(p["name"] == e["to"]["pill"] for p in ids[e["to"]["node"]]["pillsIn"])