Cc-1c-skills skd-edit

Точечное редактирование схемы компоновки данных 1С (СКД). Используй когда нужно модифицировать существующую СКД — добавить поля, итоги, фильтры, параметры, изменить текст запроса

install
source · Clone the upstream repo
git clone https://github.com/Nikolay-Shirokov/cc-1c-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/Nikolay-Shirokov/cc-1c-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/skd-edit" ~/.claude/skills/nikolay-shirokov-cc-1c-skills-skd-edit && rm -rf "$T"
manifest: .claude/skills/skd-edit/SKILL.md
source content

/skd-edit — точечное редактирование СКД (Template.xml)

Атомарные операции модификации существующей схемы компоновки данных: добавление, удаление и модификация полей, итогов, фильтров, параметров, настроек варианта, управление структурой, замена запроса.

Параметры и команда

ПараметрОписание
TemplatePath
Путь к Template.xml (или к папке — автодополнение Ext/Template.xml)
Operation
Операция (см. список ниже)
Value
Значение операции (shorthand-строка или текст запроса)
DataSet
(опц.) Имя набора данных (умолч. первый)
Variant
(опц.) Имя варианта настроек (умолч. первый)
NoSelection
(опц.) Не добавлять поле в selection варианта
powershell.exe -NoProfile -File .claude/skills/skd-edit/scripts/skd-edit.ps1 -TemplatePath "<path>" -Operation <op> -Value "<value>"

Пакетный режим (batch)

Несколько значений в одном вызове через разделитель

;;
:

-Operation add-field -Value "Цена: decimal(15,2) ;; Количество: decimal(15,3) ;; Сумма: decimal(15,2)"

Работает для всех операций кроме

set-query
,
set-structure
и
add-dataSet
.

Операции

add-field — добавить поле в набор данных

Shorthand:

"Имя [Заголовок]: тип @роль #ограничение"
.

"Цена: decimal(15,2)"
"Организация [Орг-ция]: CatalogRef.Организации @dimension"
"Служебное: string #noFilter #noOrder"

Поле добавляется в набор и в selection варианта (если нет

-NoSelection
). Дубликат dataPath — предупреждение, пропуск.

add-total — добавить итог

"Цена: Среднее"
"Стоимость: Сумма(Кол * Цена)"

add-calculated-field — добавить вычисляемое поле

Shorthand:

"Имя [Заголовок]: тип = Выражение #noFilter #noOrder #noGroup"
.

"Маржа = Продажа - Закупка"
"Наценка [Наценка, %]: decimal(10,2) = Маржа / Закупка * 100"
"Служебное: string = \"\" #noFilter #noOrder #noGroup"

#noFilter
,
#noOrder
,
#noGroup
,
#noField
<useRestriction>
(аналогично add-field).

Также добавляется в selection варианта.

add-parameter — добавить параметр

"Период [Отчетный период]: StandardPeriod = LastMonth @autoDates"
"Организация: CatalogRef.Организации"

Shorthand:

"Имя [Заголовок]: тип = значение @флаги"
.
[Заголовок]
опциональный — добавляет
<title>
.

@autoDates
генерирует пару скрытых параметров
ДатаНачала
/
ДатаОкончания
для StandardPeriod-параметра — для БСП-отчётов, чтобы получить пару полей «Начало/Конец» в панели быстрых настроек.

modify-parameter — изменить существующий параметр

Находит параметр по имени, добавляет/обновляет свойства.

"ПорядокОкругления use=Always"
"ПорядокОкругления [Округление сумм] denyIncompleteValues=true"
"ПериодОтчета [Отчетный период]"                                  # только title
"ПорядокОкругления availableValue=Перечисление.Округления.Окр1 presentation=руб."

[Заголовок]
опциональный — устанавливает или заменяет
<title>
. Можно вызывать без других kv-пар, чтобы только обновить title.

