Инструменты · Метаданные
metadata_write
Создаёт, изменяет и удаляет объекты метаданных и их узлы по адресу FQN. Одна операция — один узел; пачка — через коллекционный адрес.
Когда использовать
- Новый объект или узел: справочник, реквизит, табличная часть, измерение, ресурс, значение перечисления, узел формы или макета.
- Изменить свойства существующего узла: тип, синоним, индексирование, проверку заполнения; переименовать узел —
updateсdefinition.name. - Включить объект в подсистемы —
definition.subsystems. - Несколько узлов одной коллекции — один вызов с коллекционным адресом и массивом
definition. - Перед удалением или сужением типа — сначала
metadata_graph: кто использует объект и в какой роли.
Удаление и переименование без предварительного анализа — главный источник поломок. Перед ними посмотрите metadata_graph по объекту: он показывает, где объект используется как тип реквизита, в подсистемах, движениях документов, правах ролей и коде.
Соседние инструменты домена «Метаданные»
Операции
| operation | Что делает | Нужно передать |
|---|---|---|
create | Создаёт узел по адресу. Имя — последний сегмент адреса; родитель должен существовать. С коллекционным адресом и массивом — пакетное создание. | project, fqn; definition — свойства узла |
update | Меняет только переданные свойства узла. definition.name переименовывает узел — ответ возвращает новый адрес. Отдельной операции переименования нет. | project, fqn, definition |
delete | Удаляет узел. Необратимо — делайте снапшот; перед удалением — metadata_graph. | project, fqn |
Параметры
| Параметр и тип | Обязательный | Описание | По умолчанию |
|---|---|---|---|
projectстрока | да | Идентификатор проекта рабочей области EDT — имя из ответа project_read (например, УТ2020). Для расширения — проект расширения. | — |
operationстрока | да | Операция инструмента — значения и их смысл в таблице «Операции».значения: create · update · delete | — |
fqnстрока | да | Адрес узла любого уровня: объект, реквизит, табличная часть, измерение, форма, макет. Маркер без имени в конце — коллекционный адрес для пачки. | — |
definitionобъект | массив | для update; для create — свойства узла | Свойства узла без имени (имя — в адресе). Реквизит, измерение, ресурс: type, synonym, comment, index_kind, fill_check_kind, quick_choice, password_mode, multi_line. Форма: form_kind, form_type. У объектов — subsystems. Для update — только меняемые свойства. Массив — пакетное создание, у каждого элемента name, до 100 элементов, всё или ничего. Полный контракт по адресу — metadata_read с гранью #help. | — |
dry_runбулево | нет | true — выполнить в транзакции и гарантированно откатить: ответ показывает изменения, конфигурация не меняется. | false |
titleстрока | нет | Необязательная подпись вызова до 40 символов: клиент показывает её в шапке карточки вызова. На результат не влияет. | — |
Таблица собрана из схемы инструмента, которую получает агент при подключении.
Адреса
Адрес — полное имя узла через точку, русские и английские типы. Маркер без имени — коллекционный адрес для пачки.
| Адрес | Что адресует |
|---|---|
Catalog.Номенклатура | объект верхнего уровня |
Catalog.Контрагенты.Attribute.ИНН | реквизит |
Document.РеализацияТоваровУслуг.TabularSection.Товары | табличная часть |
Document.РеализацияТоваровУслуг.TabularSection.Товары.Attribute.Количество | реквизит табличной части |
InformationRegister.КурсыВалют.Dimension.Валюта | измерение регистра |
Catalog.Контрагенты.Form.ФормаЭлемента | узел формы; содержимое формы — form_write |
Document.РеализацияТоваровУслуг.Template.<Макет> | узел макета; ячейки — spreadsheet_write |
Catalog.Контрагенты.Attribute | коллекционный адрес: пачка реквизитов |
Пример вызова и ответа
Записи типов: Строка(N), Число(p,s), Число(p,s,Nonnegative), Булево, Дата(Date|Time|DateTime), ХранилищеЗначения, УникальныйИдентификатор, ссылочные СправочникСсылка.X, ДокументСсылка.X, ПеречислениеСсылка.X; английские синонимы (String, Number, CatalogRef.X) тоже принимаются. В Changes — то, что инструмент прочитал после записи: «было → стало».
{
"project": "УТ2020",
"operation": "update",
"fqn": "Catalog.Контрагенты.Attribute.ИНН",
"definition": { "type": "Строка(12)", "synonym": "ИНН организации" }
}### 🟢 update — Catalog.Контрагенты.Attribute.ИНН
- **status:** 🟢 committed
- **fqn:** `Catalog.Контрагенты.Attribute.ИНН`
- **operation:** `update`
#### Changes
- synonym: «» → «ИНН организации»
- length: Строка(10) → Строка(12)
#### Warnings
- повторный write перезапишет тип без квалификатораОтказы и ошибки
rolled_back · лишний ключ definition
Ключ не принимается узлом. Ответ называет ключ и ближайший правильный — и ничего не записывает. Контракт — metadata_read с гранью #help.
### 🟠 update — Catalog.Тест.Attribute.Сумма
- **status:** 🟠 rolled_back
- **fqn:** `Catalog.Тест.Attribute.Сумма`
- **operation:** `update`
- **rollback_reason:** validation failed: лишний ключ definition «тип» (did you mean «type»?)rolled_back · тип не разрешён
Тип записан с ошибкой или EDT не допускает его для этого узла. В пачке ответ называет виновный элемент — definition[i] «Имя», и не создаётся ни один узел.
### 🟠 create — Catalog.Тест.Attribute ×3
- **status:** 🟠 rolled_back
- **fqn:** `Catalog.Тест.Attribute`
- **operation:** `create`
- **count:** 3
- **rollback_reason:** definition[1] «Скидка»: тип не разрешён: «Чизло(5,2)»; контракт: metadata_read Catalog.Тест.Attribute#helpfailed · объект на поддержке
Объект закрыт поставщиком (🔒 на поддержке). Дорабатывайте его через расширение — см. Поддержка поставщика. Сразу после запуска EDT вместо этого может прийти support: UNDETERMINED — повторите через несколько секунд.
Не найдено
Родителя по адресу нет или в имени опечатка — ответ предлагает ближайшие имена в секции Did you mean. Проверьте адрес через metadata_read или search с операцией symbol.
failed · Unknown operation
Неизвестное значение operation. В ответе — fix_hint: supported: … со списком допустимых операций и секция Did you mean. Допустимо: create, update, delete.
failed · лицензия
Без действующего ключа инструмент отвечает карточкой failed с сообщением лицензия: … и подсказкой, где ввести ключ; в секции Context — список инструментов, доступных без ключа. Подробнее — Лицензия и бесплатный доступ.
Ограничения
- Пачка — до 100 узлов за вызов, атомарно: либо все, либо ни одного.
- Сразу после запуска EDT в конфигурации на поддержке возможен ответ
support: UNDETERMINED— повторите через несколько секунд. - В проекте расширения пишутся только его собственные и заимствованные объекты; объект базовой конфигурации сначала заимствуйте через
metadata_action. - Не поддерживаются стили и элементы стиля, пакеты XDTO, макеты видов «Текстовый документ» и «Двоичные данные».
- Изменение записывается в модель EDT сразу; файл на диске обновляется через 5–30 секунд — Файл появился на диске не сразу.