Точечное редактирование схемы компоновки данных 1С (СКД). Используй когда нужно модифицировать существующую СКД — добавить поля, итоги, фильтры, параметры, изменить текст запроса
Атомарные операции модификации существующей схемы компоновки данных: добавление, удаление и модификация полей, итогов, фильтров, параметров, настроек варианта, управление структурой, замена запроса.
| Параметр | Описание |
|---|---|
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>"
Несколько значений в одном вызове через разделитель ;;:
-Operation add-field -Value "Цена: decimal(15,2) ;; Количество: decimal(15,3) ;; Сумма: decimal(15,2)"
Работает для всех операций кроме set-query, set-structure и add-dataSet.
Shorthand: "Имя [Заголовок]: тип @роль #ограничение".
"Цена: decimal(15,2)"
"Организация [Орг-ция]: CatalogRef.Организации @dimension"
"Служебное: string #noFilter #noOrder"
Поле добавляется в набор и в selection варианта (если нет -NoSelection). Дубликат dataPath — предупреждение, пропуск.
"Цена: Среднее"
"Стоимость: Сумма(Кол * Цена)"
Shorthand: "Имя [Заголовок]: тип = Выражение #noFilter #noOrder #noGroup".
"Маржа = Продажа - Закупка"
"Наценка [Наценка, %]: decimal(10,2) = Маржа / Закупка * 100"
"Служебное: string = \"\" #noFilter #noOrder #noGroup"
#noFilter, #noOrder, #noGroup, #noField → <useRestriction> (аналогично add-field).
Также добавляется в selection варианта.
"Период [Отчетный период]: StandardPeriod = LastMonth @autoDates"
"Организация: CatalogRef.Организации"
Shorthand: "Имя [Заголовок]: тип = значение @флаги". [Заголовок] опциональный — добавляет <title>.
@autoDates генерирует пару скрытых параметров ДатаНачала/ДатаОкончания для StandardPeriod-параметра — для БСП-отчётов, чтобы получить пару полей «Начало/Конец» в панели быстрых настроек.
Находит параметр по имени, добавляет/обновляет свойства.
"ПорядокОкругления use=Always"
"ПорядокОкругления [Округление сумм] denyIncompleteValues=true"
"ПериодОтчета [Отчетный период]" # только title
"ПорядокОкругления availableValue=Перечисление.Округления.Окр1 presentation=руб."
[Заголовок] опциональный — устанавливает или заменяет <title>. Можно вызывать без других kv-пар, чтобы только обновить title.
availableValue= добавляет один элемент списка допустимых значений (можно несколько через ;;). Тип значения определяется автоматически (DesignTimeValue для ссылок).
Shorthand: "OldName => NewName". Атомарно обновляет имя параметра, ссылки &Имя в выражениях других параметров (только полные совпадения, &ПериодX не задевается), и записи в dataParameters всех вариантов. Текст запроса не трогает — переименование строго в области параметров.
"Период => ПериодОтчета"
Shorthand: "Имя1, Имя2, Имя3". Частичный список — указанные параметры идут первыми в заданном порядке, остальные сохраняют исходный порядок и идут в конце. Параметры из списка, которых нет в схеме — warning, пропуск.
"ПериодОтчета, НачалоПериода, КонецПериода"
Shorthand: "Поле оператор значение @флаги". Флаги: @off (use=false), @user (userSettingID=auto), @quickAccess, @normal, @inaccessible.
"Номенклатура = _ @off @user"
"Дата >= 2024-01-01T00:00:00"
"Статус filled"
Shorthand: "Имя [= значение] @флаги".
"Период = LastMonth @user"
"Организация @off @user"
Shorthand: "Поле [desc]". По умолчанию asc. Auto — авто-элемент.
"Количество desc"
"Auto"
"Номенклатура"
"Auto"
"Folder(Поступление: ПолеА, ПолеБ, ПолеВ)"
Folder(Название: поле1, поле2) — группа полей (SelectedItemFolder) с заголовком и placement=Auto.
@group=ИмяГруппировки — добавить в selection именованной группировки (вместо уровня варианта):
"Folder(Поступление: ПолеА, ПолеБ) @group=ДанныеОтчета"
Shorthand: "Источник > Приёмник on ВырИсточника = ВырПриёмника [param Имя]".
"Набор1 > Набор2 on Поле1 = Поле2"
"Набор1 > Набор2 on Поле1 = Поле2 [param Связь]"
Shorthand: "Имя: ТЕКСТ_ЗАПРОСА" или "ТЕКСТ_ЗАПРОСА" (авто-имя НаборДанныхN).
"Доп: ВЫБРАТЬ 1 КАК Тест"
"ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура"
"Продажи: @queries/sales.sql"
dataSource берётся из первого существующего. Дубликат имени — предупреждение, пропуск. Не поддерживает пакетный режим (запрос может содержать ;;).
Shorthand: "Имя [Представление]". Представление опционально, по умолчанию = имя.
"Детальный"
"Детальный [Детальный отчёт]"
Создаёт вариант с Auto selection + detail group. Дубликат имени — предупреждение, пропуск.
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"
Важно: для параметров данных используйте префикс ПараметрыДанных. в поле фильтра.
Value — имена ресурсов (как в полях/вычисляемых полях СКД) через запятую.
"ПоступлениеИзПроизводства, ВыбытиеПрочее"
"Сумма_Дт83, Сумма_Дт99, Сумма_68, Сумма_84"
Подключает DrillDown по ИмяРесурса ко всем шаблонам, содержащим указанные ресурсы. Идемпотентно.
Не поддерживает пакетный режим. Value — полный текст запроса или @path/to/file.sql (ссылка на внешний файл). Путь разрешается относительно Template.xml, затем CWD.
Shorthand: "старое => новое". Заменяет все вхождения подстроки. Поддерживает пакетный режим и -DataSet.
"СубконтоДт1) В => СубконтоКт1) В"
"ЛЕВОЕ СОЕДИНЕНИЕ => ВНУТРЕННЕЕ СОЕДИНЕНИЕ"
"Заголовок = Мой отчёт"
"ВыводитьЗаголовок = true"
Если параметр уже существует — заменяет значение.
Shorthand: "Поле1 > Поле2 > details". details/детали — детальные записи. Заменяет всю структуру. Не поддерживает пакетный режим.
"Организация > Номенклатура > details"
"details"
"СчетМеждународногоУчета @name=ДанныеОтчета"
@name=Имя — присваивает имя группировке (<dcsset:name>). Используется для привязки шаблонов через groupName.
Тот же shorthand что и add-field. Находит по dataPath, объединяет свойства (непустые переопределяют), сохраняет позицию.
"Цена [Цена USD]: decimal(10,4) @dimension"
Тот же shorthand что и add-filter. Находит по полю, обновляет оператор/значение/флаги. См. правило для <use> ниже.
Тот же shorthand что и add-dataParameter. Находит по имени, обновляет значение/флаги. См. правило для <use> ниже.
<use> для modify-filter / modify-dataParameterВ отличие от add-*, в modify-* поле <use> обновляется только если флаг задан явно:
@off — установить <use>false</use>@on — убрать существующий <use>false</use> (включить параметр)@off, ни @on не задано — <use> не трогается, существующее значение сохраняется (важно: это значит, что отключённый параметр останется отключённым после модификации других свойств)| Операция | 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> — визуальная сводка