availableValue=
добавляет один элемент списка допустимых значений (можно несколько через
;;
). Тип значения определяется автоматически (DesignTimeValue для ссылок).

rename-parameter — переименовать параметр

Shorthand:

"OldName => NewName"
. Атомарно обновляет имя параметра, ссылки
&Имя
в выражениях других параметров (только полные совпадения,
&ПериодX
не задевается), и записи в
dataParameters
всех вариантов. Текст запроса не трогает — переименование строго в области параметров.

"Период => ПериодОтчета"

reorder-parameters — переставить параметры в указанном порядке

Shorthand:

"Имя1, Имя2, Имя3"
. Частичный список — указанные параметры идут первыми в заданном порядке, остальные сохраняют исходный порядок и идут в конце. Параметры из списка, которых нет в схеме — warning, пропуск.

"ПериодОтчета, НачалоПериода, КонецПериода"

add-filter — добавить фильтр в вариант

Shorthand:

"Поле оператор значение @флаги"
. Флаги:
@off
(use=false),
@user
(userSettingID=auto),
@quickAccess
,
@normal
,
@inaccessible
.

"Номенклатура = _ @off @user"
"Дата >= 2024-01-01T00:00:00"
"Статус filled"

add-dataParameter — добавить параметр данных в вариант

Shorthand:

"Имя [= значение] @флаги"
.

"Период = LastMonth @user"
"Организация @off @user"

add-order — добавить сортировку

Shorthand:

"Поле [desc]"
. По умолчанию asc.
Auto
— авто-элемент.

"Количество desc"
"Auto"

add-selection — добавить элемент выборки

"Номенклатура"
"Auto"
"Folder(Поступление: ПолеА, ПолеБ, ПолеВ)"

Folder(Название: поле1, поле2)
— группа полей (SelectedItemFolder) с заголовком и
placement=Auto
.

@group=ИмяГруппировки
— добавить в selection именованной группировки (вместо уровня варианта):

"Folder(Поступление: ПолеА, ПолеБ) @group=ДанныеОтчета"

add-dataSetLink — добавить связь наборов данных

Shorthand:

"Источник > Приёмник on ВырИсточника = ВырПриёмника [param Имя]"
.

"Набор1 > Набор2 on Поле1 = Поле2"
"Набор1 > Набор2 on Поле1 = Поле2 [param Связь]"

add-dataSet — добавить набор данных

Shorthand:

"Имя: ТЕКСТ_ЗАПРОСА"
или
"ТЕКСТ_ЗАПРОСА"
(авто-имя
НаборДанныхN
).

"Доп: ВЫБРАТЬ 1 КАК Тест"
"ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура"
"Продажи: @queries/sales.sql"

dataSource
берётся из первого существующего. Дубликат имени — предупреждение, пропуск. Не поддерживает пакетный режим (запрос может содержать
;;
).

add-variant — добавить вариант настроек

Shorthand:

"Имя [Представление]"
. Представление опционально, по умолчанию = имя.

"Детальный"
"Детальный [Детальный отчёт]"

Создаёт вариант с Auto selection + detail group. Дубликат имени — предупреждение, пропуск.

add-conditionalAppearance — добавить условное оформление

Shorthand:

"Параметр = значение [when условие] [for Поле1, Поле2]"
. Блок
when
— синтаксис
add-filter
(Поле оператор значение).

"ЦветТекста = web:Red when Сумма < 0"
"ЦветФона = web:LightGreen when Статус = Одобрен for Статус"
"МинимальнаяШирина = 50 for Организация"
"Формат = ЧДЦ=2 for Цена, Сумма"

Типы значений appearance (автодетект):

web:*
/
style:*
/
win:*
→ Color,
true
/
false
→ Boolean, параметр
Формат
/
Текст
/
Заголовок
→ LocalStringType, иначе String.

Типы значений фильтра (автодетект):

