feat(skd-compile): time type, string(N,fix), and composite type parameters

Calibrated against live Designer output in upload/erf/ПроверкаЭкранирования.

- New type 'time' (synonym 'время'): xs:dateTime with DateFractions=Time
  for time-of-day values. Designer uses the same xs:dateTime XSD type as
  date/dateTime — only DateFractions differs. Empty value: typed-zero
  0001-01-01T00:00:00 (same as dateTime).

- Extended string regex to accept (N,fix) → AllowedLength=Fixed (was
  Variable-only). Non-empty fixed-string values are emitted as-given
  without space-padding to Length — the platform handles padding on save.

- Composite types in parameters (array of types in object form, e.g.
  ["string(10,fix)", "CatalogRef.X"]) now work end-to-end: valueType
  emits each type with its qualifiers, and empty composite values
  serialize as <value xsi:nil="true"/> matching Designer.

Test case empty-param-values extended with 5 new params covering all
three additions. Snapshot validated by skd-validate.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-05-20 12:52:26 +03:00
co-authored by Claude Opus 4.7
parent efdf56691c
commit ff2d8513c4
4 changed files with 119 additions and 20 deletions
@@ -17,7 +17,12 @@
"ПараметрБулево: boolean = ",
"ПараметрСтандартныйПериод: StandardPeriod = _",
{ "name": "ПараметрТипНеЗадан", "value": null },
"ПараметрСписокСтрок: string @valueList"
"ПараметрСписокСтрок: string @valueList",
"ПараметрВремяСЗначением: time = 0001-01-01T12:30:00",
"ПараметрВремяПусто: time",
"ПараметрСтрокаФиксСЗначением: string(10,fix) = АБВ",
"ПараметрСтрокаФиксПусто: string(10,fix)",
{ "name": "СоставнойТип", "type": ["string(10,fix)", "CatalogRef.ПлоскийПростой"], "value": null }
]
},
"validatePath": "Template.xml",