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 {