mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-08 03:00:52 +03:00
Скопированные из meta-compile Emit-FormRef и Emit-Characteristics тянули за собой хвост хелперов (Normalize-FormRef, Normalize-CharFrom, Expand-CharField, Get-CharIntField), которых в meta-edit нет. Добавление таблицы с ключом defaultListForm или characteristics давало в PS CommandNotFoundException при коде возврата 0: навык отчитывался успехом, а файл таблицы не создавался и в ChildObjects ничего не появлялось. В python то же место падало трейсбеком — порты расходились ещё и потоком ошибки. Причина не в копировании как таковом: копия обязана быть не только идентичной, но и самодостаточной. Форма функции для этого не годилась, поэтому изменена в эталоне и перекопирована — тем же приёмом, что уже применён в этой семье дважды: Emit-EdsTableProperties принимает готовые блоки <Characteristics> и четырёх слотов <Default*Form>, рендерит их вызывающий навык своим эмиттером. Зависимостей у тела не осталось. meta-edit передаёт пустые блоки и отвергает ключи characteristics и default*Form с объяснением, куда идти: форму назначает form-add, характеристики — meta-compile. Попутно исправлено то, что вскрылось при разборе: короткое имя формы в defaultListForm эмитилось как есть, а платформа отвечает «Неизвестный объект метаданных». Теперь оно разворачивается в полный путь ExternalDataSource.И.Table.Т.Form.Ф — как и ссылки на поля. check-inline-drift получил проверку РАЗРЕШИМОСТИ: всё, что зовёт скопированное тело, обязано быть определено в том же навыке. Критерий «своей» функции — имя, определённое в навыке-эталоне, поэтому список командлетов-исключений не нужен. Проверено обратным экспериментом: гард ловит исходный дефект с прямой формулировкой «копия неразрешима». Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBsZA5cr2WFThtgp7i5WVi
34 lines
1.0 KiB
JSON
34 lines
1.0 KiB
JSON
{
|
|
"name": "Таблица с формой по умолчанию: отказ с объяснением, а не тихий сбой",
|
|
"setup": "empty-config",
|
|
"preRun": [
|
|
{
|
|
"script": "meta-compile/scripts/meta-compile",
|
|
"input": {
|
|
"type": "ExternalDataSource",
|
|
"name": "PG",
|
|
"tables": { "products": { "keyFields": ["id"], "fields": ["id: Number(10,0)"] } }
|
|
},
|
|
"args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" }
|
|
}
|
|
],
|
|
"params": { "objectPath": "ExternalDataSources/PG.xml" },
|
|
"input": {
|
|
"add": {
|
|
"tables": {
|
|
"sales": {
|
|
"defaultListForm": "ФормаСписка",
|
|
"fields": ["id: Number(10,0)"]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"expect": {
|
|
"stdoutContains": ["не поддержан при добавлении таблицы", "form-add"],
|
|
"filesAbsent": ["ExternalDataSources/PG/Tables/sales.xml"],
|
|
"fileNotContains": [
|
|
{ "file": "ExternalDataSources/PG.xml", "text": "<Table>sales</Table>" }
|
|
]
|
|
}
|
|
}
|