Files
cc-1c-skills/tests/skills/cases/form-add/eds-table-forms.json
T
Nick ShirokovandClaude Opus 5 fb211a61ac feat(form-add): формы таблиц внешних источников данных
form-add отказывал видом объекта 'Table', хотя платформа такие формы делает, а в DSL
таблицы есть слоты defaultObjectForm/defaultRecordForm/defaultListForm/defaultChoiceForm.
Инструкция при этом обещала обратное — строка исправлена.

Таблица — единственный вид, чьи ссылки трёхчастные: слот
ExternalDataSource.<И>.Table.<Т>.Form.<Ф>, главный реквизит ExternalDataSourceTableObject.<И>.<Т>,
MainTable динамического списка ExternalDataSource.<И>.Table.<Т>. Имя источника в файле таблицы
не хранится — берётся из пути ExternalDataSources/<И>/Tables/<Т>.xml, единственное место,
где навык смотрит на путь.

Набор назначений зависит от вида данных таблицы — замерено загрузками на 8.3.24.1691:
ObjectData даёт Object/List/Choice, NonobjectData — Record/List/Choice. Неверная пара
схемой формы не отвергается: она валит загрузку ВСЕЙ конфигурации «Исключением XDTO при
чтении файла» без указания причины, поэтому form-add проверяет её сам и объясняет, а без
-Purpose у таблицы с составным ключом основной становится форма записи.

form-validate: типы ExternalDataSourceTable* добавлены в список известных cfg-префиксов —
иначе корректная форма получала предупреждение «unrecognized cfg prefix».

Проверено: form-add и form-validate зелёные в обоих рантаймах, гарды прошли (в том числе
check-form-purposes: спека и оба порта сходятся), снэпшот eds-table-forms принят платформой,
формы всех четырёх назначений загружены в базу и выгружены обратно со ссылками без потерь.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NBsZA5cr2WFThtgp7i5WVi
2026-09-06 19:26:43 +03:00

52 lines
1.8 KiB
JSON

{
"name": "Таблица внешнего источника: формы списка и объекта с трёхчастными ссылками",
"preRun": [
{
"script": "meta-compile/scripts/meta-compile",
"input": {
"type": "ExternalDataSource",
"name": "PG",
"tables": {
"products": {
"keyFields": ["id"],
"tableDataType": "ObjectData",
"fields": ["id: Number(10,0)", "name: String(150)"]
}
}
},
"args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" }
},
{
"script": "form-add/scripts/form-add",
"args": {
"-ObjectPath": "{workDir}/ExternalDataSources/PG/Tables/products.xml",
"-FormName": "ФормаСписка",
"-Purpose": "List"
}
}
],
"params": {
"objectPath": "ExternalDataSources/PG/Tables/products.xml",
"formName": "ФормаОбъекта"
},
"args_extra": ["-Purpose", "Object"],
"validatePath": "ExternalDataSources/PG/Tables/products/Forms/ФормаОбъекта",
"expect": {
"stdoutContains": ["DefaultObjectForm: ExternalDataSource.PG.Table.products.Form.ФормаОбъекта"],
"fileContains": [
{
"file": "ExternalDataSources/PG/Tables/products/Forms/ФормаОбъекта/Ext/Form.xml",
"text": "<v8:Type>cfg:ExternalDataSourceTableObject.PG.products</v8:Type>"
},
{
"file": "ExternalDataSources/PG/Tables/products/Forms/ФормаСписка/Ext/Form.xml",
"text": "<MainTable>ExternalDataSource.PG.Table.products</MainTable>"
},
{
"file": "ExternalDataSources/PG/Tables/products.xml",
"text": ["<Form>ФормаСписка</Form>", "<Form>ФормаОбъекта</Form>"]
}
]
}
}