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
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:
- `@autoDates` — генерирует пару скрытых параметров `ДатаНачала`/`ДатаОкончания` с выражениями `&Имя.ДатаНачала`/`&Имя.ДатаОкончания`. Используется для StandardPeriod в БСП-отчётах: БСП превращает эту пару в два отдельных поля «Начало/Конец» в панели быстрых настроек.
- `@autoDates` — генерирует пару параметров `НачалоПериода`/`КонецПериода` (тип Дата, `useRestriction=true`) с выражениями `&Имя.ДатаНачала`/`&Имя.ДатаОкончания`. Канонический паттерн БСП: эти параметры используются в тексте запроса как `&НачалоПериода`/`&КонецПериода`, а пользователь в быстрых настройках редактирует только `Имя` (StandardPeriod).
- `@valueList``<valueListAllowed>true</valueListAllowed>` — разрешает передавать список значений
- `@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
param(
[string]$DefinitionFile,
@@ -1044,18 +1044,18 @@ function Emit-Parameters {
# Track parameter for auto dataParameters
$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) {
$paramName = $parsed.name
$beginParsed = @{
name = "ДатаНачала"; title = "Начало периода"
name = "НачалоПериода"; title = "Начало периода"
type = "date"; value = "0001-01-01T00:00:00"
useRestriction = $true
expression = "&$paramName.ДатаНачала"
}
Emit-SingleParam -p $null -parsed $beginParsed
$endParsed = @{
name = "ДатаОкончания"; title = "Конец периода"
name = "КонецПериода"; title = "Конец периода"
type = "date"; value = "0001-01-01T00:00:00"
useRestriction = $true
expression = "&$paramName.ДатаОкончания"
@@ -1,5 +1,5 @@
#!/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
import argparse
import json
@@ -916,11 +916,11 @@ def emit_parameters(lines, defn):
'value': parsed.get('value'),
})
# @autoDates: auto-generate ДатаНачала and ДатаОкончания (canonical БСП pattern)
# @autoDates: auto-generate НачалоПериода and КонецПериода (canonical БСП pattern)
if parsed.get('autoDates'):
param_name = parsed['name']
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',
'type': 'date', 'value': '0001-01-01T00:00:00',
'useRestriction': True,
@@ -928,7 +928,7 @@ def emit_parameters(lines, defn):
}
emit_single_param(lines, None, begin_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',
'type': 'date', 'value': '0001-01-01T00:00:00',
'useRestriction': True,
@@ -35,7 +35,7 @@
</value>
</parameter>
<parameter>
<name>ДатаНачала</name>
<name>НачалоПериода</name>
<title xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
@@ -53,7 +53,7 @@
<expression>&amp;Период.ДатаНачала</expression>
</parameter>
<parameter>
<name>ДатаОкончания</name>
<name>КонецПериода</name>
<title xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
@@ -70,7 +70,7 @@
</value>
</parameter>
<parameter>
<name>ДатаНачала</name>
<name>НачалоПериода</name>
<title xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
@@ -88,7 +88,7 @@
<expression>&amp;Период.ДатаНачала</expression>
</parameter>
<parameter>
<name>ДатаОкончания</name>
<name>КонецПериода</name>
<title xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
@@ -65,7 +65,7 @@
</value>
</parameter>
<parameter>
<name>ДатаНачала</name>
<name>НачалоПериода</name>
<title xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
@@ -83,7 +83,7 @@
<expression>&amp;Период.ДатаНачала</expression>
</parameter>
<parameter>
<name>ДатаОкончания</name>
<name>КонецПериода</name>
<title xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
@@ -62,7 +62,7 @@
</value>
</parameter>
<parameter>
<name>ДатаНачала</name>
<name>НачалоПериода</name>
<title xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
@@ -80,7 +80,7 @@
<expression>&amp;Период.ДатаНачала</expression>
</parameter>
<parameter>
<name>ДатаОкончания</name>
<name>КонецПериода</name>
<title xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>