child-operations.md был на 191 строку и держал в одном файле реквизиты, поля внешнего источника, таблицы, функции, ТЧ, предопределённые и значения перечисления: модель, добавляющая реквизит, читала заодно про функции внешнего источника. Ось резки была механизмом (add/remove/ modify), а нужна сущность — как в meta-compile. SKILL.md: частое (команда, сводная таблица операций, быстрые примеры) плюс индекс «что правишь → файл». Остальное — reference/: attributes, tabular-sections, predefined, external-data-source, other-children, properties (бывший properties-reference), json-dsl. Попутно: везде «навык form-add», а не голое имя — иначе читается как команда оболочки или значение -Operation. Тексты предупреждений в обоих портах тоже. scripts/switch.py собирал .md только из корня навыка, подкаталоги не видел: команды запуска в reference/*.md молча остались бы на старом рантайме. Обход стал рекурсивным. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBsZA5cr2WFThtgp7i5WVi
2.7 KiB
Внешние источники данных
Точечные правки внутри уже созданного источника: поле в таблицу, таблица и функция в источник.
Источник целиком собирает навык meta-compile — его повторный запуск заменяет файл источника,
выдаёт новый uuid и оставляет сиротами таблицы, которых нет в описании.
add-field — поле таблицы
Правится файл таблицы: ExternalDataSources/<Источник>/Tables/<Таблица>.xml.
Поле задаётся как обычный реквизит, плюс три своих ключа: nameInDataSource (умолчание — имя поля),
readOnly, allowNull. Флаги строковой формы — readonly, nullable.
{ "add": { "fields": [
"barcode: String(20) | nullable",
{ "name": "cost", "type": "Number(15,2)", "nameInDataSource": "cost_net", "readOnly": true }
] } }
Типы поля: Number, String, Date, Boolean, UUID, BinaryData и ссылка на таблицу того же
источника — ExternalDataSourceTableRef.<Источник>.<Таблица>. Составной тип платформа запрещает.
add-tables / add-functions — в файле источника
Правится файл источника: ExternalDataSources/<Источник>.xml. Таблица — единственная операция
навыка, создающая файл: <Источник>/Tables/<Имя>.xml плюс имя в ChildObjects источника.
Синтаксис таблицы и функции тот же, что у навыка meta-compile (reference/external-data-source.md там же).
{ "add": {
"tables": { "sales": { "keyFields": ["id"], "fields": ["id: Number(10,0)", "summa: Number(15,2)"] } },
"functions": { "nextKey": "NEXT VALUE FOR public.seq_key" }
} }
При добавлении таблицы не поддержаны ключи characteristics и default*Form — навык отвергает их,
а не проглатывает молча. Характеристики задаются при сборке источника навыком meta-compile,
форму назначает навык form-add.
Удаление
Таблицу удаляет навык meta-remove: ExternalDataSource.<Источник>.Table.<Таблица> — вместе с файлом
и записью в ChildObjects. Весь источник — ExternalDataSource.<Источник>.