mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-20 09:15:52 +03:00
feat(meta-edit,meta-remove): точечная правка и удаление внешних источников
meta-edit добавляет поля в таблицу внешнего источника: тот же парсер реквизита, свой тег <Field>, свой контекст (без индексов и полнотекстового поиска — чужой таблицей 1С не владеет) и три своих свойства в хвосте. Сам источник точечно не правится: и таблица (отдельный файл), и функция (узел с полным набором свойств) требуют эмиттера, который живёт в meta-compile, — дублировать его здесь значило бы завести вторую реализацию одного и того же. Заодно закрыт тихий отказ, существовавший независимо от внешних источников: проверка допустимых детей смотрела на истинность списка, а не на наличие ключа, поэтому для вида с пустым списком трактовалась как «ограничений нет» и чужой ребёнок молча записывался в объект. Теперь add-attribute на таблице внешнего источника отвергается с предупреждением, а не пишет <Attribute> вместо <Field>. meta-remove понимает две формы: ExternalDataSource.PG — источник целиком, и четырёхчастную ExternalDataSource.PG.Table.products — одну таблицу. Таблица числится в ChildObjects файла источника, а не конфигурации, поэтому дерегистрация разведена переменной реестра; поиск ссылок дополнен путями вида ExternalDataSource.И.Table.Т и ExternalDataSourceTableRef.И.Т. 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
bb56a7e898
commit
ed766154fe
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"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)", "name: String(150)"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" }
|
||||
}
|
||||
],
|
||||
"params": { "objectPath": "ExternalDataSources/PG/Tables/products.xml" },
|
||||
"input": {
|
||||
"add": {
|
||||
"fields": [
|
||||
"barcode: String(20) | nullable",
|
||||
{ "name": "cost", "type": "Number(15,2)", "nameInDataSource": "cost_net", "readOnly": true }
|
||||
],
|
||||
"attributes": ["Лишний: String(10)"]
|
||||
}
|
||||
},
|
||||
"expect": {
|
||||
"stdoutContains": ["Added field: barcode", "Added field: cost", "attributes not allowed for Table"],
|
||||
"fileContains": [
|
||||
{
|
||||
"file": "ExternalDataSources/PG/Tables/products.xml",
|
||||
"text": ["<NameInDataSource>cost_net</NameInDataSource>", "<AllowNull>true</AllowNull>", "<Field uuid="]
|
||||
}
|
||||
],
|
||||
"fileNotContains": [
|
||||
{ "file": "ExternalDataSources/PG/Tables/products.xml", "text": ["<Attribute uuid=", "<Indexing>"] }
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user