Кабинет
На этой странице

Рецепты

Реквизит и вывод на форму

Цель — добавить в справочник Контрагенты реквизит «Дата первого контакта» и вывести его на форму элемента рядом с нужным полем, с точкой отката до начала.

обновлено 30.09.2026плагин 0.2.0 · EDT 2025.2Предложить правку или письмом

Предпосылки

  • EDT открыт, проект конфигурации загружен; агент подключён — project_read отвечает списком проектов.
  • Действует ключ или бесплатный доступ: инструменты записи и снапшоты — по подписке.
  • Справочник не закрыт поставщиком: metadata_read по адресу Catalog.Контрагенты не показывает в заголовке 🔒 на поддержке. Если показывает — сделайте то же в расширении (Расширение с перехватом метода).

Шаги

1. Снапшот перед серией правок

snapshot_write
{ "operation": "create", "label": "до реквизита ДатаПервогоКонтакта" }

Ожидаемый ответ: 🟢 committed и идентификатор снапшота. Запомните его — он нужен для diff и отката.

2. Контракт записи реквизита

metadata_read
{ "project": "УТ2020", "fqn": "Catalog.Контрагенты.Attribute#help" }

Ответ перечисляет ключи definition для реквизита и допустимые записи типов: Строка(N), Число(p,s), Дата(Date|Time|DateTime), ссылочные СправочникСсылка.X. Если объект закрыт поставщиком, первая строка справки об этом предупредит.

3. Создать реквизит

metadata_write
{
  "project": "УТ2020",
  "operation": "create",
  "fqn": "Catalog.Контрагенты.Attribute.ДатаПервогоКонтакта",
  "definition": { "type": "Дата(Date)", "synonym": "Дата первого контакта" }
}

Ожидаемый ответ: заголовок ### 🟢 create — Catalog.Контрагенты.Attribute.ДатаПервогоКонтакта, статус 🟢 committed, в секции Changes — созданный реквизит с типом в квадратных скобках. Опечатка в типе даёт 🟠 rolled_back с причиной и ссылкой на контракт — справочник при этом не меняется.

4. Найти место на форме

form_read
{ "project": "УТ2020", "fqn": "Catalog.Контрагенты.Form.ФормаЭлемента" }

Ответ — дерево элементов формы с путями к данным. Выберите группу, в которой должно стоять поле, и поле, после которого его поставить. Путь группы записывается от корня через точку, например ГруппаВерх.ГруппаЛево.

5. Вывести поле на форму

form_write
{
  "project": "УТ2020",
  "operation": "create",
  "fqn": "Catalog.Контрагенты.Form.ФормаЭлемента.Item.ДатаПервогоКонтакта",
  "definition": {
    "kind": "field",
    "data_path": "Объект.ДатаПервогоКонтакта",
    "parent": "<путь группы из шага 4>",
    "position": "after:<имя поля из шага 4>"
  }
}

Ожидаемый ответ: 🟢 committed, в Changes — новый элемент формы. Без parent поле встанет в корень формы, без position — последним в группе. Поле создаётся так же, как командой «Добавить элемент» в редакторе формы EDT: с привязкой к данным и всеми обязательными свойствами.

6. Посмотреть форму глазами человека

form_read
{ "project": "УТ2020", "fqn": "Catalog.Контрагенты.Form.ФормаЭлемента#screenshot" }

Ответ — картинка формы, как её рисует редактор EDT. Агент видит, куда встало поле.

7. Что изменилось

snapshot_read
{ "operation": "diff_semantic", "snapshot_id": "<идентификатор из шага 1>" }

Ответ описывает изменения по объектам: новый реквизит справочника с типом и новый элемент формы — без построчного XML.

Проверка

validate
{ "operation": "check", "project": "УТ2020", "fqn": "Справочник.Контрагенты" }

Точечная проверка объекта без полной пересборки проекта: ошибок быть не должно. Откройте форму элемента справочника в EDT — поле «Дата первого контакта» стоит в выбранной группе.

Откат

Всё сразу — к снапшоту из шага 1:

snapshot_action
{ "operation": "restore", "snapshot_id": "<идентификатор из шага 1>" }

Только форму — вернуть один файл, оставив реквизит:

snapshot_action
{
  "operation": "revert_file",
  "snapshot_id": "<идентификатор из шага 1>",
  "path": "УТ2020/src/Catalogs/Контрагенты/Forms/ФормаЭлемента/Form.form"
}

Удалить только поле — form_write с операцией delete и тем же адресом элемента. Подробнее об откате — Откат работы агента.

Нашли ошибку — предложите правку.обновлено 30.09.2026

Например: metadata_write, «порт занят», коллекционный адрес.

↑ ↓ выборEnter открыть/ или Ctrl K — открыть поиск