mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-08 19:20:52 +03:00
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
43 lines
1.3 KiB
JSON
43 lines
1.3 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)", "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>"] }
|
|
]
|
|
}
|
|
}
|