diff --git a/.claude/skills/skd-compile/scripts/skd-compile.ps1 b/.claude/skills/skd-compile/scripts/skd-compile.ps1 index b08d59a0..b5d680e1 100644 --- a/.claude/skills/skd-compile/scripts/skd-compile.ps1 +++ b/.claude/skills/skd-compile/scripts/skd-compile.ps1 @@ -1,4 +1,4 @@ -# skd-compile v1.89 — Compile 1C DCS from JSON +# skd-compile v1.90 — Compile 1C DCS from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [string]$DefinitionFile, @@ -2711,8 +2711,13 @@ function Emit-GroupItems { X "$indent`t`t$(Esc-Xml $gt)" $pat = if ($field.periodAdditionType) { "$($field.periodAdditionType)" } else { "None" } X "$indent`t`t$(Esc-Xml $pat)" - X "$indent`t`t0001-01-01T00:00:00" - X "$indent`t`t0001-01-01T00:00:00" + # Auto-detect: ISO date → xs:dateTime, иначе → dcscor:Field (path). + $pab = if ($field.periodAdditionBegin) { "$($field.periodAdditionBegin)" } else { '0001-01-01T00:00:00' } + $pae = if ($field.periodAdditionEnd) { "$($field.periodAdditionEnd)" } else { '0001-01-01T00:00:00' } + $pabT = if ($pab -match '^\d{4}-\d{2}-\d{2}T') { 'xs:dateTime' } else { 'dcscor:Field' } + $paeT = if ($pae -match '^\d{4}-\d{2}-\d{2}T') { 'xs:dateTime' } else { 'dcscor:Field' } + X "$indent`t`t$(Esc-Xml $pab)" + X "$indent`t`t$(Esc-Xml $pae)" X "$indent`t" } } diff --git a/.claude/skills/skd-compile/scripts/skd-compile.py b/.claude/skills/skd-compile/scripts/skd-compile.py index 44e45d1a..74d42999 100644 --- a/.claude/skills/skd-compile/scripts/skd-compile.py +++ b/.claude/skills/skd-compile/scripts/skd-compile.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# skd-compile v1.89 — Compile 1C DCS from JSON +# skd-compile v1.90 — Compile 1C DCS from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import json @@ -2192,8 +2192,13 @@ def emit_group_items(lines, group_by, indent): lines.append(f'{indent}\t\t{esc_xml(gt)}') pat = str(field.get('periodAdditionType', 'None')) lines.append(f'{indent}\t\t{esc_xml(pat)}') - lines.append(f'{indent}\t\t0001-01-01T00:00:00') - lines.append(f'{indent}\t\t0001-01-01T00:00:00') + # Auto-detect: ISO date → xs:dateTime, иначе → dcscor:Field (path). + pab = str(field.get('periodAdditionBegin', '0001-01-01T00:00:00')) + pae = str(field.get('periodAdditionEnd', '0001-01-01T00:00:00')) + pab_t = 'xs:dateTime' if re.match(r'^\d{4}-\d{2}-\d{2}T', pab) else 'dcscor:Field' + pae_t = 'xs:dateTime' if re.match(r'^\d{4}-\d{2}-\d{2}T', pae) else 'dcscor:Field' + lines.append(f'{indent}\t\t{esc_xml(pab)}') + lines.append(f'{indent}\t\t{esc_xml(pae)}') lines.append(f'{indent}\t') lines.append(f'{indent}') diff --git a/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 b/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 index 6a8caed3..ecfe6844 100644 --- a/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 +++ b/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 @@ -1,4 +1,4 @@ -# skd-decompile v0.72 — Decompile 1C DCS Template.xml to JSON DSL (draft) +# skd-decompile v0.73 — Decompile 1C DCS Template.xml to JSON DSL (draft) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -1936,13 +1936,30 @@ function Get-GroupFields { $gf = Get-Text $gItem "dcsset:field" $pat = Get-Text $gItem "dcsset:periodAdditionType" $gt = Get-Text $gItem "dcsset:groupType" - $isDefault = (-not $pat -or $pat -eq 'None') -and (-not $gt -or $gt -eq 'Items') + # periodAdditionBegin/End: non-default = либо dcscor:Field (path), либо + # date ≠ 0001-01-01T00:00:00. Сохраняем строкой — compile auto-detect тип. + $pabN = $gItem.SelectSingleNode("dcsset:periodAdditionBegin", $ns) + $paeN = $gItem.SelectSingleNode("dcsset:periodAdditionEnd", $ns) + $pab = $null; $pae = $null + if ($pabN) { + $pt = Get-LocalXsiType $pabN + $pv = $pabN.InnerText + if ($pt -eq 'Field' -or ($pv -and $pv -ne '0001-01-01T00:00:00')) { $pab = $pv } + } + if ($paeN) { + $pt = Get-LocalXsiType $paeN + $pv = $paeN.InnerText + if ($pt -eq 'Field' -or ($pv -and $pv -ne '0001-01-01T00:00:00')) { $pae = $pv } + } + $isDefault = (-not $pat -or $pat -eq 'None') -and (-not $gt -or $gt -eq 'Items') -and (-not $pab) -and (-not $pae) if ($isDefault) { $gFields += $gf } else { $obj = [ordered]@{ field = $gf } if ($gt -and $gt -ne 'Items') { $obj['groupType'] = $gt } if ($pat -and $pat -ne 'None') { $obj['periodAdditionType'] = $pat } + if ($pab) { $obj['periodAdditionBegin'] = $pab } + if ($pae) { $obj['periodAdditionEnd'] = $pae } $gFields += $obj } } else {