mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-08 03:00:52 +03:00
feat(meta-edit): таблица и функция добавляются в существующий внешний источник
Дыра в сценарии: добавить таблицу или функцию к уже существующему источнику было нечем. Совет «пересоберите источник целиком через meta-compile» оказался вредным — повторная компиляция заменяет файл источника, выдаёт объекту НОВЫЙ uuid и оставляет файлы не упомянутых таблиц сиротами: в ChildObjects их уже нет, а на диске они остались. meta-edit на файле источника принимает add.tables и add.functions. Таблица — единственная операция навыка, создающая файл: <Источник>/Tables/<Имя>.xml плюс имя в ChildObjects. Синтаксис тот же, что у meta-compile. Формат файла таблицы обязан быть один и тот же, кем бы файл ни был создан, поэтому эмиттеры скопированы из meta-compile механически и зарегистрированы в check-inline-drift.mjs — гард теперь сверяет семь функций между двумя навыками. Чтобы копии не тянули за собой пол-navыка, две из них развязаны от эмиттеров-специфик: Build-EdsTableXml принимает готовый XML полей, Emit-EdsFunction — готовый XML типа. Каждый навык рендерит их своим эмиттером, вывод не изменился. meta-compile теперь предупреждает о перезаписи существующего объекта — для всех видов, не только внешних источников: молчаливая замена uuid ломает ссылки, а узнать об этом было неоткуда. Раундтрип на платформе 8.3.24.1691: таблица, добавленная через meta-edit, возвращается из выгрузки байт в байт. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBsZA5cr2WFThtgp7i5WVi
This commit is contained in:
co-authored by
Claude Opus 5
parent
ed766154fe
commit
123d6e326b
@@ -31,6 +31,25 @@ const SKILLS = join(ROOT, '.claude', 'skills');
|
||||
// Заготовку по новой семье печатает: node debug/inline-utils/scan-dupes.mjs --stub <py>:<ps1>
|
||||
|
||||
const FAMILIES = [
|
||||
// ─── внешние источники данных: формат файла таблицы один на всех ─────────
|
||||
// Таблица внешнего источника — отдельный файл, и создать его может как meta-compile
|
||||
// (источник целиком), так и meta-edit (добавить таблицу в существующий). Формат обязан
|
||||
// быть один и тот же, поэтому эмиттеры скопированы, а не написаны заново.
|
||||
...[
|
||||
// Общие утилиты (Emit-MLText, Emit-FormRef, X и т.п.) сюда не входят: они живут в доброй
|
||||
// половине навыков и сводить их — отдельная работа, не относящаяся к внешним источникам.
|
||||
['Get-EdsTables', 'get_eds_tables'],
|
||||
['Get-EdsFieldRef', 'get_eds_field_ref'],
|
||||
['Emit-EdsFieldRefList', 'emit_eds_field_ref_list'],
|
||||
['Emit-EdsFieldRefScalar', 'emit_eds_field_ref_scalar'],
|
||||
['Emit-EdsFunction', 'emit_eds_function'],
|
||||
['Emit-EdsTableProperties', 'emit_eds_table_properties'],
|
||||
['Build-EdsTableXml', 'build_eds_table_xml'],
|
||||
].map(([ps1, py]) => ({
|
||||
name: `внешние источники: ${py}`, py, ps1,
|
||||
variants: [{ id: 'full', authority: 'meta-compile', consumers: ['meta-edit'] }],
|
||||
})),
|
||||
|
||||
// ─── support-guard: запрет правки объекта на поддержке ───────────────────
|
||||
{
|
||||
name: 'support-guard: assert_edit_allowed', py: 'assert_edit_allowed', ps1: 'Assert-EditAllowed',
|
||||
|
||||
Reference in New Issue
Block a user