Рецепты
Внешняя обработка с нуля
Цель — новая внешняя обработка с формой, реквизитами, командой и кодом — без ручного создания файлов проекта. Проект создаётся штатным сервисом EDT, остальное собирается инструментами метаданных, форм и кода.
Предпосылки
- Базовая конфигурация открыта в EDT — в примерах
УТ2020: от неё обработка берёт версию платформы. - Имя обработки — ваше, в примерах
<Обработка>. - Действует ключ или бесплатный доступ.
Шаги
1. Проект обработки
{
"operation": "create_external_processing",
"project_name": "<Обработка>",
"base_project": "УТ2020",
"synonym": "<Представление обработки>"
}Создаётся проект с пустой внешней обработкой того же имени. Дальше все вызовы — с "project": "<Обработка>".
2. Форма
{ "project": "<Обработка>", "fqn": "ExternalDataProcessor.<Обработка>.Form.Форма#help" }Справка перечисляет допустимые виды формы для обработки. Затем:
{
"project": "<Обработка>",
"operation": "create",
"fqn": "ExternalDataProcessor.<Обработка>.Form.Форма",
"definition": { "form_kind": "<вид из справки>" }
}Ответ содержит Preview с реквизитами и деревом элементов созданной формы. Неподходящий вид — отказ со списком допустимых.
3. Реквизиты формы одной пачкой
{
"project": "<Обработка>",
"operation": "create",
"fqn": "ExternalDataProcessor.<Обработка>.Form.Форма.Attribute",
"definition": [
{ "name": "НачалоПериода", "type": "Дата(Date)", "title": "Начало периода" },
{ "name": "Организация", "type": "СправочникСсылка.Организации", "title": "Организация" }
]
}Тип проверяется по списку, который EDT допускает для реквизита формы: неподдерживаемый тип даёт отказ, а не молчаливый «неизвестный».
4. Команда и поля
{
"project": "<Обработка>",
"operation": "create",
"fqn": "ExternalDataProcessor.<Обработка>.Form.Форма.Command.Выполнить",
"definition": { "action": "Выполнить", "title": "Выполнить" }
}Поля и кнопку добавьте пачкой по адресу ….Form.Форма.Item: элементы { "name": "…", "kind": "field", "data_path": "НачалоПериода" } и { "name": "КнопкаВыполнить", "kind": "button", "command": "Выполнить" }.
5. Код формы
{
"project": "<Обработка>",
"module_fqn": "ExternalDataProcessor.<Обработка>.Form.Форма",
"operation": "create_method",
"area": "ОбработчикиКомандФормы",
"content": "&НаКлиенте\nПроцедура Выполнить(Команда)\n\n\tВыполнитьНаСервере();\n\nКонецПроцедуры"
}Несколько методов — массивом в content: одна проверка синтаксиса и одна запись. Код с синтаксической ошибкой не записывается — ответ 🟠 rolled_back с позицией ошибки.
Проверка
form_readс адресомExternalDataProcessor.<Обработка>.Form.Форма— дерево формы с полями и кнопкой; грань#screenshot— картинка формы.validateсproject: "<Обработка>"иfqn: "ВнешняяОбработка.<Обработка>"— точечная проверка объекта, включая неизвестные идентификаторы в коде.- Файл
.epfсобирается штатными средствами EDT — экспортом проекта внешней обработки; Кванта его не собирает.
Откат
Проект новый, поэтому откат — закрыть и удалить его: project_action с операцией detach и "id": "<Обработка>", затем удалить папку проекта. Отдельные шаги отменяются снапшотом, сделанным после шага 1.