Перечисление.*
/
Справочник.*
/
ПланСчетов.*
/
Документ.*
→ DesignTimeValue,
true
/
false
→ Boolean, дата → DateTime, числа → Decimal, иначе String.

OrGroup: несколько условий через

or
в
when
объединяются в FilterItemGroup/OrGroup:

"Формат = ЧЦ=15; ЧДЦ=0 when ПараметрыДанных.Округление = Перечисление.Округления.Окр1 or ПараметрыДанных.Округление = Перечисление.Округления.Окр1000"

Важно: для параметров данных используйте префикс

ПараметрыДанных.
в поле фильтра.

add-drilldown — подключить расшифровку к ресурсам в шаблонах

Value — имена ресурсов (как в полях/вычисляемых полях СКД) через запятую.

"ПоступлениеИзПроизводства, ВыбытиеПрочее"
"Сумма_Дт83, Сумма_Дт99, Сумма_68, Сумма_84"

Подключает DrillDown по

ИмяРесурса
ко всем шаблонам, содержащим указанные ресурсы. Идемпотентно.

set-query — заменить текст запроса

Не поддерживает пакетный режим. Value — полный текст запроса или

@path/to/file.sql
(ссылка на внешний файл). Путь разрешается относительно Template.xml, затем CWD.

patch-query — точечная замена в тексте запроса

Shorthand:

"старое => новое"
. Заменяет все вхождения подстроки. Поддерживает пакетный режим и
-DataSet
.

"СубконтоДт1) В => СубконтоКт1) В"
"ЛЕВОЕ СОЕДИНЕНИЕ => ВНУТРЕННЕЕ СОЕДИНЕНИЕ"

set-outputParameter — установить параметр вывода

"Заголовок = Мой отчёт"
"ВыводитьЗаголовок = true"

Если параметр уже существует — заменяет значение.

set-structure — установить структуру варианта

Shorthand:

"Поле1 > Поле2 > details"
.
details
/
детали
— детальные записи. Заменяет всю структуру. Не поддерживает пакетный режим.

"Организация > Номенклатура > details"
"details"
"СчетМеждународногоУчета @name=ДанныеОтчета"

@name=Имя
— присваивает имя группировке (
<dcsset:name>
). Используется для привязки шаблонов через
groupName
.

modify-field — изменить существующее поле

Тот же shorthand что и

add-field
. Находит по dataPath, объединяет свойства (непустые переопределяют), сохраняет позицию.

"Цена [Цена USD]: decimal(10,4) @dimension"

modify-filter — изменить существующий фильтр

Тот же shorthand что и

add-filter
. Находит по полю, обновляет оператор/значение/флаги. См. правило для
<use>
ниже.

modify-dataParameter — изменить параметр данных

Тот же shorthand что и

add-dataParameter
. Находит по имени, обновляет значение/флаги. См. правило для
<use>
ниже.

Правило
<use>
для modify-filter / modify-dataParameter

В отличие от

add-*
, в
modify-*
поле
<use>
обновляется только если флаг задан явно:

  • @off
    — установить
    <use>false</use>
  • @on
    — убрать существующий
    <use>false</use>
    (включить параметр)
  • ни
    @off
    , ни
    @on
    не задано —
    <use>
    не трогается, существующее значение сохраняется (важно: это значит, что отключённый параметр останется отключённым после модификации других свойств)

remove-* и clear-*

ОперацияValueДействие
remove-field
dataPathУдаляет поле из набора + из selection варианта
remove-total
dataPathУдаляет итог
remove-calculated-field
dataPathУдаляет вычисляемое поле + из selection
remove-parameter
nameУдаляет параметр
remove-filter
полеУдаляет первый фильтр с указанным полем
clear-selection
*
Очищает все элементы selection
clear-order
*
Очищает все элементы order
clear-filter
*
Очищает все элементы filter

Верификация

/skd-validate <TemplatePath>    — валидация структуры после редактирования
/skd-info <TemplatePath>        — визуальная сводка