feat(skd-compile): @autoDates — НачалоПериода/КонецПериода вместо ДатаНачала/ДатаОкончания

Канонический паттерн БСП в Титан/ЕРП-отчётах использует имена
НачалоПериода/КонецПериода (~10:1 по частоте). Выражения
&Период.ДатаНачала/&Период.ДатаОкончания сохранены — это обращение
к внутренним полям StandardPeriod.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-04-19 15:51:22 +03:00
co-authored by Claude Opus 4.7
parent f5dd677ac8
commit 3f23be8219
7 changed files with 17 additions and 17 deletions
+1 -1
View File
@@ -119,7 +119,7 @@ Shorthand: `"Имя [Заголовок]: тип = Выражение #noField #
Shorthand: `"Имя [Заголовок]: тип = значение @флаги"`. `[Заголовок]` опциональный — добавляет `<title>` (LocalStringType). Shorthand: `"Имя [Заголовок]: тип = значение @флаги"`. `[Заголовок]` опциональный — добавляет `<title>` (LocalStringType).
Флаги shorthand: Флаги shorthand:
- `@autoDates` — генерирует пару скрытых параметров `ДатаНачала`/`ДатаОкончания` с выражениями `&Имя.ДатаНачала`/`&Имя.ДатаОкончания`. Используется для StandardPeriod в БСП-отчётах: БСП превращает эту пару в два отдельных поля «Начало/Конец» в панели быстрых настроек. - `@autoDates` — генерирует пару параметров `НачалоПериода`/`КонецПериода` (тип Дата, `useRestriction=true`) с выражениями `&Имя.ДатаНачала`/`&Имя.ДатаОкончания`. Канонический паттерн БСП: эти параметры используются в тексте запроса как `&НачалоПериода`/`&КонецПериода`, а пользователь в быстрых настройках редактирует только `Имя` (StandardPeriod).
- `@valueList``<valueListAllowed>true</valueListAllowed>` — разрешает передавать список значений - `@valueList``<valueListAllowed>true</valueListAllowed>` — разрешает передавать список значений
- `@hidden` — скрытый параметр: `availableAsField=false` + исключается из `"dataParameters": "auto"` - `@hidden` — скрытый параметр: `availableAsField=false` + исключается из `"dataParameters": "auto"`
@@ -1,4 +1,4 @@
# skd-compile v1.15 — Compile 1C DCS from JSON # skd-compile v1.16 — Compile 1C DCS from JSON
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param( param(
[string]$DefinitionFile, [string]$DefinitionFile,
@@ -1044,18 +1044,18 @@ function Emit-Parameters {
# Track parameter for auto dataParameters # Track parameter for auto dataParameters
$script:allParams += @{ name = $parsed.name; hidden = [bool]$parsed.hidden; type = "$($parsed.type)"; value = $parsed.value } $script:allParams += @{ name = $parsed.name; hidden = [bool]$parsed.hidden; type = "$($parsed.type)"; value = $parsed.value }
# @autoDates: auto-generate ДатаНачала and ДатаОкончания (canonical БСП pattern) # @autoDates: auto-generate НачалоПериода and КонецПериода (canonical БСП pattern)
if ($parsed.autoDates) { if ($parsed.autoDates) {
$paramName = $parsed.name $paramName = $parsed.name
$beginParsed = @{ $beginParsed = @{
name = "ДатаНачала"; title = "Начало периода" name = "НачалоПериода"; title = "Начало периода"
type = "date"; value = "0001-01-01T00:00:00" type = "date"; value = "0001-01-01T00:00:00"
useRestriction = $true useRestriction = $true
expression = "&$paramName.ДатаНачала" expression = "&$paramName.ДатаНачала"
} }
Emit-SingleParam -p $null -parsed $beginParsed Emit-SingleParam -p $null -parsed $beginParsed
$endParsed = @{ $endParsed = @{
name = "ДатаОкончания"; title = "Конец периода" name = "КонецПериода"; title = "Конец периода"
type = "date"; value = "0001-01-01T00:00:00" type = "date"; value = "0001-01-01T00:00:00"
useRestriction = $true useRestriction = $true
expression = "&$paramName.ДатаОкончания" expression = "&$paramName.ДатаОкончания"
@@ -1,5 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# skd-compile v1.15 — Compile 1C DCS from JSON # skd-compile v1.16 — Compile 1C DCS from JSON
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse import argparse
import json import json
@@ -916,11 +916,11 @@ def emit_parameters(lines, defn):
'value': parsed.get('value'), 'value': parsed.get('value'),
}) })
# @autoDates: auto-generate ДатаНачала and ДатаОкончания (canonical БСП pattern) # @autoDates: auto-generate НачалоПериода and КонецПериода (canonical БСП pattern)
if parsed.get('autoDates'): if parsed.get('autoDates'):
param_name = parsed['name'] param_name = parsed['name']
begin_parsed = { begin_parsed = {
'name': '\u0414\u0430\u0442\u0430\u041d\u0430\u0447\u0430\u043b\u0430', 'name': '\u041d\u0430\u0447\u0430\u043b\u043e\u041f\u0435\u0440\u0438\u043e\u0434\u0430',
'title': '\u041d\u0430\u0447\u0430\u043b\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430', 'title': '\u041d\u0430\u0447\u0430\u043b\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430',
'type': 'date', 'value': '0001-01-01T00:00:00', 'type': 'date', 'value': '0001-01-01T00:00:00',
'useRestriction': True, 'useRestriction': True,
@@ -928,7 +928,7 @@ def emit_parameters(lines, defn):
} }
emit_single_param(lines, None, begin_parsed) emit_single_param(lines, None, begin_parsed)
end_parsed = { end_parsed = {
'name': '\u0414\u0430\u0442\u0430\u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f', 'name': '\u041a\u043e\u043d\u0435\u0446\u041f\u0435\u0440\u0438\u043e\u0434\u0430',
'title': '\u041a\u043e\u043d\u0435\u0446 \u043f\u0435\u0440\u0438\u043e\u0434\u0430', 'title': '\u041a\u043e\u043d\u0435\u0446 \u043f\u0435\u0440\u0438\u043e\u0434\u0430',
'type': 'date', 'value': '0001-01-01T00:00:00', 'type': 'date', 'value': '0001-01-01T00:00:00',
'useRestriction': True, 'useRestriction': True,
@@ -35,7 +35,7 @@
</value> </value>
</parameter> </parameter>
<parameter> <parameter>
<name>ДатаНачала</name> <name>НачалоПериода</name>
<title xsi:type="v8:LocalStringType"> <title xsi:type="v8:LocalStringType">
<v8:item> <v8:item>
<v8:lang>ru</v8:lang> <v8:lang>ru</v8:lang>
@@ -53,7 +53,7 @@
<expression>&amp;Период.ДатаНачала</expression> <expression>&amp;Период.ДатаНачала</expression>
</parameter> </parameter>
<parameter> <parameter>
<name>ДатаОкончания</name> <name>КонецПериода</name>
<title xsi:type="v8:LocalStringType"> <title xsi:type="v8:LocalStringType">
<v8:item> <v8:item>
<v8:lang>ru</v8:lang> <v8:lang>ru</v8:lang>
@@ -70,7 +70,7 @@
</value> </value>
</parameter> </parameter>
<parameter> <parameter>
<name>ДатаНачала</name> <name>НачалоПериода</name>
<title xsi:type="v8:LocalStringType"> <title xsi:type="v8:LocalStringType">
<v8:item> <v8:item>
<v8:lang>ru</v8:lang> <v8:lang>ru</v8:lang>
@@ -88,7 +88,7 @@
<expression>&amp;Период.ДатаНачала</expression> <expression>&amp;Период.ДатаНачала</expression>
</parameter> </parameter>
<parameter> <parameter>
<name>ДатаОкончания</name> <name>КонецПериода</name>
<title xsi:type="v8:LocalStringType"> <title xsi:type="v8:LocalStringType">
<v8:item> <v8:item>
<v8:lang>ru</v8:lang> <v8:lang>ru</v8:lang>
@@ -65,7 +65,7 @@
</value> </value>
</parameter> </parameter>
<parameter> <parameter>
<name>ДатаНачала</name> <name>НачалоПериода</name>
<title xsi:type="v8:LocalStringType"> <title xsi:type="v8:LocalStringType">
<v8:item> <v8:item>
<v8:lang>ru</v8:lang> <v8:lang>ru</v8:lang>
@@ -83,7 +83,7 @@
<expression>&amp;Период.ДатаНачала</expression> <expression>&amp;Период.ДатаНачала</expression>
</parameter> </parameter>
<parameter> <parameter>
<name>ДатаОкончания</name> <name>КонецПериода</name>
<title xsi:type="v8:LocalStringType"> <title xsi:type="v8:LocalStringType">
<v8:item> <v8:item>
<v8:lang>ru</v8:lang> <v8:lang>ru</v8:lang>
@@ -62,7 +62,7 @@
</value> </value>
</parameter> </parameter>
<parameter> <parameter>
<name>ДатаНачала</name> <name>НачалоПериода</name>
<title xsi:type="v8:LocalStringType"> <title xsi:type="v8:LocalStringType">
<v8:item> <v8:item>
<v8:lang>ru</v8:lang> <v8:lang>ru</v8:lang>
@@ -80,7 +80,7 @@
<expression>&amp;Период.ДатаНачала</expression> <expression>&amp;Период.ДатаНачала</expression>
</parameter> </parameter>
<parameter> <parameter>
<name>ДатаОкончания</name> <name>КонецПериода</name>
<title xsi:type="v8:LocalStringType"> <title xsi:type="v8:LocalStringType">
<v8:item> <v8:item>
<v8:lang>ru</v8:lang> <v8:lang>ru</v8:lang>