Cc-1c-skills skd-edit
Точечное редактирование схемы компоновки данных 1С (СКД). Используй когда нужно модифицировать существующую СКД — добавить поля, итоги, фильтры, параметры, изменить текст запроса
git clone https://github.com/Nikolay-Shirokov/cc-1c-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"
.claude/skills/skd-edit/SKILL.md/skd-edit — точечное редактирование СКД (Template.xml)
Атомарные операции модификации существующей схемы компоновки данных: добавление, удаление и модификация полей, итогов, фильтров, параметров, настроек варианта, управление структурой, замена запроса.
Параметры и команда
| Параметр | Описание |
|---|---|
| Путь к Template.xml (или к папке — автодополнение Ext/Template.xml) |
| Операция (см. список ниже) |
| Значение операции (shorthand-строка или текст запроса) |
| (опц.) Имя набора данных (умолч. первый) |
| (опц.) Имя варианта настроек (умолч. первый) |
| (опц.) Не добавлять поле в 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
<use>В отличие от
add-*, в modify-* поле <use> обновляется только если флаг задан явно:
— установить@off<use>false</use>
— убрать существующий@on
(включить параметр)<use>false</use>- ни
, ни@off
не задано —@on
не трогается, существующее значение сохраняется (важно: это значит, что отключённый параметр останется отключённым после модификации других свойств)<use>
remove-* и clear-*
| Операция | Value | Действие |
|---|---|---|
| dataPath | Удаляет поле из набора + из selection варианта |
| dataPath | Удаляет итог |
| dataPath | Удаляет вычисляемое поле + из selection |
| name | Удаляет параметр |
| поле | Удаляет первый фильтр с указанным полем |
| | Очищает все элементы selection |
| | Очищает все элементы order |
| | Очищает все элементы filter |
Верификация
/skd-validate <TemplatePath> — валидация структуры после редактирования /skd-info <TemplatePath> — визуальная сводка