diff --git a/.claude/skills/skd-edit/SKILL.md b/.claude/skills/skd-edit/SKILL.md
index 648e7fe8..41cd2ad8 100644
--- a/.claude/skills/skd-edit/SKILL.md
+++ b/.claude/skills/skd-edit/SKILL.md
@@ -80,7 +80,7 @@ Shorthand: `"Имя [Заголовок]: тип = Выражение #noFilter
"Организация: CatalogRef.Организации"
```
-Shorthand: `"Имя [Заголовок]: тип = значение @флаги"`. `[Заголовок]` опциональный — добавляет `
`.
+Shorthand: `"Имя [Заголовок]: тип = значение [availableValue=список] [@флаги]"`. `[Заголовок]` опциональный — добавляет ``.
Флаги:
- `@autoDates` — генерирует пару скрытых параметров `ДатаНачала`/`ДатаОкончания` для StandardPeriod-параметра.
@@ -91,24 +91,31 @@ Shorthand: `"Имя [Заголовок]: тип = значение @флаги"
"ПС: CatalogRef.Контрагенты = Справочник.Контрагенты.ПустаяСсылка @hidden"
"Период: StandardPeriod = LastMonth @always"
"ПСчет: ChartOfAccountsRef.Хозрасчетный = ПланСчетов.Хозрасчетный.X @hidden @always"
+"Округление: EnumRef.Округления = Окр1 availableValue=Перечисление.Округления.Окр1: руб., Перечисление.Округления.Окр1000: тыс."
+```
+
+`availableValue=` задаёт начальный список допустимых значений. Формат списка: `v1[: p1], v2[: p2], ...` — элементы через `,`, представление после `:`. Если в значении или представлении встречается `,` или `:` — оборачивай в одинарные кавычки `'...'`:
+
+```
+"Округление: ... = Окр1 availableValue=Окр1_00: 'руб., коп.', Окр1: руб."
```
### modify-parameter — изменить существующий параметр
-Находит параметр по имени, добавляет/обновляет свойства.
+Shorthand: `"ИмяПараметра [Заголовок] [ключ=значение]... [@флаги]"`. Находит параметр по имени, обновляет указанные свойства.
```
"ПорядокОкругления use=Always"
"ПорядокОкругления [Округление сумм] denyIncompleteValues=true"
"ПериодОтчета [Отчетный период]" # только title
-"ПорядокОкругления availableValue=Перечисление.Округления.Окр1 presentation=руб."
+"ПорядокОкругления availableValue=Перечисление.Округления.Окр1: руб., Перечисление.Округления.Окр1000: тыс."
"СчетПС value=ПланСчетов.Хозрасчетный.КассаПредприятия"
"Контрагент @hidden @always"
```
`[Заголовок]` опциональный — устанавливает или заменяет ``. Можно вызывать без других kv-пар, чтобы только обновить title.
-`availableValue=` добавляет один элемент списка допустимых значений (можно несколько через `;;`). Тип значения определяется автоматически (DesignTimeValue для ссылок).
+`availableValue=` **заменяет весь список** допустимых значений (старые удаляются). Формат и кавычки — те же, что в `add-parameter`.
`value=` заменяет значение параметра (тип значения подбирается автоматически по объявленному типу параметра).
diff --git a/.claude/skills/skd-edit/scripts/skd-edit.ps1 b/.claude/skills/skd-edit/scripts/skd-edit.ps1
index 924b0bc1..a6874103 100644
--- a/.claude/skills/skd-edit/scripts/skd-edit.ps1
+++ b/.claude/skills/skd-edit/scripts/skd-edit.ps1
@@ -1,4 +1,4 @@
-# skd-edit v1.14 — Atomic 1C DCS editor
+# skd-edit v1.15 — Atomic 1C DCS editor
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[Parameter(Mandatory)]
@@ -297,7 +297,13 @@ function Parse-CalcShorthand {
function Parse-ParamShorthand {
param([string]$s)
- $result = @{ name = ""; type = ""; value = $null; autoDates = $false; title = $null; hidden = $false; always = $false }
+ $result = @{ name = ""; type = ""; value = $null; autoDates = $false; title = $null; hidden = $false; always = $false; availableValues = @() }
+
+ # Extract availableValue=... (must be before main parse — captures to end of string)
+ if ($s -match '\s*availableValue=(.+)$') {
+ $result.availableValues = Parse-AvailableValueList $Matches[1].Trim()
+ $s = ($s -replace '\s*availableValue=.+$', '').Trim()
+ }
if ($s -match '@autoDates') {
$result.autoDates = $true
@@ -626,6 +632,75 @@ function Parse-OutputParamShorthand {
return @{ key = $s.Trim(); value = "" }
}
+function Parse-AvailableValueList {
+ # Returns array of @{ value=...; presentation=... } from comma-separated list.
+ # Items can use 'single' or "double" quotes (stripped). Quoted spans preserve commas/colons.
+ param([string]$s)
+
+ $result = @()
+ if (-not $s) { return ,$result }
+
+ # Tokenize by ',' respecting quoted spans
+ $items = @()
+ $buf = New-Object System.Text.StringBuilder
+ $inQuote = $null
+ for ($i = 0; $i -lt $s.Length; $i++) {
+ $ch = $s[$i]
+ if ($inQuote) {
+ [void]$buf.Append($ch)
+ if ($ch -eq $inQuote) { $inQuote = $null }
+ } elseif ($ch -eq "'" -or $ch -eq '"') {
+ $inQuote = $ch
+ [void]$buf.Append($ch)
+ } elseif ($ch -eq ',') {
+ $items += $buf.ToString()
+ [void]$buf.Clear()
+ } else {
+ [void]$buf.Append($ch)
+ }
+ }
+ if ($buf.Length -gt 0) { $items += $buf.ToString() }
+
+ # For each item: split into value[:presentation], strip quotes
+ $stripQuotes = {
+ param($t)
+ $t = $t.Trim()
+ if ($t.Length -ge 2 -and (($t[0] -eq "'" -and $t[-1] -eq "'") -or ($t[0] -eq '"' -and $t[-1] -eq '"'))) {
+ return $t.Substring(1, $t.Length - 2)
+ }
+ return $t
+ }
+
+ foreach ($raw in $items) {
+ $item = $raw.Trim()
+ if (-not $item) { continue }
+
+ # Find first ':' outside quotes
+ $colonIdx = -1
+ $q = $null
+ for ($j = 0; $j -lt $item.Length; $j++) {
+ $c = $item[$j]
+ if ($q) {
+ if ($c -eq $q) { $q = $null }
+ } elseif ($c -eq "'" -or $c -eq '"') {
+ $q = $c
+ } elseif ($c -eq ':') {
+ $colonIdx = $j; break
+ }
+ }
+
+ if ($colonIdx -ge 0) {
+ $valPart = $item.Substring(0, $colonIdx)
+ $presPart = $item.Substring($colonIdx + 1)
+ $result += @{ value = (& $stripQuotes $valPart); presentation = (& $stripQuotes $presPart) }
+ } else {
+ $result += @{ value = (& $stripQuotes $item); presentation = "" }
+ }
+ }
+
+ return ,$result
+}
+
# --- 4. Build-* functions (XML fragment generators) ---
function Build-ValueTypeXml {
@@ -858,6 +933,26 @@ function Build-ParamValueXml {
return $lines
}
+function Build-AvailableValueFragment {
+ # Returns XML lines (array) for a single block.
+ param($item, [string]$declaredType, [string]$indent)
+
+ $lines = @()
+ $lines += "$indent"
+ $valueLines = Build-ParamValueXml -type $declaredType -value $item.value -indent "$indent`t"
+ foreach ($vl in $valueLines) { $lines += $vl }
+ if ($item.presentation) {
+ $lines += "$indent`t"
+ $lines += "$indent`t`t"
+ $lines += "$indent`t`t`tru"
+ $lines += "$indent`t`t`t$(Esc-Xml $item.presentation)"
+ $lines += "$indent`t`t"
+ $lines += "$indent`t"
+ }
+ $lines += "$indent"
+ return $lines
+}
+
function Build-ParamFragment {
param($parsed, [string]$indent)
@@ -888,6 +983,13 @@ function Build-ParamFragment {
$lines += "$i`tfalse"
}
+ if ($parsed.availableValues -and $parsed.availableValues.Count -gt 0) {
+ foreach ($av in $parsed.availableValues) {
+ $avLines = Build-AvailableValueFragment -item $av -declaredType $parsed.type -indent "$i`t"
+ foreach ($l in $avLines) { $lines += $l }
+ }
+ }
+
if ($parsed.always) {
$lines += "$i`t"
}
@@ -1944,13 +2046,10 @@ switch ($Operation) {
}
}
- # Process availableValue
+ # Process availableValue — replace whole list with new items
if ($avPart) {
- $avRest = $avPart -replace '^availableValue=', ''
- # Parse: "Перечисление...X presentation=текст с пробелами"
- $avParts = $avRest -split '\s+presentation=', 2
- $avValue = $avParts[0].Trim()
- $avPresentation = if ($avParts.Count -gt 1) { $avParts[1].Trim() } else { "" }
+ $avRest = ($avPart -replace '^availableValue=', '').Trim()
+ $avItems = Parse-AvailableValueList $avRest
# Detect value type: prefer declared of the parameter, else guess from value
$declaredType = ""
@@ -1967,33 +2066,31 @@ switch ($Operation) {
}
}
- $avLines = @()
- $avLines += "$childIndent"
- $valueLines = Build-ParamValueXml -type $declaredType -value $avValue -indent "$childIndent`t"
- foreach ($vl in $valueLines) { $avLines += $vl }
- if ($avPresentation) {
- $avLines += "$childIndent`t"
- $avLines += "$childIndent`t`t"
- $avLines += "$childIndent`t`t`tru"
- $avLines += "$childIndent`t`t`t$(Esc-Xml $avPresentation)"
- $avLines += "$childIndent`t`t"
- $avLines += "$childIndent`t"
+ # Remove all existing elements
+ $toRemove = @()
+ foreach ($ch in $paramEl.ChildNodes) {
+ if ($ch.NodeType -eq 'Element' -and $ch.LocalName -eq 'availableValue' -and $ch.NamespaceURI -eq $schNs) {
+ $toRemove += $ch
+ }
}
- $avLines += "$childIndent"
- $fragXml = $avLines -join "`r`n"
+ foreach ($el in $toRemove) { Remove-NodeWithWhitespace $el }
- # Insert before first of (denyIncompleteValues, use) in document order
+ # Insert each new before (denyIncompleteValues, use)
$refNode = $null
foreach ($child in $paramEl.ChildNodes) {
if ($child.NodeType -eq 'Element' -and ($child.LocalName -eq 'denyIncompleteValues' -or $child.LocalName -eq 'use')) {
$refNode = $child; break
}
}
- $nodes = Import-Fragment $xmlDoc $fragXml
- foreach ($node in $nodes) {
- Insert-BeforeElement $paramEl $node $refNode $childIndent
+ foreach ($av in $avItems) {
+ $avLines = Build-AvailableValueFragment -item $av -declaredType $declaredType -indent $childIndent
+ $fragXml = $avLines -join "`r`n"
+ $nodes = Import-Fragment $xmlDoc $fragXml
+ foreach ($node in $nodes) {
+ Insert-BeforeElement $paramEl $node $refNode $childIndent
+ }
}
- Write-Host "[OK] Parameter `"$paramName`": availableValue added"
+ Write-Host "[OK] Parameter `"$paramName`": availableValue set to $($avItems.Count) item(s)"
}
# Process @hidden / @always flags (idempotent)
diff --git a/.claude/skills/skd-edit/scripts/skd-edit.py b/.claude/skills/skd-edit/scripts/skd-edit.py
index 4fbfdbd5..b222f952 100644
--- a/.claude/skills/skd-edit/scripts/skd-edit.py
+++ b/.claude/skills/skd-edit/scripts/skd-edit.py
@@ -1,4 +1,4 @@
-# skd-edit v1.14 — Atomic 1C DCS editor (Python port)
+# skd-edit v1.15 — Atomic 1C DCS editor (Python port)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
import os
@@ -299,7 +299,13 @@ def parse_calc_shorthand(s):
def parse_param_shorthand(s):
- result = {"name": "", "type": "", "value": None, "autoDates": False, "title": None, "hidden": False, "always": False}
+ result = {"name": "", "type": "", "value": None, "autoDates": False, "title": None, "hidden": False, "always": False, "availableValues": []}
+
+ # Extract availableValue=... (must be before main parse — captures to end of string)
+ m_av = re.search(r'\s*availableValue=(.+)$', s)
+ if m_av:
+ result["availableValues"] = parse_available_value_list(m_av.group(1).strip())
+ s = re.sub(r'\s*availableValue=.+$', '', s).strip()
if re.search(r'@autoDates', s):
result["autoDates"] = True
@@ -581,6 +587,80 @@ def parse_output_param_shorthand(s):
return {"key": s.strip(), "value": ""}
+def parse_available_value_list(s):
+ """Returns list of {value, presentation} from comma-separated list.
+ Items can use single/double quotes (stripped). Quoted spans preserve commas/colons."""
+ if not s:
+ return []
+
+ # Tokenize by ',' respecting quoted spans
+ items = []
+ buf = []
+ in_quote = None
+ for ch in s:
+ if in_quote:
+ buf.append(ch)
+ if ch == in_quote:
+ in_quote = None
+ elif ch in ("'", '"'):
+ in_quote = ch
+ buf.append(ch)
+ elif ch == ',':
+ items.append("".join(buf))
+ buf = []
+ else:
+ buf.append(ch)
+ if buf:
+ items.append("".join(buf))
+
+ def strip_quotes(t):
+ t = t.strip()
+ if len(t) >= 2 and ((t[0] == "'" and t[-1] == "'") or (t[0] == '"' and t[-1] == '"')):
+ return t[1:-1]
+ return t
+
+ result = []
+ for raw in items:
+ item = raw.strip()
+ if not item:
+ continue
+ # Find first ':' outside quotes
+ colon_idx = -1
+ q = None
+ for j, c in enumerate(item):
+ if q:
+ if c == q:
+ q = None
+ elif c in ("'", '"'):
+ q = c
+ elif c == ':':
+ colon_idx = j
+ break
+ if colon_idx >= 0:
+ val_part = item[:colon_idx]
+ pres_part = item[colon_idx + 1:]
+ result.append({"value": strip_quotes(val_part), "presentation": strip_quotes(pres_part)})
+ else:
+ result.append({"value": strip_quotes(item), "presentation": ""})
+ return result
+
+
+def build_available_value_fragment(item, declared_type, indent):
+ """Return XML lines for a single block."""
+ lines = [f"{indent}"]
+ for vl in build_param_value_xml(declared_type, item["value"], f"{indent}\t"):
+ lines.append(vl)
+ if item.get("presentation"):
+ lines.append(f'{indent}\t')
+ lines.append(f"{indent}\t\t")
+ lines.append(f"{indent}\t\t\tru")
+ lines.append(f"{indent}\t\t\t{esc_xml(item['presentation'])}")
+ lines.append(f"{indent}\t\t")
+ lines.append(f"{indent}\t")
+ lines.append(f"{indent}")
+ return lines
+
+
# ── 4. Build-* functions (XML fragment generators) ──────────
def build_value_type_xml(type_str, indent):
@@ -797,6 +877,10 @@ def build_param_fragment(parsed, indent):
lines.append(f"{i}\ttrue")
lines.append(f"{i}\tfalse")
+ for av in parsed.get("availableValues", []) or []:
+ for l in build_available_value_fragment(av, parsed.get("type", ""), f"{i}\t"):
+ lines.append(l)
+
if parsed.get("always"):
lines.append(f"{i}\t")
@@ -1664,11 +1748,8 @@ elif operation == "modify-parameter":
# Process availableValue
if av_part:
- av_rest = av_part[len("availableValue="):]
- # Parse: "Перечисление...X presentation=текст с пробелами"
- av_parts = re.split(r'\s+presentation=', av_rest, 1)
- av_value = av_parts[0].strip()
- av_presentation = av_parts[1].strip() if len(av_parts) > 1 else ""
+ av_rest = av_part[len("availableValue="):].strip()
+ av_items = parse_available_value_list(av_rest)
# Prefer declared of the parameter; fall back to value pattern
declared_type = ""
@@ -1683,29 +1764,24 @@ elif operation == "modify-parameter":
declared_type = re.sub(r'^d\d+p\d+:', '', (tnode.text or "").strip())
break
- av_lines = [f"{child_indent}"]
- for vl in build_param_value_xml(declared_type, av_value, f"{child_indent}\t"):
- av_lines.append(vl)
- if av_presentation:
- av_lines.append(f'{child_indent}\t')
- av_lines.append(f"{child_indent}\t\t")
- av_lines.append(f"{child_indent}\t\t\tru")
- av_lines.append(f"{child_indent}\t\t\t{esc_xml(av_presentation)}")
- av_lines.append(f"{child_indent}\t\t")
- av_lines.append(f"{child_indent}\t")
- av_lines.append(f"{child_indent}")
- frag_xml = "\r\n".join(av_lines)
+ # Remove all existing
+ to_remove = [ch for ch in param_el if isinstance(ch.tag, str) and local_name(ch) == "availableValue" and etree.QName(ch.tag).namespace == SCH_NS]
+ for el in to_remove:
+ remove_node_with_whitespace(el)
- # Insert before first of (denyIncompleteValues, use) in document order
+ # Insert each new before (denyIncompleteValues, use)
ref_node = None
for child in param_el:
if isinstance(child.tag, str) and local_name(child) in ("denyIncompleteValues", "use"):
ref_node = child
break
- nodes = import_fragment(xml_doc, frag_xml)
- for node in nodes:
- insert_before_element(param_el, node, ref_node, child_indent)
- print(f'[OK] Parameter "{param_name}": availableValue added')
+ for av in av_items:
+ av_lines = build_available_value_fragment(av, declared_type, child_indent)
+ frag_xml = "\r\n".join(av_lines)
+ nodes = import_fragment(xml_doc, frag_xml)
+ for node in nodes:
+ insert_before_element(param_el, node, ref_node, child_indent)
+ print(f'[OK] Parameter "{param_name}": availableValue set to {len(av_items)} item(s)')
if flag_hidden:
ur_el = next((ch for ch in param_el if isinstance(ch.tag, str) and local_name(ch) == "useRestriction" and etree.QName(ch.tag).namespace == SCH_NS), None)
diff --git a/tests/skills/cases/skd-edit/add-parameter-with-availableValue.json b/tests/skills/cases/skd-edit/add-parameter-with-availableValue.json
new file mode 100644
index 00000000..7a4f685f
--- /dev/null
+++ b/tests/skills/cases/skd-edit/add-parameter-with-availableValue.json
@@ -0,0 +1,21 @@
+{
+ "name": "add-parameter с initial availableValue list (с запятой в кавычках)",
+ "preRun": [
+ {
+ "script": "skd-compile/scripts/skd-compile",
+ "input": {
+ "dataSets": [{
+ "name": "Основной",
+ "query": "ВЫБРАТЬ Т.Поле ИЗ Регистр КАК Т",
+ "fields": ["Поле: string"]
+ }]
+ },
+ "args": { "-DefinitionFile": "{inputFile}", "-OutputPath": "{workDir}/Template.xml" }
+ }
+ ],
+ "params": {
+ "templatePath": "Template.xml",
+ "operation": "add-parameter",
+ "value": "Округление: EnumRef.Округления = Окр1_00 availableValue=Перечисление.Округления.Окр1_00: 'руб., коп.', Перечисление.Округления.Окр1: руб., Перечисление.Округления.Окр1000: тыс. руб."
+ }
+}
diff --git a/tests/skills/cases/skd-edit/modify-parameter-availableValue-replace.json b/tests/skills/cases/skd-edit/modify-parameter-availableValue-replace.json
new file mode 100644
index 00000000..00426015
--- /dev/null
+++ b/tests/skills/cases/skd-edit/modify-parameter-availableValue-replace.json
@@ -0,0 +1,25 @@
+{
+ "name": "modify-parameter availableValue: replace whole list (старый список удалён, новый добавлен)",
+ "preRun": [
+ {
+ "script": "skd-compile/scripts/skd-compile",
+ "input": {
+ "dataSets": [{
+ "name": "Основной",
+ "query": "ВЫБРАТЬ Т.Поле ИЗ Регистр КАК Т",
+ "fields": ["Поле: string"]
+ }]
+ },
+ "args": { "-DefinitionFile": "{inputFile}", "-OutputPath": "{workDir}/Template.xml" }
+ },
+ {
+ "script": "skd-edit/scripts/skd-edit",
+ "args": { "-TemplatePath": "{workDir}/Template.xml", "-Operation": "add-parameter", "-Value": "Округление: EnumRef.Округления = Окр1_00 availableValue=Перечисление.Округления.Окр1_00: ст1, Перечисление.Округления.Окр1: ст2, Перечисление.Округления.Окр1000: ст3" }
+ }
+ ],
+ "params": {
+ "templatePath": "Template.xml",
+ "operation": "modify-parameter",
+ "value": "Округление availableValue=Перечисление.Округления.Окр1: руб., Перечисление.Округления.Окр1000: тыс., Перечисление.Округления.Окр1000000: млн."
+ }
+}
diff --git a/tests/skills/cases/skd-edit/modify-parameter-combined.json b/tests/skills/cases/skd-edit/modify-parameter-combined.json
index 3d393da6..8b6e9334 100644
--- a/tests/skills/cases/skd-edit/modify-parameter-combined.json
+++ b/tests/skills/cases/skd-edit/modify-parameter-combined.json
@@ -17,6 +17,6 @@
"params": {
"templatePath": "Template.xml",
"operation": "modify-parameter",
- "value": "ПорядокОкругления denyIncompleteValues=true use=Always availableValue=Перечисление.Округления.Окр1_00 presentation=руб. коп ;; ПорядокОкругления availableValue=Перечисление.Округления.Окр1 presentation=руб. ;; ПорядокОкругления availableValue=Перечисление.Округления.Окр1000 presentation=тыс. руб"
+ "value": "ПорядокОкругления denyIncompleteValues=true use=Always availableValue=Перечисление.Округления.Окр1_00: руб. коп, Перечисление.Округления.Окр1: руб., Перечисление.Округления.Окр1000: тыс. руб"
}
}
diff --git a/tests/skills/cases/skd-edit/modify-parameter.json b/tests/skills/cases/skd-edit/modify-parameter.json
index 05309342..b4edcb5f 100644
--- a/tests/skills/cases/skd-edit/modify-parameter.json
+++ b/tests/skills/cases/skd-edit/modify-parameter.json
@@ -17,6 +17,6 @@
"params": {
"templatePath": "Template.xml",
"operation": "modify-parameter",
- "value": "ПорядокОкругления use=Always ;; ПорядокОкругления denyIncompleteValues=true ;; ПорядокОкругления availableValue=Перечисление.Округления.Окр1_00 presentation=руб. коп ;; ПорядокОкругления availableValue=Перечисление.Округления.Окр1 presentation=руб."
+ "value": "ПорядокОкругления use=Always ;; ПорядокОкругления denyIncompleteValues=true ;; ПорядокОкругления availableValue=Перечисление.Округления.Окр1_00: руб. коп, Перечисление.Округления.Окр1: руб."
}
}
diff --git a/tests/skills/cases/skd-edit/snapshots/add-parameter-with-availableValue/Template.xml b/tests/skills/cases/skd-edit/snapshots/add-parameter-with-availableValue/Template.xml
new file mode 100644
index 00000000..86f7a758
--- /dev/null
+++ b/tests/skills/cases/skd-edit/snapshots/add-parameter-with-availableValue/Template.xml
@@ -0,0 +1,78 @@
+
+
+
+ ИсточникДанных1
+ Local
+
+
+ Основной
+
+ Поле
+ Поле
+
+ xs:string
+
+ 0
+ Variable
+
+
+
+ ИсточникДанных1
+ ВЫБРАТЬ Т.Поле ИЗ Регистр КАК Т
+
+
+ Округление
+
+ d5p1:EnumRef.Округления
+
+ Окр1_00
+
+ Перечисление.Округления.Окр1_00
+
+
+ ru
+ руб., коп.
+
+
+
+
+ Перечисление.Округления.Окр1
+
+
+ ru
+ руб.
+
+
+
+
+ Перечисление.Округления.Окр1000
+
+
+ ru
+ тыс. руб.
+
+
+
+
+
+ Основной
+
+
+ ru
+ Основной
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/skills/cases/skd-edit/snapshots/modify-parameter-availableValue-replace/Template.xml b/tests/skills/cases/skd-edit/snapshots/modify-parameter-availableValue-replace/Template.xml
new file mode 100644
index 00000000..967609b0
--- /dev/null
+++ b/tests/skills/cases/skd-edit/snapshots/modify-parameter-availableValue-replace/Template.xml
@@ -0,0 +1,78 @@
+
+
+
+ ИсточникДанных1
+ Local
+
+
+ Основной
+
+ Поле
+ Поле
+
+ xs:string
+
+ 0
+ Variable
+
+
+
+ ИсточникДанных1
+ ВЫБРАТЬ Т.Поле ИЗ Регистр КАК Т
+
+
+ Округление
+
+ d5p1:EnumRef.Округления
+
+ Окр1_00
+
+ Перечисление.Округления.Окр1
+
+
+ ru
+ руб.
+
+
+
+
+ Перечисление.Округления.Окр1000
+
+
+ ru
+ тыс.
+
+
+
+
+ Перечисление.Округления.Окр1000000
+
+
+ ru
+ млн.
+
+
+
+
+
+ Основной
+
+
+ ru
+ Основной
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+