{
  "schemaVersion": 1,
  "id": "4d8fab21-6c3e-4a9f-8b72-1e3d5c7f9a04",
  "name": "Демо: из Excel в веб-форму",
  "description": "Читает клиентов из samples/data/clients.xlsx, подаёт заявку за каждого в веб-форме и записывает номера заявок в колонку «Статус» файла clients_result.xlsx",
  "variables": [
    { "name": "headless", "type": "boolean", "default": false, "isArgument": true },
    { "name": "clients", "type": "list", "default": [], "isArgument": false },
    { "name": "requestNumber", "type": "string", "default": null, "isArgument": false }
  ],
  "steps": [
    {
      "id": "s_copy0001",
      "type": "file.copy",
      "displayName": "Копия таблицы для результатов",
      "props": { "source": "../data/clients.xlsx", "destination": "../data/clients_result.xlsx", "overwrite": true }
    },
    {
      "id": "s_read0001",
      "type": "excel.readRange",
      "displayName": "Прочитать клиентов",
      "props": { "path": "../data/clients_result.xlsx", "sheet": "", "range": "", "hasHeaders": true },
      "out": { "rows": "clients" }
    },
    {
      "id": "s_log00001",
      "type": "control.log",
      "props": { "level": "info", "message": "Клиентов в таблице: {{ clients.length }}" }
    },
    {
      "id": "s_open0001",
      "type": "browser.open",
      "displayName": "Открыть форму в Edge",
      "props": { "browser": "msedge", "url": "../web/form.html", "headless": "{{ headless }}" }
    },
    {
      "id": "s_loop0001",
      "type": "control.forEach",
      "displayName": "Для каждого клиента",
      "props": { "items": "clients", "itemVariable": "client", "indexVariable": "i" },
      "children": {
        "body": [
          {
            "id": "s_fio00001",
            "type": "browser.typeInto",
            "props": { "selector": "#fio", "text": "{{ client['ФИО'] }}", "clearBefore": true }
          },
          {
            "id": "s_phone001",
            "type": "browser.typeInto",
            "props": { "selector": "#phone", "text": "{{ client['Телефон'] }}", "clearBefore": true }
          },
          {
            "id": "s_city0001",
            "type": "browser.selectOption",
            "props": { "selector": "#city", "value": "{{ client['Город'] }}" }
          },
          {
            "id": "s_submit01",
            "type": "browser.click",
            "displayName": "Отправить заявку",
            "props": { "selector": "#submit" }
          },
          {
            "id": "s_wait0001",
            "type": "browser.waitElement",
            "displayName": "Дождаться результата",
            "props": { "selector": "#result", "state": "visible", "timeoutMs": 10000 }
          },
          {
            "id": "s_number01",
            "type": "browser.getText",
            "displayName": "Прочитать номер заявки",
            "props": { "selector": "#requestNumber" },
            "out": { "text": "requestNumber" }
          },
          {
            "id": "s_write001",
            "type": "excel.writeCell",
            "displayName": "Номер заявки в колонку «Статус» (D)",
            "props": { "path": "../data/clients_result.xlsx", "sheet": "", "cell": "D{{ i + 2 }}", "value": "{{ requestNumber }}" }
          },
          {
            "id": "s_logrow01",
            "type": "control.log",
            "props": { "level": "info", "message": "{{ i + 1 }}. {{ client['ФИО'] }} — заявка {{ requestNumber }}" }
          },
          {
            "id": "s_new00001",
            "type": "browser.click",
            "displayName": "Новая заявка",
            "props": { "selector": "#newRequest" }
          }
        ]
      }
    },
    {
      "id": "s_close001",
      "type": "browser.close",
      "props": {}
    },
    {
      "id": "s_done0001",
      "type": "control.log",
      "props": { "level": "info", "message": "Готово: номера заявок записаны в clients_result.xlsx ({{ clients.length }} шт.)" }
    }
  ]
}
