From 4a6060d928df202aa4fabd0e0f42eee7afa8eb44 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 11 Jul 2026 15:35:10 +0300 Subject: [PATCH] =?UTF-8?q?test(meta-compile):=20=D1=81=D1=82=D0=B0=D0=B1?= =?UTF-8?q?=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=BE=D0=B2?= =?UTF-8?q?=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=D0=B4=D0=BE=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BD=D0=BE=D1=81=D1=82=D0=B8=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=201=D0=A1-cert=20(sequence)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit getStructuralDeps не стабил документы, на которые ссылается Sequence (inp.documents + documentMap) → 1С-cert падал с «Неизвестный объект метаданных Document.X» и «Ни один документ не участвует в последовательности». Пред-существующий пробел (не связан с dataLock — падал идентично на до-dataLock компиляторе). Добавлен case 'Sequence': стаб каждого документа с реквизитами из documentMap (тип реквизита берётся из соответствующего измерения). sequence 1С-cert теперь проходит. Co-Authored-By: Claude Opus 4.8 (1M context) --- tests/skills/verify-snapshots.mjs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/skills/verify-snapshots.mjs b/tests/skills/verify-snapshots.mjs index 0689af58..0bbdf2e1 100644 --- a/tests/skills/verify-snapshots.mjs +++ b/tests/skills/verify-snapshots.mjs @@ -223,6 +223,27 @@ function getStructuralDeps(input) { } } break; + case 'Sequence': + // Документы последовательности (documents) + реквизиты из documentMap — 1С требует существования + // самого Document.X И реквизита, на который ссылается измерение. Стабим документ с нужными реквизитами + // (тип реквизита берём из соответствующего измерения последовательности). + if (inp.documents) { + const norm = (s) => String(s).replace(/^Документ\./, 'Document.').replace(/\.Реквизит\./, '.Attribute.'); + const docAttrs = {}; // имя документа -> Set("Реквизит: Тип") + for (const dim of (inp.dimensions || [])) { + const dtype = dim.type || 'CatalogRef.Организации'; + for (const mp of (dim.documentMap || [])) { + const m = norm(mp).match(/^Document\.([^.]+)\.Attribute\.(.+)$/); + if (m) (docAttrs[m[1]] = docAttrs[m[1]] || new Set()).add(`${m[2]}: ${dtype}`); + } + } + for (const dref of inp.documents) { + const dn = String(dref).split('.').pop(); + const attrs = [...(docAttrs[dn] || [])]; + deps.push({ type: 'Document', name: dn, dsl: { type: 'Document', name: dn, ...(attrs.length ? { attributes: attrs } : {}) } }); + } + } + break; } } return deps;