{
  "id": "complex-c",
  "instruction": "Crea tres objetos secuencialmente: un texto que ponga FACTURA, un rectangulo y una linea. Al texto creado cambiale el color a #17365D, ponlo en negrita, muevelo 15 mm a la derecha y redimensionalo al doble de ancho. Al rectangulo ponle fondo #D9EAF7 y muevelo 10 mm hacia abajo. Mueve tambien la linea 5 mm a la derecha.",
  "model": "gpt-oss:20b",
  "think": "low",
  "initialCommands": {
    "commands": [
      {
        "command": "create",
        "type": "TText",
        "properties": {
          "cText": "\"FACTURA\""
        }
      },
      {
        "command": "setProperty",
        "target": "selection",
        "property": "cTextColor",
        "value": "#17365D"
      },
      {
        "command": "setProperty",
        "target": "selection",
        "property": "lFontBold",
        "value": true
      },
      {
        "command": "move",
        "target": "selection",
        "dx": 15,
        "dy": 0
      },
      {
        "command": "resize",
        "target": "selection",
        "scaleX": 2,
        "scaleY": 1
      },
      {
        "command": "create",
        "type": "TRectangle",
        "properties": {
          "cBackgroundColor": "#D9EAF7"
        }
      },
      {
        "command": "move",
        "target": "selection",
        "dx": 0,
        "dy": 10
      },
      {
        "": "line"
      },
      {
        "command": "create",
        "type": "TLine"
      },
      {
        "command": "move",
        "target": "selection",
        "dx": 5,
        "dy": 0
      }
    ]
  },
  "initialValid": false,
  "initialDiagnostic": {
    "commandIndex": 7,
    "command": "",
    "error": "Comando no soportado."
  },
  "repaired": true,
  "repairedCommands": {
    "commands": [
      {
        "command": "create",
        "type": "TText",
        "properties": {
          "cText": "\"FACTURA\""
        }
      },
      {
        "command": "setProperty",
        "target": "selection",
        "property": "cTextColor",
        "value": "#17365D"
      },
      {
        "command": "setProperty",
        "target": "selection",
        "property": "lFontBold",
        "value": true
      },
      {
        "command": "move",
        "target": "selection",
        "dx": 15,
        "dy": 0
      },
      {
        "command": "resize",
        "target": "selection",
        "scaleX": 2,
        "scaleY": 1
      },
      {
        "command": "create",
        "type": "TRectangle",
        "properties": {
          "cBackgroundColor": "#D9EAF7"
        }
      },
      {
        "command": "move",
        "target": "selection",
        "dx": 0,
        "dy": 10
      },
      {
        "command": "create",
        "type": "TLine"
      },
      {
        "command": "move",
        "target": "selection",
        "dx": 5,
        "dy": 0
      }
    ]
  },
  "repairedValid": true,
  "repairedDiagnostic": null,
  "applied": true,
  "llmCalls": 2,
  "timings": {
    "nInitialInferenceMilliseconds": 4380.371,
    "nInitialDryRunMilliseconds": 36.90000003576279,
    "nRepairInferenceMilliseconds": 5051.599999964237,
    "nRepairDryRunMilliseconds": 40.5,
    "nApplicationMilliseconds": 32.60000002384186,
    "nTotalMilliseconds": 9583
  },
  "visibleMilliseconds": 10745,
  "undoEntries": 1,
  "undo": true,
  "redo": true,
  "redoMatches": true,
  "rollbackMatchesInitial": false,
  "inspection": {
    "rootObjects": [
      {
        "cId": "obj_1786364595832_4d5o10",
        "cName": "Texto",
        "cType": "TText",
        "nLeft": 35,
        "nTop": 20,
        "nWidth": 120,
        "nHeight": 12,
        "lVisible": true,
        "lLocked": false,
        "lSelected": false,
        "nLayerId": 0,
        "nZIndex": 1,
        "cBorderColor": "#000000",
        "cBorderColorFormula": "",
        "nBorderWidth": 0.1,
        "lBorderTop": false,
        "lBorderRight": false,
        "lBorderBottom": false,
        "lBorderLeft": false,
        "cBackgroundColor": "#ffffff",
        "cBackgroundColorFormula": "",
        "cFillStyle": "solid",
        "cFillColor2": "#ffffff",
        "cFillColor2Formula": "",
        "cFillColor3": "#ffffff",
        "cFillColor3Formula": "",
        "nFillOpacity": 1,
        "nRounded": 0,
        "nShadowSize": 0,
        "nShadowTransparency": 50,
        "cShadowColor": "#000000",
        "cShadowColorFormula": "",
        "nRotation": 0,
        "nOpacity": 1,
        "cCondition": "",
        "nPaddingTop": 0,
        "nPaddingRight": 0,
        "nPaddingBottom": 0,
        "nPaddingLeft": 0,
        "nLl12LinkID": 0,
        "nLl12LinkToID": 0,
        "nLl12LinkMode": 0,
        "nLl12GroupId": 0,
        "lLl12WrapBefore": false,
        "cTableId": "",
        "cTableSectionKey": "",
        "cText": "\"FACTURA\"",
        "cFontFamily": "Arial",
        "nFontSize": 12,
        "nFontOutPrecision": 0,
        "nFontPitchAndFamily": 0,
        "lFontBold": true,
        "cFontBoldFormula": "",
        "lFontItalic": false,
        "cFontItalicFormula": "",
        "lFontUnderline": false,
        "cFontUnderlineFormula": "",
        "lFontStrikeout": false,
        "cFontStrikeoutFormula": "",
        "lTextWrap": true,
        "lAllowPageBreak": false,
        "nLineSpacing": 0,
        "nParagraphSpacing": 0,
        "lKeepEmptyParagraphs": true,
        "lTextAdjusted": false,
        "lTrimSpaces": false,
        "cTextFlowGroup": "",
        "nTextFlowOrder": 0,
        "nTextFlowLineHeight": 0,
        "cTextColor": "#17365d",
        "cTextColorFormula": "",
        "nTextOpacity": 1,
        "cTextAlign": "left",
        "nTextDecimalPosition": -10,
        "cTextVerticalAlign": "top",
        "cLl12SourceType": "",
        "cLl12SourceJson": ""
      },
      {
        "cId": "obj_1786364595840_i885k1",
        "cName": "Rectángulo",
        "cType": "TRectangle",
        "nLeft": 20,
        "nTop": 30,
        "nWidth": 50,
        "nHeight": 30,
        "lVisible": true,
        "lLocked": false,
        "lSelected": false,
        "nLayerId": 0,
        "nZIndex": 2,
        "cBorderColor": "#000000",
        "cBorderColorFormula": "",
        "nBorderWidth": 0.1,
        "lBorderTop": true,
        "lBorderRight": true,
        "lBorderBottom": true,
        "lBorderLeft": true,
        "cBackgroundColor": "#d9eaf7",
        "cBackgroundColorFormula": "",
        "cFillStyle": "solid",
        "cFillColor2": "#ffffff",
        "cFillColor2Formula": "",
        "cFillColor3": "#ffffff",
        "cFillColor3Formula": "",
        "nFillOpacity": 1,
        "nRounded": 0,
        "nShadowSize": 0,
        "nShadowTransparency": 50,
        "cShadowColor": "#000000",
        "cShadowColorFormula": "",
        "nRotation": 0,
        "nOpacity": 1,
        "cCondition": "",
        "nPaddingTop": 0,
        "nPaddingRight": 0,
        "nPaddingBottom": 0,
        "nPaddingLeft": 0,
        "nLl12LinkID": 0,
        "nLl12LinkToID": 0,
        "nLl12LinkMode": 0,
        "nLl12GroupId": 0,
        "lLl12WrapBefore": false,
        "cTableId": "",
        "cTableSectionKey": ""
      },
      {
        "cId": "obj_1786364595847_d284jw",
        "cName": "Línea",
        "cType": "TLine",
        "nLeft": 25,
        "nTop": 20,
        "nWidth": 50,
        "nHeight": 1,
        "lVisible": true,
        "lLocked": false,
        "lSelected": true,
        "nLayerId": 0,
        "nZIndex": 3,
        "cBorderColor": "#000000",
        "cBorderColorFormula": "",
        "nBorderWidth": 0.1,
        "lBorderTop": false,
        "lBorderRight": false,
        "lBorderBottom": false,
        "lBorderLeft": false,
        "cBackgroundColor": "transparent",
        "cBackgroundColorFormula": "",
        "cFillStyle": "solid",
        "cFillColor2": "#ffffff",
        "cFillColor2Formula": "",
        "cFillColor3": "#ffffff",
        "cFillColor3Formula": "",
        "nFillOpacity": 1,
        "nRounded": 0,
        "nShadowSize": 0,
        "nShadowTransparency": 50,
        "cShadowColor": "#000000",
        "cShadowColorFormula": "",
        "nRotation": 0,
        "nOpacity": 1,
        "cCondition": "",
        "nPaddingTop": 0,
        "nPaddingRight": 0,
        "nPaddingBottom": 0,
        "nPaddingLeft": 0,
        "nLl12LinkID": 0,
        "nLl12LinkToID": 0,
        "nLl12LinkMode": 0,
        "nLl12GroupId": 0,
        "lLl12WrapBefore": false,
        "cTableId": "",
        "cTableSectionKey": "",
        "cOrientation": "horizontal",
        "cLineStyle": "solid"
      }
    ],
    "texts": [
      {
        "id": "obj_1786364595832_4d5o10",
        "text": "\"FACTURA\"",
        "color": "#17365d",
        "bold": true,
        "align": "left",
        "background": "#ffffff"
      }
    ],
    "tables": [],
    "usedFields": [
      "DETAIL.importe"
    ],
    "inventedFields": []
  },
  "feedback": "Cambio aplicado",
  "error": "",
  "console": [],
  "trace": [
    {
      "action": "commandsExperimental",
      "milliseconds": 4403.5,
      "payload": {
        "cAction": "commandsExperimental",
        "cModelKey": "gpt-oss-20b",
        "cInstruction": "Crea tres objetos secuencialmente: un texto que ponga FACTURA, un rectangulo y una linea. Al texto creado cambiale el color a #17365D, ponlo en negrita, muevelo 15 mm a la derecha y redimensionalo al doble de ancho. Al rectangulo ponle fondo #D9EAF7 y muevelo 10 mm hacia abajo. Mueve tambien la linea 5 mm a la derecha.",
        "aSelectedObjects": [],
        "aPropertyMetadata": [
          {
            "property": "cText",
            "label": "Contenido",
            "group": "Texto",
            "editor": "text",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cFontFamily",
            "label": "Fuente",
            "group": "Texto",
            "editor": "select",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nFontSize",
            "label": "Tamaño",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lFontBold",
            "label": "Negrita",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lFontItalic",
            "label": "Cursiva",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lFontUnderline",
            "label": "Subrayado",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lFontStrikeout",
            "label": "Tachado",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lTextWrap",
            "label": "Partir si no cabe",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lAllowPageBreak",
            "label": "Continuar entre páginas",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nLineSpacing",
            "label": "Interlineado adicional",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nParagraphSpacing",
            "label": "Espacio entre párrafos",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lKeepEmptyParagraphs",
            "label": "Conservar párrafos vacíos",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lTextAdjusted",
            "label": "Justificación forzada",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lTrimSpaces",
            "label": "Recortar espacios exteriores",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cTextColor",
            "label": "Color",
            "group": "Texto",
            "editor": "color",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nTextOpacity",
            "label": "Opacidad texto",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cTextAlign",
            "label": "Alineación",
            "group": "Texto",
            "editor": "select",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nTextDecimalPosition",
            "label": "Posición decimal",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cTextVerticalAlign",
            "label": "Alineación vertical",
            "group": "Texto",
            "editor": "select",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cName",
            "label": "Nombre",
            "group": "Texto",
            "editor": "text",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cType",
            "label": "Tipo de objeto",
            "group": "Texto",
            "editor": "text",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nLayerId",
            "label": "Capa",
            "group": "Texto",
            "editor": "select",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cCondition",
            "label": "Condición de aparición",
            "group": "Texto",
            "editor": "text",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lVisible",
            "label": "Visible",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lLocked",
            "label": "Bloqueado",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nLeft",
            "label": "Izquierda",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nTop",
            "label": "Superior",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nRight",
            "label": "Derecha",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nBottom",
            "label": "Inferior",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nWidth",
            "label": "Ancho",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nHeight",
            "label": "Alto",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cBackgroundColor",
            "label": "Color de fondo",
            "group": "Texto",
            "editor": "color",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cFillStyle",
            "label": "Tipo de relleno",
            "group": "Texto",
            "editor": "select",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cFillColor2",
            "label": "Color final",
            "group": "Texto",
            "editor": "color",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cFillColor3",
            "label": "Color intermedio",
            "group": "Texto",
            "editor": "color",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nFillOpacity",
            "label": "Opacidad del relleno",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nRotation",
            "label": "Rotación",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nOpacity",
            "label": "Opacidad",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cBorderColor",
            "label": "Color",
            "group": "Texto",
            "editor": "color",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nBorderWidth",
            "label": "Grosor",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "borderVisibility",
            "label": "Visibilidad",
            "group": "Texto",
            "editor": "border-visibility",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nRounded",
            "label": "Redondeo",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nShadowSize",
            "label": "Grosor",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nShadowTransparency",
            "label": "Transparencia",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cShadowColor",
            "label": "Color",
            "group": "Texto",
            "editor": "color",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cName",
            "label": "Nombre",
            "group": "Rectángulo",
            "editor": "text",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "cType",
            "label": "Tipo de objeto",
            "group": "Rectángulo",
            "editor": "text",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nLayerId",
            "label": "Capa",
            "group": "Rectángulo",
            "editor": "select",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "cCondition",
            "label": "Condición de aparición",
            "group": "Rectángulo",
            "editor": "text",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "lVisible",
            "label": "Visible",
            "group": "Rectángulo",
            "editor": "checkbox",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "lLocked",
            "label": "Bloqueado",
            "group": "Rectángulo",
            "editor": "checkbox",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nLeft",
            "label": "Izquierda",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nTop",
            "label": "Superior",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nRight",
            "label": "Derecha",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nBottom",
            "label": "Inferior",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nWidth",
            "label": "Ancho",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nHeight",
            "label": "Alto",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "cBackgroundColor",
            "label": "Color de fondo",
            "group": "Rectángulo",
            "editor": "color",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "cFillStyle",
            "label": "Tipo de relleno",
            "group": "Rectángulo",
            "editor": "select",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "cFillColor2",
            "label": "Color final",
            "group": "Rectángulo",
            "editor": "color",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "cFillColor3",
            "label": "Color intermedio",
            "group": "Rectángulo",
            "editor": "color",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nFillOpacity",
            "label": "Opacidad del relleno",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nRotation",
            "label": "Rotación",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nOpacity",
            "label": "Opacidad",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "cBorderColor",
            "label": "Color",
            "group": "Rectángulo",
            "editor": "color",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nBorderWidth",
            "label": "Grosor",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "borderVisibility",
            "label": "Visibilidad",
            "group": "Rectángulo",
            "editor": "border-visibility",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nRounded",
            "label": "Redondeo",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nShadowSize",
            "label": "Grosor",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nShadowTransparency",
            "label": "Transparencia",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "cShadowColor",
            "label": "Color",
            "group": "Rectángulo",
            "editor": "color",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "cName",
            "label": "Nombre",
            "group": "Elipse",
            "editor": "text",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "cType",
            "label": "Tipo de objeto",
            "group": "Elipse",
            "editor": "text",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nLayerId",
            "label": "Capa",
            "group": "Elipse",
            "editor": "select",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "cCondition",
            "label": "Condición de aparición",
            "group": "Elipse",
            "editor": "text",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "lVisible",
            "label": "Visible",
            "group": "Elipse",
            "editor": "checkbox",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "lLocked",
            "label": "Bloqueado",
            "group": "Elipse",
            "editor": "checkbox",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nLeft",
            "label": "Izquierda",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nTop",
            "label": "Superior",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nRight",
            "label": "Derecha",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nBottom",
            "label": "Inferior",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nWidth",
            "label": "Ancho",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nHeight",
            "label": "Alto",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "cBackgroundColor",
            "label": "Color de fondo",
            "group": "Elipse",
            "editor": "color",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "cFillStyle",
            "label": "Tipo de relleno",
            "group": "Elipse",
            "editor": "select",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "cFillColor2",
            "label": "Color final",
            "group": "Elipse",
            "editor": "color",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "cFillColor3",
            "label": "Color intermedio",
            "group": "Elipse",
            "editor": "color",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nFillOpacity",
            "label": "Opacidad del relleno",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nRotation",
            "label": "Rotación",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nOpacity",
            "label": "Opacidad",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "cBorderColor",
            "label": "Color",
            "group": "Elipse",
            "editor": "color",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nBorderWidth",
            "label": "Grosor",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "borderVisibility",
            "label": "Visibilidad",
            "group": "Elipse",
            "editor": "border-visibility",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nRounded",
            "label": "Redondeo",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nShadowSize",
            "label": "Grosor",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nShadowTransparency",
            "label": "Transparencia",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "cShadowColor",
            "label": "Color",
            "group": "Elipse",
            "editor": "color",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "cName",
            "label": "Nombre",
            "group": "Imagen",
            "editor": "text",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cType",
            "label": "Tipo de objeto",
            "group": "Imagen",
            "editor": "text",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nLayerId",
            "label": "Capa",
            "group": "Imagen",
            "editor": "select",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cCondition",
            "label": "Condición de aparición",
            "group": "Imagen",
            "editor": "text",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "lVisible",
            "label": "Visible",
            "group": "Imagen",
            "editor": "checkbox",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "lLocked",
            "label": "Bloqueado",
            "group": "Imagen",
            "editor": "checkbox",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cSource",
            "label": "Origen / contenido",
            "group": "Imagen",
            "editor": "text",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cSourceType",
            "label": "Tipo de origen",
            "group": "Imagen",
            "editor": "select",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "lKeepRatio",
            "label": "Mantener proporción",
            "group": "Imagen",
            "editor": "checkbox",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cFit",
            "label": "Ajuste",
            "group": "Imagen",
            "editor": "select",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nLeft",
            "label": "Izquierda",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nTop",
            "label": "Superior",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nRight",
            "label": "Derecha",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nBottom",
            "label": "Inferior",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nWidth",
            "label": "Ancho",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nHeight",
            "label": "Alto",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cBackgroundColor",
            "label": "Color de fondo",
            "group": "Imagen",
            "editor": "color",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cFillStyle",
            "label": "Tipo de relleno",
            "group": "Imagen",
            "editor": "select",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cFillColor2",
            "label": "Color final",
            "group": "Imagen",
            "editor": "color",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cFillColor3",
            "label": "Color intermedio",
            "group": "Imagen",
            "editor": "color",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nFillOpacity",
            "label": "Opacidad del relleno",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nRotation",
            "label": "Rotación",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nOpacity",
            "label": "Opacidad",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cBorderColor",
            "label": "Color",
            "group": "Imagen",
            "editor": "color",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nBorderWidth",
            "label": "Grosor",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "borderVisibility",
            "label": "Visibilidad",
            "group": "Imagen",
            "editor": "border-visibility",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nRounded",
            "label": "Redondeo",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nShadowSize",
            "label": "Grosor",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nShadowTransparency",
            "label": "Transparencia",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cShadowColor",
            "label": "Color",
            "group": "Imagen",
            "editor": "color",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cName",
            "label": "Nombre",
            "group": "Línea",
            "editor": "text",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "cType",
            "label": "Tipo de objeto",
            "group": "Línea",
            "editor": "text",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nLayerId",
            "label": "Capa",
            "group": "Línea",
            "editor": "select",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "cCondition",
            "label": "Condición de aparición",
            "group": "Línea",
            "editor": "text",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "lVisible",
            "label": "Visible",
            "group": "Línea",
            "editor": "checkbox",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "lLocked",
            "label": "Bloqueado",
            "group": "Línea",
            "editor": "checkbox",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "cOrientation",
            "label": "Orientación",
            "group": "Línea",
            "editor": "select",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "cBorderColor",
            "label": "Color",
            "group": "Línea",
            "editor": "color",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nBorderWidth",
            "label": "Grosor",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "cLineStyle",
            "label": "Estilo",
            "group": "Línea",
            "editor": "select",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nLeft",
            "label": "Izquierda",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nTop",
            "label": "Superior",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nRight",
            "label": "Derecha",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nBottom",
            "label": "Inferior",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nWidth",
            "label": "Ancho",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nHeight",
            "label": "Alto",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "cFillStyle",
            "label": "Tipo de relleno",
            "group": "Línea",
            "editor": "select",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "cFillColor2",
            "label": "Color final",
            "group": "Línea",
            "editor": "color",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "cFillColor3",
            "label": "Color intermedio",
            "group": "Línea",
            "editor": "color",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nFillOpacity",
            "label": "Opacidad del relleno",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nRotation",
            "label": "Rotación",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nOpacity",
            "label": "Opacidad",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nShadowSize",
            "label": "Grosor",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nShadowTransparency",
            "label": "Transparencia",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "cShadowColor",
            "label": "Color",
            "group": "Línea",
            "editor": "color",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "cName",
            "label": "Nombre",
            "group": "Código de barras",
            "editor": "text",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cType",
            "label": "Tipo de objeto",
            "group": "Código de barras",
            "editor": "text",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nLayerId",
            "label": "Capa",
            "group": "Código de barras",
            "editor": "select",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cCondition",
            "label": "Condición de aparición",
            "group": "Código de barras",
            "editor": "text",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "lVisible",
            "label": "Visible",
            "group": "Código de barras",
            "editor": "checkbox",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "lLocked",
            "label": "Bloqueado",
            "group": "Código de barras",
            "editor": "checkbox",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cContent",
            "label": "Contenido",
            "group": "Código de barras",
            "editor": "text",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cBarcodeType",
            "label": "Tipo",
            "group": "Código de barras",
            "editor": "select",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "lShowText",
            "label": "Mostrar texto",
            "group": "Código de barras",
            "editor": "checkbox",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "lTrimSpaces",
            "label": "Recortar espacios exteriores",
            "group": "Código de barras",
            "editor": "checkbox",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cFontFamily",
            "label": "Fuente",
            "group": "Código de barras",
            "editor": "select",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nFontSize",
            "label": "Tamaño",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "lFontBold",
            "label": "Negrita",
            "group": "Código de barras",
            "editor": "checkbox",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "lFontItalic",
            "label": "Cursiva",
            "group": "Código de barras",
            "editor": "checkbox",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "lFontUnderline",
            "label": "Subrayado",
            "group": "Código de barras",
            "editor": "checkbox",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "lFontStrikeout",
            "label": "Tachado",
            "group": "Código de barras",
            "editor": "checkbox",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cColor",
            "label": "Color",
            "group": "Código de barras",
            "editor": "color",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cBackgroundColor",
            "label": "Color de fondo",
            "group": "Código de barras",
            "editor": "color",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nLeft",
            "label": "Izquierda",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nTop",
            "label": "Superior",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nRight",
            "label": "Derecha",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nBottom",
            "label": "Inferior",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nWidth",
            "label": "Ancho",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nHeight",
            "label": "Alto",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cFillStyle",
            "label": "Tipo de relleno",
            "group": "Código de barras",
            "editor": "select",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cFillColor2",
            "label": "Color final",
            "group": "Código de barras",
            "editor": "color",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cFillColor3",
            "label": "Color intermedio",
            "group": "Código de barras",
            "editor": "color",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nFillOpacity",
            "label": "Opacidad del relleno",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nRotation",
            "label": "Rotación",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nOpacity",
            "label": "Opacidad",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cBorderColor",
            "label": "Color",
            "group": "Código de barras",
            "editor": "color",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nBorderWidth",
            "label": "Grosor",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "borderVisibility",
            "label": "Visibilidad",
            "group": "Código de barras",
            "editor": "border-visibility",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nRounded",
            "label": "Redondeo",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nShadowSize",
            "label": "Grosor",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nShadowTransparency",
            "label": "Transparencia",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cShadowColor",
            "label": "Color",
            "group": "Código de barras",
            "editor": "color",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cContent",
            "label": "Contenido",
            "group": "Texto enriquecido",
            "editor": "text",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cVerticalAlign",
            "label": "Alineación vertical",
            "group": "Texto enriquecido",
            "editor": "select",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cOverflow",
            "label": "Desbordamiento",
            "group": "Texto enriquecido",
            "editor": "select",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cName",
            "label": "Nombre",
            "group": "Texto enriquecido",
            "editor": "text",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cType",
            "label": "Tipo de objeto",
            "group": "Texto enriquecido",
            "editor": "text",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nLayerId",
            "label": "Capa",
            "group": "Texto enriquecido",
            "editor": "select",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cCondition",
            "label": "Condición de aparición",
            "group": "Texto enriquecido",
            "editor": "text",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "lVisible",
            "label": "Visible",
            "group": "Texto enriquecido",
            "editor": "checkbox",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "lLocked",
            "label": "Bloqueado",
            "group": "Texto enriquecido",
            "editor": "checkbox",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nLeft",
            "label": "Izquierda",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nTop",
            "label": "Superior",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nRight",
            "label": "Derecha",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nBottom",
            "label": "Inferior",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nWidth",
            "label": "Ancho",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nHeight",
            "label": "Alto",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cBackgroundColor",
            "label": "Color de fondo",
            "group": "Texto enriquecido",
            "editor": "color",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cFillStyle",
            "label": "Tipo de relleno",
            "group": "Texto enriquecido",
            "editor": "select",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cFillColor2",
            "label": "Color final",
            "group": "Texto enriquecido",
            "editor": "color",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cFillColor3",
            "label": "Color intermedio",
            "group": "Texto enriquecido",
            "editor": "color",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nFillOpacity",
            "label": "Opacidad del relleno",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nRotation",
            "label": "Rotación",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nOpacity",
            "label": "Opacidad",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cBorderColor",
            "label": "Color",
            "group": "Texto enriquecido",
            "editor": "color",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nBorderWidth",
            "label": "Grosor",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "borderVisibility",
            "label": "Visibilidad",
            "group": "Texto enriquecido",
            "editor": "border-visibility",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nRounded",
            "label": "Redondeo",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nShadowSize",
            "label": "Grosor",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nShadowTransparency",
            "label": "Transparencia",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cShadowColor",
            "label": "Color",
            "group": "Texto enriquecido",
            "editor": "color",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cText",
            "label": "Contenido",
            "group": "Texto formateado",
            "editor": "text",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cFontFamily",
            "label": "Fuente",
            "group": "Texto formateado",
            "editor": "select",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nFontSize",
            "label": "Tamaño",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lFontBold",
            "label": "Negrita",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lFontItalic",
            "label": "Cursiva",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lFontUnderline",
            "label": "Subrayado",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lFontStrikeout",
            "label": "Tachado",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lTextWrap",
            "label": "Partir si no cabe",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lAllowPageBreak",
            "label": "Continuar entre páginas",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nLineSpacing",
            "label": "Interlineado adicional",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nParagraphSpacing",
            "label": "Espacio entre párrafos",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lKeepEmptyParagraphs",
            "label": "Conservar párrafos vacíos",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lTextAdjusted",
            "label": "Justificación forzada",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lTrimSpaces",
            "label": "Recortar espacios exteriores",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cTextColor",
            "label": "Color",
            "group": "Texto formateado",
            "editor": "color",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nTextOpacity",
            "label": "Opacidad texto",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cTextAlign",
            "label": "Alineación",
            "group": "Texto formateado",
            "editor": "select",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nTextDecimalPosition",
            "label": "Posición decimal",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cTextVerticalAlign",
            "label": "Alineación vertical",
            "group": "Texto formateado",
            "editor": "select",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cName",
            "label": "Nombre",
            "group": "Texto formateado",
            "editor": "text",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cType",
            "label": "Tipo de objeto",
            "group": "Texto formateado",
            "editor": "text",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nLayerId",
            "label": "Capa",
            "group": "Texto formateado",
            "editor": "select",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cCondition",
            "label": "Condición de aparición",
            "group": "Texto formateado",
            "editor": "text",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lVisible",
            "label": "Visible",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lLocked",
            "label": "Bloqueado",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nLeft",
            "label": "Izquierda",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nTop",
            "label": "Superior",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nRight",
            "label": "Derecha",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nBottom",
            "label": "Inferior",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nWidth",
            "label": "Ancho",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nHeight",
            "label": "Alto",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cBackgroundColor",
            "label": "Color de fondo",
            "group": "Texto formateado",
            "editor": "color",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cFillStyle",
            "label": "Tipo de relleno",
            "group": "Texto formateado",
            "editor": "select",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cFillColor2",
            "label": "Color final",
            "group": "Texto formateado",
            "editor": "color",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cFillColor3",
            "label": "Color intermedio",
            "group": "Texto formateado",
            "editor": "color",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nFillOpacity",
            "label": "Opacidad del relleno",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nRotation",
            "label": "Rotación",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nOpacity",
            "label": "Opacidad",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cBorderColor",
            "label": "Color",
            "group": "Texto formateado",
            "editor": "color",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nBorderWidth",
            "label": "Grosor",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "borderVisibility",
            "label": "Visibilidad",
            "group": "Texto formateado",
            "editor": "border-visibility",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nRounded",
            "label": "Redondeo",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nShadowSize",
            "label": "Grosor",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nShadowTransparency",
            "label": "Transparencia",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cShadowColor",
            "label": "Color",
            "group": "Texto formateado",
            "editor": "color",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cName",
            "label": "Nombre",
            "group": "Tabla",
            "editor": "text",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "cType",
            "label": "Tipo de objeto",
            "group": "Tabla",
            "editor": "text",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nLayerId",
            "label": "Capa",
            "group": "Tabla",
            "editor": "select",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "cCondition",
            "label": "Condición de aparición",
            "group": "Tabla",
            "editor": "text",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "lVisible",
            "label": "Visible",
            "group": "Tabla",
            "editor": "checkbox",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "lLocked",
            "label": "Bloqueado",
            "group": "Tabla",
            "editor": "checkbox",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nLeft",
            "label": "Izquierda",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nTop",
            "label": "Superior",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nRight",
            "label": "Derecha",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nBottom",
            "label": "Inferior",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nWidth",
            "label": "Ancho",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "cHeightMode",
            "label": "Modo de altura",
            "group": "Tabla",
            "editor": "select",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nHeight",
            "label": "Alto",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "cBackgroundColor",
            "label": "Color de fondo",
            "group": "Tabla",
            "editor": "color",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "cFillStyle",
            "label": "Tipo de relleno",
            "group": "Tabla",
            "editor": "select",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "cFillColor2",
            "label": "Color final",
            "group": "Tabla",
            "editor": "color",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "cFillColor3",
            "label": "Color intermedio",
            "group": "Tabla",
            "editor": "color",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nFillOpacity",
            "label": "Opacidad del relleno",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nRotation",
            "label": "Rotación",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nOpacity",
            "label": "Opacidad",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "cBorderColor",
            "label": "Color",
            "group": "Tabla",
            "editor": "color",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nBorderWidth",
            "label": "Grosor",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "borderVisibility",
            "label": "Visibilidad",
            "group": "Tabla",
            "editor": "border-visibility",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nRounded",
            "label": "Redondeo",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nShadowSize",
            "label": "Grosor",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nShadowTransparency",
            "label": "Transparencia",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "cShadowColor",
            "label": "Color",
            "group": "Tabla",
            "editor": "color",
            "type": "TTable",
            "typeLabel": "Tabla"
          }
        ],
        "aAvailableFields": [
          {
            "cName": "DETAIL.cantidad",
            "cType": "numerico",
            "cOrigin": "DetalleVar",
            "cGroup": "DETAIL"
          },
          {
            "cName": "DETAIL.codigo",
            "cType": "texto",
            "cOrigin": "DetalleVar",
            "cGroup": "DETAIL"
          },
          {
            "cName": "DETAIL.descripcion",
            "cType": "texto",
            "cOrigin": "DetalleVar",
            "cGroup": "DETAIL"
          },
          {
            "cName": "DETAIL.importe",
            "cType": "numerico",
            "cOrigin": "DetalleVar",
            "cGroup": "DETAIL"
          },
          {
            "cName": "DETAIL.precio",
            "cType": "numerico",
            "cOrigin": "DetalleVar",
            "cGroup": "DETAIL"
          },
          {
            "cName": "HEADER.cif",
            "cType": "texto",
            "cOrigin": "DataVar",
            "cGroup": "HEADER"
          },
          {
            "cName": "HEADER.cliente",
            "cType": "texto",
            "cOrigin": "DataVar",
            "cGroup": "HEADER"
          },
          {
            "cName": "HEADER.direccion",
            "cType": "texto",
            "cOrigin": "DataVar",
            "cGroup": "HEADER"
          },
          {
            "cName": "HEADER.fecha",
            "cType": "fecha",
            "cOrigin": "DataVar",
            "cGroup": "HEADER"
          },
          {
            "cName": "HEADER.logo",
            "cType": "imagen",
            "cOrigin": "DataVar",
            "cGroup": "HEADER"
          },
          {
            "cName": "HEADER.numero",
            "cType": "numerico",
            "cOrigin": "DataVar",
            "cGroup": "HEADER"
          },
          {
            "cName": "HEADER.total",
            "cType": "numerico",
            "cOrigin": "DataVar",
            "cGroup": "HEADER"
          },
          {
            "cName": "SUM.TotalDetalle",
            "cType": "numerico",
            "cOrigin": "AcumVar",
            "cGroup": "SUM"
          },
          {
            "cName": "VAR.Moneda",
            "cType": "texto",
            "cOrigin": "UserVar",
            "cGroup": "VAR"
          },
          {
            "cName": "VAR.Titulo",
            "cType": "texto",
            "cOrigin": "UserVar",
            "cGroup": "VAR"
          }
        ],
        "hTemplate": {
          "cType": "TDocument",
          "cFormatVersion": "1.0",
          "cTemplateId": "",
          "cTemplateName": "Documento",
          "cDocumentKind": "report",
          "cPaperFormat": "a4",
          "cPaperOrientation": "portrait",
          "tModifiedAt": "2026-08-10T12:06:21.320Z",
          "cFileName": "",
          "nPaperWidth": 210,
          "nPaperHeight": 297,
          "cPaperHeightMode": "fixed",
          "nDesignHeight": 250,
          "nContinuousBottomMargin": 5,
          "lShowGrid": true,
          "hUserVars": {
            "Moneda": {
              "tipo": "texto",
              "formula": "\"EUR\""
            },
            "Titulo": {
              "tipo": "texto",
              "formula": "\"Factura\""
            }
          },
          "hAcumVars": {
            "TotalDetalle": {
              "tipo": "numerico",
              "formula": "DETAIL.importe"
            }
          },
          "hImportMetadata": {},
          "hLabelLayout": {
            "nLabelWidth": 70,
            "nLabelHeight": 37,
            "nColumns": 3,
            "nRows": 8,
            "nMarginLeft": 0,
            "nMarginTop": 0,
            "nGapHorizontal": 0,
            "nGapVertical": 0,
            "cFlow": "row",
            "cLabelFormat": "manual",
            "nPrintOffsetX": 0,
            "nPrintOffsetY": 0
          },
          "hLayers": {
            "0": {
              "nId": 0,
              "cName": "Capa 1",
              "cCondition": "",
              "lDesignerVisible": true,
              "cColor": "#000000"
            }
          },
          "aObjects": []
        }
      },
      "response": {
        "lOk": true,
        "hInspection": {
          "cInstruction": "Crea tres objetos secuencialmente: un texto que ponga FACTURA, un rectangulo y una linea. Al texto creado cambiale el color a #17365D, ponlo en negrita, muevelo 15 mm a la derecha y redimensionalo al doble de ancho. Al rectangulo ponle fondo #D9EAF7 y muevelo 10 mm hacia abajo. Mueve tambien la linea 5 mm a la derecha.",
          "cProvider": "Ollama",
          "cModelSelection": "Ollama — GPT-OSS 20B",
          "cModel": "gpt-oss:20b",
          "cRepresentation": "COMMANDS",
          "cRawResponse": "{\"commands\":[{\"command\":\"create\",\"type\":\"TText\",\"properties\":{\"cText\":\"\\\"FACTURA\\\"\"}},{\"command\":\"setProperty\",\"target\":\"selection\",\"property\":\"cTextColor\",\"value\":\"#17365D\"},{\"command\":\"setProperty\",\"target\":\"selection\",\"property\":\"lFontBold\",\"value\":true},{\"command\":\"move\",\"target\":\"selection\",\"dx\":15,\"dy\":0},{\"command\":\"resize\",\"target\":\"selection\",\"scaleX\":2,\"scaleY\":1},{\"command\":\"create\",\"type\":\"TRectangle\",\"properties\":{\"cBackgroundColor\":\"#D9EAF7\"}},{\"command\":\"move\",\"target\":\"selection\",\"dx\":0,\"dy\":10},{\"\":\"line\"},{\"command\":\"create\",\"type\":\"TLine\"},{\"command\":\"move\",\"target\":\"selection\",\"dx\":5,\"dy\":0}]}",
          "cThinking": "Need create text, rectangle, line. Then setProperty color and bold for text; move and resize. For rectangle: setProperty background color, move. For line: move.\n\nReturn commands array. Use target:\"selection\" after creation? We need to refer to created objects. Since we don't have ids, use selection? But after create, selection likely includes new object? Probably use target:\"selection\". So sequence: create text, then setProperty color and bold, move, resize. Then create rectangle, setProperty background, move. Then create line, move.\n\nReturn JSON.",
          "cOllamaRequest": "{\"model\":\"gpt-oss:20b\",\"messages\":[{\"role\":\"system\",\"content\":\"Interpreta la instrucción y devuelve únicamente JSON válido con la forma {\\\"commands\\\":[{\\\"command\\\":\\\"setProperty\\\",\\\"target\\\":\\\"selection\\\" o {\\\"ids\\\":[\\\"id_real\\\"]},\\\"property\\\":\\\"propiedad_real\\\",\\\"value\\\":valor}]}. Cada comando DEBE usar la clave command (nunca type) y target. Comandos permitidos: setProperty, move, resize, delete, align, distribute, reorder, duplicate, tableMoveColumn, tableSetColumnWidth, tableInsertColumn, tableDeleteColumn, tableInsertLine, tableDeleteLine, tableMoveLine, tableSetLineHeight, tableSetLineBackground, tableSetLineBorderColor, tableSetLineBorderWidth, tableSetLinePadding, tableSetLineBorderRadius, tableSetLineBorderSide, tableSetLineVerticalSeparators, tableSetLineZebraEnabled, tableSetLineZebraColor, tableSetLineCondition, tableSetLineSuppressCondition, tableSetLineBackgroundColorFormula, tableSetLineBorderColorFormula. Prioridad: propiedad o estilo → setProperty; desplazamiento relativo → move; tamaño relativo → resize; alineación de varios objetos → align; eliminar objetos → delete. Para eliminar usa exactamente {\\\"command\\\":\\\"delete\\\",\\\"target\\\":\\\"selection\\\"}. Si se pide duplicar, reducir o cambiar el tamaño, devuelve únicamente resize y no uses setProperty para propiedades numéricas. Para setProperty usa exactamente property y value, nunca name ni valores como *2. Para move usa {\\\"command\\\":\\\"move\\\",\\\"target\\\":\\\"selection\\\",\\\"dx\\\":10,\\\"dy\\\":0}; para resize usa {\\\"command\\\":\\\"resize\\\",\\\"target\\\":\\\"selection\\\",\\\"scaleX\\\":0.5,\\\"scaleY\\\":0.5}. Para alinear usa exactamente {\\\"command\\\":\\\"align\\\",\\\"target\\\":\\\"selection\\\",\\\"mode\\\":\\\"left\\\"}; modos válidos: left|right|top|bottom|horizontalCenter|verticalCenter. Si la orden se refiere a los objetos seleccionados, usa target:\\\"selection\\\". No inventes IDs ni calcules coordenadas o dimensiones finales. Para distribuir usa exactamente {\\\"command\\\":\\\"distribute\\\",\\\"target\\\":\\\"selection\\\",\\\"mode\\\":\\\"horizontal\\\"}; modos válidos: horizontal|vertical. Para reordenar usa exactamente {\\\"command\\\":\\\"reorder\\\",\\\"target\\\":\\\"selection\\\",\\\"mode\\\":\\\"bringToFront\\\"}; modos válidos: bringToFront=traer al frente, sendToBack=enviar al fondo, bringForward=subir un nivel, sendBackward=bajar un nivel. Para duplicar usa exactamente {\\\"command\\\":\\\"duplicate\\\",\\\"target\\\":\\\"selection\\\"}. Para tablas usa únicamente estas formas: {\\\"command\\\":\\\"tableMoveColumn\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"header\\\",\\\"lineIndex\\\":0,\\\"fromIndex\\\":2,\\\"toIndex\\\":0}, {\\\"command\\\":\\\"tableSetColumnWidth\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"header\\\",\\\"lineIndex\\\":0,\\\"columnIndex\\\":0,\\\"width\\\":30}, {\\\"command\\\":\\\"tableInsertColumn\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"columnIndex\\\":2}, {\\\"command\\\":\\\"tableDeleteColumn\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"columnIndex\\\":2}, {\\\"command\\\":\\\"tableInsertLine\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":1}, {\\\"command\\\":\\\"tableDeleteLine\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":1}, {\\\"command\\\":\\\"tableMoveLine\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"fromIndex\\\":1,\\\"toIndex\\\":0}, {\\\"command\\\":\\\"tableSetLineHeight\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"height\\\":12}, {\\\"command\\\":\\\"tableSetLineBackground\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"color\\\":\\\"#d3d3d3\\\"}; section: header|groupHeader|detail|groupFooter|footer. Los índices son enteros cero-basados y no negativos. tableSetLineHeight usa altura fija en milímetros >=1. tableSetLineBackground usa únicamente color HEX fijo; no usa fórmulas ni paths privados. Insertar columna usa columnIndex como posición antes de la columna existente; si coincide con el número actual de columnas, añade al final. Insertar línea usa lineIndex como posición antes de la línea existente; si coincide con el número actual de líneas, añade al final. No uses hSections, aLines ni aCells. Semántica de líneas OBLIGATORIA: si una sección tiene una sola línea, basta mencionar la sección y usa lineIndex 0. Si tiene varias líneas, una operación estructural debe indicar la línea; si no la indica y no dice todas, devuelve EXACTAMENTE {\\\"commands\\\":[]}. Solo si dice todas las líneas genera una operación por cada línea existente. Esta regla no afecta a objetos visuales de celda, que siguen usando commands normales. Para cambiar altura o fondo fijo de una línea de TTable usa obligatoriamente tableSetLineHeight o tableSetLineBackground con section y lineIndex; no uses setProperty para esas operaciones. Shapes adicionales de línea: {\\\"command\\\":\\\"tableSetLineBorderColor\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"color\\\":\\\"#0000ff\\\"}, {\\\"command\\\":\\\"tableSetLineBorderWidth\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"width\\\":1}, {\\\"command\\\":\\\"tableSetLinePadding\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"side\\\":\\\"nTop\\\",\\\"value\\\":2}, {\\\"command\\\":\\\"tableSetLineBorderRadius\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"radius\\\":2}, {\\\"command\\\":\\\"tableSetLineBorderSide\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"side\\\":\\\"top\\\",\\\"visible\\\":true}, {\\\"command\\\":\\\"tableSetLineVerticalSeparators\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"visible\\\":true}, {\\\"command\\\":\\\"tableSetLineCondition\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"formula\\\":\\\"DETAIL.cantidad > 0\\\"}, {\\\"command\\\":\\\"tableSetLineSuppressCondition\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"formula\\\":\\\"DETAIL.importe == 0\\\"}, {\\\"command\\\":\\\"tableSetLineBackgroundColorFormula\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"formula\\\":\\\"IF(...)\\\"}, {\\\"command\\\":\\\"tableSetLineBorderColorFormula\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"formula\\\":\\\"IF(...)\\\"}. Las cuatro primitivas de fórmula reciben formula como string literal y aceptan string vacío para borrar; no evalúes ni cambies la sintaxis. Usa la primitiva específica según sea condición, supresión o fórmula de color; no uses paths hBorder, hBackground ni setProperty. Si la instrucción menciona una línea, cabecera, detalle o pie, el color de borde de esa línea usa tableSetLineBorderColor y nunca setProperty. Zebra solo existe en líneas detail. Shapes exactas: {\\\"command\\\":\\\"tableSetLineZebraEnabled\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"enabled\\\":true} y {\\\"command\\\":\\\"tableSetLineZebraColor\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"role\\\":\\\"odd\\\",\\\"color\\\":\\\"#d3d3d3\\\"}. Usa enabled booleano para activar o desactivar y role odd/even para filas impares/pares. No uses hZebraPattern ni paths privados. REGLA DE SCOPE OBLIGATORIA: estos, ellos, los seleccionados y pronombres equivalentes -> target:\\\"selection\\\". Todos, todas, todo el documento, todos los objetos o todos los objetos de un tipo -> target:{\\\"ids\\\":[...]} usando todos los cId coincidentes de DOCUMENTO_COMPLETO_SCOPE=global, incluidos objetos anidados en TTable. Si la selección está vacía, una orden global debe usar siempre ids. Para una orden global no uses target:\\\"selection\\\" ni mezcles ambos targets. También se permite create: {\\\"command\\\":\\\"create\\\",\\\"type\\\":\\\"TText\\\",\\\"properties\\\":{\\\"cText\\\":\\\"\\\\\\\\\\\"texto\\\\\\\\\\\"\\\"}}. En create describe únicamente lo solicitado: incluye solo el tipo, contenido, posición y propiedades que la instrucción pida explícitamente; el diseñador completa los defaults reales. Tipos reales: TText,TRectangle,TEllipse,TImage,TLine,TBarcode,richText,TFormattedText,TTable. Properties solo editables, nunca cId, defaults, estructura interna ni geometría. position usa {\\\"x\\\":20,\\\"y\\\":30}. Para crear una tabla usa {\\\"command\\\":\\\"create\\\",\\\"ref\\\":\\\"tabla1\\\",\\\"type\\\":\\\"TTable\\\"}; las primitives TTable posteriores pueden usar target:{\\\"ref\\\":\\\"tabla1\\\"}. Una TTable recién creada tiene las secciones vacías. Antes de insertar columnas o modificar una línea, crea esa línea con tableInsertLine. tableInsertLine crea siempre una línea válida con exactamente 1 columna inicial. SEMÁNTICA OBLIGATORIA DEL NÚMERO DE COLUMNAS: \\\"de N columnas\\\", \\\"con N columnas\\\" y \\\"que tenga N columnas\\\" expresan el TOTAL FINAL deseado; genera exactamente N menos las columnas actuales operaciones tableInsertColumn. Después de tableInsertLine ya hay 1 columna: para una línea de 4 columnas genera exactamente 3 tableInsertColumn y el total final es 4, nunca 4 inserciones. \\\"añade N columnas\\\", \\\"agrega N columnas\\\", \\\"inserta N columnas más\\\" y equivalentes explícitos expresan una CANTIDAD ADICIONAL; genera exactamente N tableInsertColumn. La fachada ejecuta literalmente esas inserciones y no corrige ni reinterpreta el número. Ejemplo total final 4: {\\\"commands\\\":[{\\\"command\\\":\\\"create\\\",\\\"ref\\\":\\\"tabla1\\\",\\\"type\\\":\\\"TTable\\\"},{\\\"command\\\":\\\"tableInsertLine\\\",\\\"target\\\":{\\\"ref\\\":\\\"tabla1\\\"},\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0},{\\\"command\\\":\\\"tableInsertColumn\\\",\\\"target\\\":{\\\"ref\\\":\\\"tabla1\\\"},\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"columnIndex\\\":1},{\\\"command\\\":\\\"tableInsertColumn\\\",\\\"target\\\":{\\\"ref\\\":\\\"tabla1\\\"},\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"columnIndex\\\":2},{\\\"command\\\":\\\"tableInsertColumn\\\",\\\"target\\\":{\\\"ref\\\":\\\"tabla1\\\"},\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"columnIndex\\\":3}]}. No envíes hSections, aLines ni aCells en create. Para crear contenido real en una celda usa {\\\"command\\\":\\\"create\\\",\\\"ref\\\":\\\"txt1\\\",\\\"type\\\":\\\"TText\\\",\\\"targetCell\\\":{\\\"table\\\":{\\\"ref\\\":\\\"tabla1\\\"},\\\"section\\\":\\\"header\\\",\\\"lineIndex\\\":0,\\\"cellIndex\\\":0},\\\"properties\\\":{\\\"cText\\\":\\\"\\\\\\\"Título\\\\\\\"\\\"}}; table admite \\\"selection\\\", {\\\"ids\\\":[\\\"id_real\\\"]} o {\\\"ref\\\":\\\"tabla1\\\"}. Tipos manuales admitidos en celda: TText,richText,TBarcode,TImage. Si la instrucción enumera contenidos o títulos, crea un objeto por cada literal en la celda correspondiente; no omitas esos contenidos. No uses position ni geometría para contenido de celda. Una ref es temporal dentro de esta respuesta: el create declara ref:\\\"new1\\\" y un comando posterior apunta al mismo objeto con target:{\\\"ref\\\":\\\"new1\\\"}. Ejemplo: {\\\"commands\\\":[{\\\"command\\\":\\\"create\\\",\\\"ref\\\":\\\"new1\\\",\\\"type\\\":\\\"TText\\\",\\\"properties\\\":{\\\"cText\\\":\\\"\\\\\\\\\\\"TOTAL\\\\\\\\\\\"\\\"}},{\\\"command\\\":\\\"resize\\\",\\\"target\\\":{\\\"ref\\\":\\\"new1\\\"},\\\"scaleX\\\":2,\\\"scaleY\\\":2}]}. TIPOS:TBarcode=Código de barras,TEllipse=Elipse,TFormattedText=Texto formateado,TImage=Imagen,TLine=Línea,TRectangle=Rectángulo,TTable=Tabla,TText=Texto,richText=Texto enriquecido. PROPS_TBarcode:cBackgroundColor:string=Código de barras / Color de fondo,cBarcodeType:string=Código de barras / Tipo,cBorderColor:string=Código de barras / Color,cColor:string=Código de barras / Color,cCondition:string=Código de barras / Condición de aparición,cContent:string=Código de barras / Contenido,cFillColor2:string=Código de barras / Color final,cFillColor3:string=Código de barras / Color intermedio,cFillStyle:string=Código de barras / Tipo de relleno,cFontFamily:string=Código de barras / Fuente,cShadowColor:string=Código de barras / Color,lFontBold:boolean=Código de barras / Negrita,lFontItalic:boolean=Código de barras / Cursiva,lFontStrikeout:boolean=Código de barras / Tachado,lFontUnderline:boolean=Código de barras / Subrayado,lLocked:boolean=Código de barras / Bloqueado,lShowText:boolean=Código de barras / Mostrar texto,lTrimSpaces:boolean=Código de barras / Recortar espacios exteriores,lVisible:boolean=Código de barras / Visible,nBorderWidth:number=Código de barras / Grosor,nFillOpacity:number=Código de barras / Opacidad del relleno,nFontSize:number=Código de barras / Tamaño,nLayerId:number=Código de barras / Capa,nOpacity:number=Código de barras / Opacidad,nRotation:number=Código de barras / Rotación,nRounded:number=Código de barras / Redondeo,nShadowSize:number=Código de barras / Grosor,nShadowTransparency:number=Código de barras / Transparencia. PROPS_TEllipse:cBackgroundColor:string=Elipse / Color de fondo,cBorderColor:string=Elipse / Color,cCondition:string=Elipse / Condición de aparición,cFillColor2:string=Elipse / Color final,cFillColor3:string=Elipse / Color intermedio,cFillStyle:string=Elipse / Tipo de relleno,cShadowColor:string=Elipse / Color,lLocked:boolean=Elipse / Bloqueado,lVisible:boolean=Elipse / Visible,nBorderWidth:number=Elipse / Grosor,nFillOpacity:number=Elipse / Opacidad del relleno,nLayerId:number=Elipse / Capa,nOpacity:number=Elipse / Opacidad,nRotation:number=Elipse / Rotación,nRounded:number=Elipse / Redondeo,nShadowSize:number=Elipse / Grosor,nShadowTransparency:number=Elipse / Transparencia. PROPS_TFormattedText:cBackgroundColor:string=Texto formateado / Color de fondo,cBorderColor:string=Texto formateado / Color,cCondition:string=Texto formateado / Condición de aparición,cFillColor2:string=Texto formateado / Color final,cFillColor3:string=Texto formateado / Color intermedio,cFillStyle:string=Texto formateado / Tipo de relleno,cFontFamily:string=Texto formateado / Fuente,cShadowColor:string=Texto formateado / Color,cText:string=Texto formateado / Contenido,cTextAlign:string=Texto formateado / Alineación,cTextColor:string=Texto formateado / Color,cTextVerticalAlign:string=Texto formateado / Alineación vertical,lAllowPageBreak:boolean=Texto formateado / Continuar entre páginas,lFontBold:boolean=Texto formateado / Negrita,lFontItalic:boolean=Texto formateado / Cursiva,lFontStrikeout:boolean=Texto formateado / Tachado,lFontUnderline:boolean=Texto formateado / Subrayado,lKeepEmptyParagraphs:boolean=Texto formateado / Conservar párrafos vacíos,lLocked:boolean=Texto formateado / Bloqueado,lTextAdjusted:boolean=Texto formateado / Justificación forzada,lTextWrap:boolean=Texto formateado / Partir si no cabe,lTrimSpaces:boolean=Texto formateado / Recortar espacios exteriores,lVisible:boolean=Texto formateado / Visible,nBorderWidth:number=Texto formateado / Grosor,nFillOpacity:number=Texto formateado / Opacidad del relleno,nFontSize:number=Texto formateado / Tamaño,nLayerId:number=Texto formateado / Capa,nLineSpacing:number=Texto formateado / Interlineado adicional,nOpacity:number=Texto formateado / Opacidad,nParagraphSpacing:number=Texto formateado / Espacio entre párrafos,nRotation:number=Texto formateado / Rotación,nRounded:number=Texto formateado / Redondeo,nShadowSize:number=Texto formateado / Grosor,nShadowTransparency:number=Texto formateado / Transparencia,nTextDecimalPosition:number=Texto formateado / Posición decimal,nTextOpacity:number=Texto formateado / Opacidad texto. PROPS_TImage:cBackgroundColor:string=Imagen / Color de fondo,cBorderColor:string=Imagen / Color,cCondition:string=Imagen / Condición de aparición,cFillColor2:string=Imagen / Color final,cFillColor3:string=Imagen / Color intermedio,cFillStyle:string=Imagen / Tipo de relleno,cFit:string=Imagen / Ajuste,cShadowColor:string=Imagen / Color,cSource:string=Imagen / Origen / contenido,cSourceType:string=Imagen / Tipo de origen,lKeepRatio:boolean=Imagen / Mantener proporción,lLocked:boolean=Imagen / Bloqueado,lVisible:boolean=Imagen / Visible,nBorderWidth:number=Imagen / Grosor,nFillOpacity:number=Imagen / Opacidad del relleno,nLayerId:number=Imagen / Capa,nOpacity:number=Imagen / Opacidad,nRotation:number=Imagen / Rotación,nRounded:number=Imagen / Redondeo,nShadowSize:number=Imagen / Grosor,nShadowTransparency:number=Imagen / Transparencia. PROPS_TLine:cBorderColor:string=Línea / Color,cCondition:string=Línea / Condición de aparición,cFillColor2:string=Línea / Color final,cFillColor3:string=Línea / Color intermedio,cFillStyle:string=Línea / Tipo de relleno,cLineStyle:string=Línea / Estilo,cOrientation:string=Línea / Orientación,cShadowColor:string=Línea / Color,lLocked:boolean=Línea / Bloqueado,lVisible:boolean=Línea / Visible,nBorderWidth:number=Línea / Grosor,nFillOpacity:number=Línea / Opacidad del relleno,nLayerId:number=Línea / Capa,nOpacity:number=Línea / Opacidad,nRotation:number=Línea / Rotación,nShadowSize:number=Línea / Grosor,nShadowTransparency:number=Línea / Transparencia. PROPS_TRectangle:cBackgroundColor:string=Rectángulo / Color de fondo,cBorderColor:string=Rectángulo / Color,cCondition:string=Rectángulo / Condición de aparición,cFillColor2:string=Rectángulo / Color final,cFillColor3:string=Rectángulo / Color intermedio,cFillStyle:string=Rectángulo / Tipo de relleno,cShadowColor:string=Rectángulo / Color,lLocked:boolean=Rectángulo / Bloqueado,lVisible:boolean=Rectángulo / Visible,nBorderWidth:number=Rectángulo / Grosor,nFillOpacity:number=Rectángulo / Opacidad del relleno,nLayerId:number=Rectángulo / Capa,nOpacity:number=Rectángulo / Opacidad,nRotation:number=Rectángulo / Rotación,nRounded:number=Rectángulo / Redondeo,nShadowSize:number=Rectángulo / Grosor,nShadowTransparency:number=Rectángulo / Transparencia. PROPS_TTable:cBackgroundColor:string=Tabla / Color de fondo,cBorderColor:string=Tabla / Color,cCondition:string=Tabla / Condición de aparición,cFillColor2:string=Tabla / Color final,cFillColor3:string=Tabla / Color intermedio,cFillStyle:string=Tabla / Tipo de relleno,cHeightMode:string=Tabla / Modo de altura,cShadowColor:string=Tabla / Color,lLocked:boolean=Tabla / Bloqueado,lVisible:boolean=Tabla / Visible,nBorderWidth:number=Tabla / Grosor,nFillOpacity:number=Tabla / Opacidad del relleno,nLayerId:number=Tabla / Capa,nOpacity:number=Tabla / Opacidad,nRotation:number=Tabla / Rotación,nRounded:number=Tabla / Redondeo,nShadowSize:number=Tabla / Grosor,nShadowTransparency:number=Tabla / Transparencia. PROPS_TText:cBackgroundColor:string=Texto / Color de fondo,cBorderColor:string=Texto / Color,cCondition:string=Texto / Condición de aparición,cFillColor2:string=Texto / Color final,cFillColor3:string=Texto / Color intermedio,cFillStyle:string=Texto / Tipo de relleno,cFontFamily:string=Texto / Fuente,cShadowColor:string=Texto / Color,cText:string=Texto / Contenido,cTextAlign:string=Texto / Alineación,cTextColor:string=Texto / Color,cTextVerticalAlign:string=Texto / Alineación vertical,lAllowPageBreak:boolean=Texto / Continuar entre páginas,lFontBold:boolean=Texto / Negrita,lFontItalic:boolean=Texto / Cursiva,lFontStrikeout:boolean=Texto / Tachado,lFontUnderline:boolean=Texto / Subrayado,lKeepEmptyParagraphs:boolean=Texto / Conservar párrafos vacíos,lLocked:boolean=Texto / Bloqueado,lTextAdjusted:boolean=Texto / Justificación forzada,lTextWrap:boolean=Texto / Partir si no cabe,lTrimSpaces:boolean=Texto / Recortar espacios exteriores,lVisible:boolean=Texto / Visible,nBorderWidth:number=Texto / Grosor,nFillOpacity:number=Texto / Opacidad del relleno,nFontSize:number=Texto / Tamaño,nLayerId:number=Texto / Capa,nLineSpacing:number=Texto / Interlineado adicional,nOpacity:number=Texto / Opacidad,nParagraphSpacing:number=Texto / Espacio entre párrafos,nRotation:number=Texto / Rotación,nRounded:number=Texto / Redondeo,nShadowSize:number=Texto / Grosor,nShadowTransparency:number=Texto / Transparencia,nTextDecimalPosition:number=Texto / Posición decimal,nTextOpacity:number=Texto / Opacidad texto. PROPS_richText:cBackgroundColor:string=Texto enriquecido / Color de fondo,cBorderColor:string=Texto enriquecido / Color,cCondition:string=Texto enriquecido / Condición de aparición,cContent:string=Texto enriquecido / Contenido,cFillColor2:string=Texto enriquecido / Color final,cFillColor3:string=Texto enriquecido / Color intermedio,cFillStyle:string=Texto enriquecido / Tipo de relleno,cOverflow:string=Texto enriquecido / Desbordamiento,cShadowColor:string=Texto enriquecido / Color,cVerticalAlign:string=Texto enriquecido / Alineación vertical,lLocked:boolean=Texto enriquecido / Bloqueado,lVisible:boolean=Texto enriquecido / Visible,nBorderWidth:number=Texto enriquecido / Grosor,nFillOpacity:number=Texto enriquecido / Opacidad del relleno,nLayerId:number=Texto enriquecido / Capa,nOpacity:number=Texto enriquecido / Opacidad,nRotation:number=Texto enriquecido / Rotación,nRounded:number=Texto enriquecido / Redondeo,nShadowSize:number=Texto enriquecido / Grosor,nShadowTransparency:number=Texto enriquecido / Transparencia. CTEXT CANONICO: texto fijo=\\\"\\\\\\\\\\\"FACTURA\\\\\\\\\\\"\\\"; campo=REFERENCIA_EXACTA; texto+campo=\\\"\\\\\\\\\\\"Factura: \\\\\\\\\\\"+REFERENCIA_EXACTA\\\"; formula=\\\"Transform(REFERENCIA_EXACTA,\\\\\\\\\\\"99/99/9999\\\\\\\\\\\")\\\". Para contenido de celda usa el mismo TText y la misma semantica. Usa exclusivamente referencias exactas de CAMPOS_Y_VARIABLES_DISPONIBLES; no inventes campos. Si la instruccion pide un dato/campo y no existe una referencia compatible, no conviertas su descripcion en texto fijo: omite esa parte o devuelve {\\\"commands\\\":[]}. En TTable, para CADA seccion usada, el orden obligatorio es: tableInsertLine; N-1 tableInsertColumn para obtener N columnas; despues los create.targetCell. El contenido header exige linea header y el contenido detail exige linea detail; antes de cellIndex K deben existir al menos K+1 columnas en esa misma linea. Nunca uses create.targetCell sobre una linea o celda inexistente. Para una celda vacia de una TTable existente seleccionada usa exactamente {\\\"command\\\":\\\"create\\\",\\\"type\\\":\\\"TText\\\",\\\"targetCell\\\":{\\\"table\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"cellIndex\\\":K},\\\"properties\\\":{\\\"cText\\\":\\\"REFERENCIA_EXACTA\\\"}}. Para una TTable existente identificada table puede ser {\\\"ids\\\":[\\\"id_real\\\"]}; nunca uses {\\\"cId\\\":\\\"...\\\"}. Para una tabla creada en ESTA respuesta, todas las estructuras y targetCell.table usan siempre {\\\"ref\\\":\\\"tabla1\\\"}, nunca \\\"selection\\\". Una lista de N nombres de columnas son N titulos fijos TText de header con cText=\\\"\\\\\\\\\\\"TITULO\\\\\\\\\\\"\\\"; si ademas se piden sus campos o campos disponibles, crea header Y detail, cada seccion con su tableInsertLine y exactamente N-1 inserciones, y despues N TText por seccion. Esquema minimo de dos secciones y dos columnas: create TTable ref tabla1; tableInsertLine header; tableInsertColumn header columnIndex 1; tableInsertLine detail; tableInsertColumn detail columnIndex 1; despues create.targetCell header 0 y 1, y detail 0 y 1, todos con table:{\\\"ref\\\":\\\"tabla1\\\"}. Alinear el contenido o texto a izquierda/centro/derecha usa setProperty con property:\\\"cTextAlign\\\" y value:\\\"left\\\"|\\\"center\\\"|\\\"right\\\"; align se reserva para alinear geometricamente varios objetos.\"},{\"role\":\"user\",\"content\":\"SELECCION_ACTUAL_SCOPE=selection:\\n[]\\nDOCUMENTO_COMPLETO_SCOPE=global:\\n[]\\nGLOBAL_COUNTS:\\nGLOBAL_IDS_BY_TYPE:\\nPROPIEDADES COMUNES EDITABLES: \\nCOLORES CANÓNICOS: rojo:#ff0000 · verde:#008000 · verde oscuro:#006400 · azul:#0000ff · azul oscuro:#00008b · amarillo:#ffff00 · gris claro:#d3d3d3\\nCAMPOS_Y_VARIABLES_DISPONIBLES\\nTIPOS:C=texto,N=numero,D=fecha,I=imagen,M=memo,L=booleano\\nCABECERA:HEADER.cif:C,HEADER.cliente:C,HEADER.direccion:C,HEADER.fecha:D,HEADER.logo:I,HEADER.numero:N,HEADER.total:N\\nDETALLE:DETAIL.cantidad:N,DETAIL.codigo:C,DETAIL.descripcion:C,DETAIL.importe:N,DETAIL.precio:N\\nVARIABLES:VAR.Moneda:C,VAR.Titulo:C\\nACUMULADORES:SUM.TotalDetalle:N\\n\\nINSTRUCCIÓN:\\nCrea tres objetos secuencialmente: un texto que ponga FACTURA, un rectangulo y una linea. Al texto creado cambiale el color a #17365D, ponlo en negrita, muevelo 15 mm a la derecha y redimensionalo al doble de ancho. Al rectangulo ponle fondo #D9EAF7 y muevelo 10 mm hacia abajo. Mueve tambien la linea 5 mm a la derecha.\"}],\"stream\":false,\"format\":\"json\",\"keep_alive\":-1,\"options\":{\"temperature\":0,\"top_p\":1,\"top_k\":0,\"repeat_penalty\":1.1,\"frequency_penalty\":0,\"presence_penalty\":0,\"num_ctx\":65536,\"num_batch\":4096,\"num_thread\":10,\"num_gpu\":99,\"num_predict\":4096},\"think\":\"low\"}",
          "cHttpBody": "{\"model\":\"gpt-oss:20b\",\"created_at\":\"2026-08-10T12:23:10.6811231Z\",\"message\":{\"role\":\"assistant\",\"content\":\"{\\\"commands\\\":[{\\\"command\\\":\\\"create\\\",\\\"type\\\":\\\"TText\\\",\\\"properties\\\":{\\\"cText\\\":\\\"\\\\\\\"FACTURA\\\\\\\"\\\"}},{\\\"command\\\":\\\"setProperty\\\",\\\"target\\\":\\\"selection\\\",\\\"property\\\":\\\"cTextColor\\\",\\\"value\\\":\\\"#17365D\\\"},{\\\"command\\\":\\\"setProperty\\\",\\\"target\\\":\\\"selection\\\",\\\"property\\\":\\\"lFontBold\\\",\\\"value\\\":true},{\\\"command\\\":\\\"move\\\",\\\"target\\\":\\\"selection\\\",\\\"dx\\\":15,\\\"dy\\\":0},{\\\"command\\\":\\\"resize\\\",\\\"target\\\":\\\"selection\\\",\\\"scaleX\\\":2,\\\"scaleY\\\":1},{\\\"command\\\":\\\"create\\\",\\\"type\\\":\\\"TRectangle\\\",\\\"properties\\\":{\\\"cBackgroundColor\\\":\\\"#D9EAF7\\\"}},{\\\"command\\\":\\\"move\\\",\\\"target\\\":\\\"selection\\\",\\\"dx\\\":0,\\\"dy\\\":10},{\\\"\\\":\\\"line\\\"},{\\\"command\\\":\\\"create\\\",\\\"type\\\":\\\"TLine\\\"},{\\\"command\\\":\\\"move\\\",\\\"target\\\":\\\"selection\\\",\\\"dx\\\":5,\\\"dy\\\":0}]}\",\"thinking\":\"Need create text, rectangle, line. Then setProperty color and bold for text; move and resize. For rectangle: setProperty background color, move. For line: move.\\n\\nReturn commands array. Use target:\\\"selection\\\" after creation? We need to refer to created objects. Since we don't have ids, use selection? But after create, selection likely includes new object? Probably use target:\\\"selection\\\". So sequence: create text, then setProperty color and bold, move, resize. Then create rectangle, setProperty background, move. Then create line, move.\\n\\nReturn JSON.\"},\"done\":true,\"done_reason\":\"stop\",\"total_duration\":4363209000,\"load_duration\":212076400,\"prompt_eval_count\":5699,\"prompt_eval_duration\":14528000,\"eval_count\":170,\"eval_duration\":2242535000}",
          "hMetrics": {
            "total_duration": 4363209000,
            "load_duration": 212076400,
            "prompt_eval_count": 5699,
            "prompt_eval_duration": 14528000,
            "eval_count": 170,
            "eval_duration": 2242535000,
            "unattributed_duration": 1894069600
          },
          "hCommands": {
            "commands": [
              {
                "command": "create",
                "type": "TText",
                "properties": {
                  "cText": "\"FACTURA\""
                }
              },
              {
                "command": "setProperty",
                "target": "selection",
                "property": "cTextColor",
                "value": "#17365D"
              },
              {
                "command": "setProperty",
                "target": "selection",
                "property": "lFontBold",
                "value": true
              },
              {
                "command": "move",
                "target": "selection",
                "dx": 15,
                "dy": 0
              },
              {
                "command": "resize",
                "target": "selection",
                "scaleX": 2,
                "scaleY": 1
              },
              {
                "command": "create",
                "type": "TRectangle",
                "properties": {
                  "cBackgroundColor": "#D9EAF7"
                }
              },
              {
                "command": "move",
                "target": "selection",
                "dx": 0,
                "dy": 10
              },
              {
                "": "line"
              },
              {
                "command": "create",
                "type": "TLine"
              },
              {
                "command": "move",
                "target": "selection",
                "dx": 5,
                "dy": 0
              }
            ]
          },
          "lValid": true,
          "nCreates": 0,
          "nChanges": 0,
          "nDeletes": 0,
          "nStructures": 0,
          "nGeneratedIds": 0,
          "nOperations": 10,
          "nFinalOperations": 10,
          "cValidation": "Shape commands válida; validación de ejecución pendiente",
          "nResponseMilliseconds": 4380.371,
          "tRequestStartedAt": "2026-08-10T14:23:06.302921+02:00",
          "tResponseFinishedAt": "2026-08-10T14:23:10.683254+02:00",
          "hPromptDiagnostics": {
            "nSystemCharacters": 21478,
            "nUserCharacters": 993,
            "nPromptCharacters": 22472,
            "nPromptCharactersBeforeFields": 19999,
            "nFieldsCharacters": 370,
            "nPromptTokensBeforeEstimated": 5000,
            "nPromptTokensAfterEstimated": 5618,
            "nContextTokens": 65536,
            "lPromptFitsContext": true,
            "hFields": {
              "nGroups": 4,
              "nFields": 12,
              "nUserVariables": 2,
              "nAccumulators": 1
            }
          }
        }
      }
    },
    {
      "action": "commandsRepairExperimental",
      "milliseconds": 5050.899999976158,
      "payload": {
        "cAction": "commandsRepairExperimental",
        "cModelKey": "gpt-oss-20b",
        "cInstruction": "Crea tres objetos secuencialmente: un texto que ponga FACTURA, un rectangulo y una linea. Al texto creado cambiale el color a #17365D, ponlo en negrita, muevelo 15 mm a la derecha y redimensionalo al doble de ancho. Al rectangulo ponle fondo #D9EAF7 y muevelo 10 mm hacia abajo. Mueve tambien la linea 5 mm a la derecha.",
        "aSelectedObjects": [],
        "aPropertyMetadata": [
          {
            "property": "cText",
            "label": "Contenido",
            "group": "Texto",
            "editor": "text",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cFontFamily",
            "label": "Fuente",
            "group": "Texto",
            "editor": "select",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nFontSize",
            "label": "Tamaño",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lFontBold",
            "label": "Negrita",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lFontItalic",
            "label": "Cursiva",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lFontUnderline",
            "label": "Subrayado",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lFontStrikeout",
            "label": "Tachado",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lTextWrap",
            "label": "Partir si no cabe",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lAllowPageBreak",
            "label": "Continuar entre páginas",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nLineSpacing",
            "label": "Interlineado adicional",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nParagraphSpacing",
            "label": "Espacio entre párrafos",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lKeepEmptyParagraphs",
            "label": "Conservar párrafos vacíos",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lTextAdjusted",
            "label": "Justificación forzada",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lTrimSpaces",
            "label": "Recortar espacios exteriores",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cTextColor",
            "label": "Color",
            "group": "Texto",
            "editor": "color",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nTextOpacity",
            "label": "Opacidad texto",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cTextAlign",
            "label": "Alineación",
            "group": "Texto",
            "editor": "select",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nTextDecimalPosition",
            "label": "Posición decimal",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cTextVerticalAlign",
            "label": "Alineación vertical",
            "group": "Texto",
            "editor": "select",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cName",
            "label": "Nombre",
            "group": "Texto",
            "editor": "text",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cType",
            "label": "Tipo de objeto",
            "group": "Texto",
            "editor": "text",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nLayerId",
            "label": "Capa",
            "group": "Texto",
            "editor": "select",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cCondition",
            "label": "Condición de aparición",
            "group": "Texto",
            "editor": "text",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lVisible",
            "label": "Visible",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "lLocked",
            "label": "Bloqueado",
            "group": "Texto",
            "editor": "checkbox",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nLeft",
            "label": "Izquierda",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nTop",
            "label": "Superior",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nRight",
            "label": "Derecha",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nBottom",
            "label": "Inferior",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nWidth",
            "label": "Ancho",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nHeight",
            "label": "Alto",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cBackgroundColor",
            "label": "Color de fondo",
            "group": "Texto",
            "editor": "color",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cFillStyle",
            "label": "Tipo de relleno",
            "group": "Texto",
            "editor": "select",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cFillColor2",
            "label": "Color final",
            "group": "Texto",
            "editor": "color",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cFillColor3",
            "label": "Color intermedio",
            "group": "Texto",
            "editor": "color",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nFillOpacity",
            "label": "Opacidad del relleno",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nRotation",
            "label": "Rotación",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nOpacity",
            "label": "Opacidad",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cBorderColor",
            "label": "Color",
            "group": "Texto",
            "editor": "color",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nBorderWidth",
            "label": "Grosor",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "borderVisibility",
            "label": "Visibilidad",
            "group": "Texto",
            "editor": "border-visibility",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nRounded",
            "label": "Redondeo",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nShadowSize",
            "label": "Grosor",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "nShadowTransparency",
            "label": "Transparencia",
            "group": "Texto",
            "editor": "number",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cShadowColor",
            "label": "Color",
            "group": "Texto",
            "editor": "color",
            "type": "TText",
            "typeLabel": "Texto"
          },
          {
            "property": "cName",
            "label": "Nombre",
            "group": "Rectángulo",
            "editor": "text",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "cType",
            "label": "Tipo de objeto",
            "group": "Rectángulo",
            "editor": "text",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nLayerId",
            "label": "Capa",
            "group": "Rectángulo",
            "editor": "select",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "cCondition",
            "label": "Condición de aparición",
            "group": "Rectángulo",
            "editor": "text",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "lVisible",
            "label": "Visible",
            "group": "Rectángulo",
            "editor": "checkbox",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "lLocked",
            "label": "Bloqueado",
            "group": "Rectángulo",
            "editor": "checkbox",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nLeft",
            "label": "Izquierda",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nTop",
            "label": "Superior",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nRight",
            "label": "Derecha",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nBottom",
            "label": "Inferior",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nWidth",
            "label": "Ancho",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nHeight",
            "label": "Alto",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "cBackgroundColor",
            "label": "Color de fondo",
            "group": "Rectángulo",
            "editor": "color",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "cFillStyle",
            "label": "Tipo de relleno",
            "group": "Rectángulo",
            "editor": "select",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "cFillColor2",
            "label": "Color final",
            "group": "Rectángulo",
            "editor": "color",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "cFillColor3",
            "label": "Color intermedio",
            "group": "Rectángulo",
            "editor": "color",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nFillOpacity",
            "label": "Opacidad del relleno",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nRotation",
            "label": "Rotación",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nOpacity",
            "label": "Opacidad",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "cBorderColor",
            "label": "Color",
            "group": "Rectángulo",
            "editor": "color",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nBorderWidth",
            "label": "Grosor",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "borderVisibility",
            "label": "Visibilidad",
            "group": "Rectángulo",
            "editor": "border-visibility",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nRounded",
            "label": "Redondeo",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nShadowSize",
            "label": "Grosor",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "nShadowTransparency",
            "label": "Transparencia",
            "group": "Rectángulo",
            "editor": "number",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "cShadowColor",
            "label": "Color",
            "group": "Rectángulo",
            "editor": "color",
            "type": "TRectangle",
            "typeLabel": "Rectángulo"
          },
          {
            "property": "cName",
            "label": "Nombre",
            "group": "Elipse",
            "editor": "text",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "cType",
            "label": "Tipo de objeto",
            "group": "Elipse",
            "editor": "text",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nLayerId",
            "label": "Capa",
            "group": "Elipse",
            "editor": "select",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "cCondition",
            "label": "Condición de aparición",
            "group": "Elipse",
            "editor": "text",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "lVisible",
            "label": "Visible",
            "group": "Elipse",
            "editor": "checkbox",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "lLocked",
            "label": "Bloqueado",
            "group": "Elipse",
            "editor": "checkbox",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nLeft",
            "label": "Izquierda",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nTop",
            "label": "Superior",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nRight",
            "label": "Derecha",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nBottom",
            "label": "Inferior",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nWidth",
            "label": "Ancho",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nHeight",
            "label": "Alto",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "cBackgroundColor",
            "label": "Color de fondo",
            "group": "Elipse",
            "editor": "color",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "cFillStyle",
            "label": "Tipo de relleno",
            "group": "Elipse",
            "editor": "select",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "cFillColor2",
            "label": "Color final",
            "group": "Elipse",
            "editor": "color",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "cFillColor3",
            "label": "Color intermedio",
            "group": "Elipse",
            "editor": "color",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nFillOpacity",
            "label": "Opacidad del relleno",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nRotation",
            "label": "Rotación",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nOpacity",
            "label": "Opacidad",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "cBorderColor",
            "label": "Color",
            "group": "Elipse",
            "editor": "color",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nBorderWidth",
            "label": "Grosor",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "borderVisibility",
            "label": "Visibilidad",
            "group": "Elipse",
            "editor": "border-visibility",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nRounded",
            "label": "Redondeo",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nShadowSize",
            "label": "Grosor",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "nShadowTransparency",
            "label": "Transparencia",
            "group": "Elipse",
            "editor": "number",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "cShadowColor",
            "label": "Color",
            "group": "Elipse",
            "editor": "color",
            "type": "TEllipse",
            "typeLabel": "Elipse"
          },
          {
            "property": "cName",
            "label": "Nombre",
            "group": "Imagen",
            "editor": "text",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cType",
            "label": "Tipo de objeto",
            "group": "Imagen",
            "editor": "text",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nLayerId",
            "label": "Capa",
            "group": "Imagen",
            "editor": "select",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cCondition",
            "label": "Condición de aparición",
            "group": "Imagen",
            "editor": "text",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "lVisible",
            "label": "Visible",
            "group": "Imagen",
            "editor": "checkbox",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "lLocked",
            "label": "Bloqueado",
            "group": "Imagen",
            "editor": "checkbox",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cSource",
            "label": "Origen / contenido",
            "group": "Imagen",
            "editor": "text",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cSourceType",
            "label": "Tipo de origen",
            "group": "Imagen",
            "editor": "select",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "lKeepRatio",
            "label": "Mantener proporción",
            "group": "Imagen",
            "editor": "checkbox",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cFit",
            "label": "Ajuste",
            "group": "Imagen",
            "editor": "select",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nLeft",
            "label": "Izquierda",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nTop",
            "label": "Superior",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nRight",
            "label": "Derecha",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nBottom",
            "label": "Inferior",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nWidth",
            "label": "Ancho",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nHeight",
            "label": "Alto",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cBackgroundColor",
            "label": "Color de fondo",
            "group": "Imagen",
            "editor": "color",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cFillStyle",
            "label": "Tipo de relleno",
            "group": "Imagen",
            "editor": "select",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cFillColor2",
            "label": "Color final",
            "group": "Imagen",
            "editor": "color",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cFillColor3",
            "label": "Color intermedio",
            "group": "Imagen",
            "editor": "color",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nFillOpacity",
            "label": "Opacidad del relleno",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nRotation",
            "label": "Rotación",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nOpacity",
            "label": "Opacidad",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cBorderColor",
            "label": "Color",
            "group": "Imagen",
            "editor": "color",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nBorderWidth",
            "label": "Grosor",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "borderVisibility",
            "label": "Visibilidad",
            "group": "Imagen",
            "editor": "border-visibility",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nRounded",
            "label": "Redondeo",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nShadowSize",
            "label": "Grosor",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "nShadowTransparency",
            "label": "Transparencia",
            "group": "Imagen",
            "editor": "number",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cShadowColor",
            "label": "Color",
            "group": "Imagen",
            "editor": "color",
            "type": "TImage",
            "typeLabel": "Imagen"
          },
          {
            "property": "cName",
            "label": "Nombre",
            "group": "Línea",
            "editor": "text",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "cType",
            "label": "Tipo de objeto",
            "group": "Línea",
            "editor": "text",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nLayerId",
            "label": "Capa",
            "group": "Línea",
            "editor": "select",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "cCondition",
            "label": "Condición de aparición",
            "group": "Línea",
            "editor": "text",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "lVisible",
            "label": "Visible",
            "group": "Línea",
            "editor": "checkbox",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "lLocked",
            "label": "Bloqueado",
            "group": "Línea",
            "editor": "checkbox",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "cOrientation",
            "label": "Orientación",
            "group": "Línea",
            "editor": "select",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "cBorderColor",
            "label": "Color",
            "group": "Línea",
            "editor": "color",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nBorderWidth",
            "label": "Grosor",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "cLineStyle",
            "label": "Estilo",
            "group": "Línea",
            "editor": "select",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nLeft",
            "label": "Izquierda",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nTop",
            "label": "Superior",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nRight",
            "label": "Derecha",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nBottom",
            "label": "Inferior",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nWidth",
            "label": "Ancho",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nHeight",
            "label": "Alto",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "cFillStyle",
            "label": "Tipo de relleno",
            "group": "Línea",
            "editor": "select",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "cFillColor2",
            "label": "Color final",
            "group": "Línea",
            "editor": "color",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "cFillColor3",
            "label": "Color intermedio",
            "group": "Línea",
            "editor": "color",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nFillOpacity",
            "label": "Opacidad del relleno",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nRotation",
            "label": "Rotación",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nOpacity",
            "label": "Opacidad",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nShadowSize",
            "label": "Grosor",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "nShadowTransparency",
            "label": "Transparencia",
            "group": "Línea",
            "editor": "number",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "cShadowColor",
            "label": "Color",
            "group": "Línea",
            "editor": "color",
            "type": "TLine",
            "typeLabel": "Línea"
          },
          {
            "property": "cName",
            "label": "Nombre",
            "group": "Código de barras",
            "editor": "text",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cType",
            "label": "Tipo de objeto",
            "group": "Código de barras",
            "editor": "text",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nLayerId",
            "label": "Capa",
            "group": "Código de barras",
            "editor": "select",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cCondition",
            "label": "Condición de aparición",
            "group": "Código de barras",
            "editor": "text",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "lVisible",
            "label": "Visible",
            "group": "Código de barras",
            "editor": "checkbox",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "lLocked",
            "label": "Bloqueado",
            "group": "Código de barras",
            "editor": "checkbox",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cContent",
            "label": "Contenido",
            "group": "Código de barras",
            "editor": "text",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cBarcodeType",
            "label": "Tipo",
            "group": "Código de barras",
            "editor": "select",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "lShowText",
            "label": "Mostrar texto",
            "group": "Código de barras",
            "editor": "checkbox",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "lTrimSpaces",
            "label": "Recortar espacios exteriores",
            "group": "Código de barras",
            "editor": "checkbox",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cFontFamily",
            "label": "Fuente",
            "group": "Código de barras",
            "editor": "select",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nFontSize",
            "label": "Tamaño",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "lFontBold",
            "label": "Negrita",
            "group": "Código de barras",
            "editor": "checkbox",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "lFontItalic",
            "label": "Cursiva",
            "group": "Código de barras",
            "editor": "checkbox",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "lFontUnderline",
            "label": "Subrayado",
            "group": "Código de barras",
            "editor": "checkbox",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "lFontStrikeout",
            "label": "Tachado",
            "group": "Código de barras",
            "editor": "checkbox",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cColor",
            "label": "Color",
            "group": "Código de barras",
            "editor": "color",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cBackgroundColor",
            "label": "Color de fondo",
            "group": "Código de barras",
            "editor": "color",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nLeft",
            "label": "Izquierda",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nTop",
            "label": "Superior",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nRight",
            "label": "Derecha",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nBottom",
            "label": "Inferior",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nWidth",
            "label": "Ancho",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nHeight",
            "label": "Alto",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cFillStyle",
            "label": "Tipo de relleno",
            "group": "Código de barras",
            "editor": "select",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cFillColor2",
            "label": "Color final",
            "group": "Código de barras",
            "editor": "color",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cFillColor3",
            "label": "Color intermedio",
            "group": "Código de barras",
            "editor": "color",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nFillOpacity",
            "label": "Opacidad del relleno",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nRotation",
            "label": "Rotación",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nOpacity",
            "label": "Opacidad",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cBorderColor",
            "label": "Color",
            "group": "Código de barras",
            "editor": "color",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nBorderWidth",
            "label": "Grosor",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "borderVisibility",
            "label": "Visibilidad",
            "group": "Código de barras",
            "editor": "border-visibility",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nRounded",
            "label": "Redondeo",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nShadowSize",
            "label": "Grosor",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "nShadowTransparency",
            "label": "Transparencia",
            "group": "Código de barras",
            "editor": "number",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cShadowColor",
            "label": "Color",
            "group": "Código de barras",
            "editor": "color",
            "type": "TBarcode",
            "typeLabel": "Código de barras"
          },
          {
            "property": "cContent",
            "label": "Contenido",
            "group": "Texto enriquecido",
            "editor": "text",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cVerticalAlign",
            "label": "Alineación vertical",
            "group": "Texto enriquecido",
            "editor": "select",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cOverflow",
            "label": "Desbordamiento",
            "group": "Texto enriquecido",
            "editor": "select",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cName",
            "label": "Nombre",
            "group": "Texto enriquecido",
            "editor": "text",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cType",
            "label": "Tipo de objeto",
            "group": "Texto enriquecido",
            "editor": "text",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nLayerId",
            "label": "Capa",
            "group": "Texto enriquecido",
            "editor": "select",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cCondition",
            "label": "Condición de aparición",
            "group": "Texto enriquecido",
            "editor": "text",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "lVisible",
            "label": "Visible",
            "group": "Texto enriquecido",
            "editor": "checkbox",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "lLocked",
            "label": "Bloqueado",
            "group": "Texto enriquecido",
            "editor": "checkbox",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nLeft",
            "label": "Izquierda",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nTop",
            "label": "Superior",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nRight",
            "label": "Derecha",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nBottom",
            "label": "Inferior",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nWidth",
            "label": "Ancho",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nHeight",
            "label": "Alto",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cBackgroundColor",
            "label": "Color de fondo",
            "group": "Texto enriquecido",
            "editor": "color",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cFillStyle",
            "label": "Tipo de relleno",
            "group": "Texto enriquecido",
            "editor": "select",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cFillColor2",
            "label": "Color final",
            "group": "Texto enriquecido",
            "editor": "color",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cFillColor3",
            "label": "Color intermedio",
            "group": "Texto enriquecido",
            "editor": "color",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nFillOpacity",
            "label": "Opacidad del relleno",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nRotation",
            "label": "Rotación",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nOpacity",
            "label": "Opacidad",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cBorderColor",
            "label": "Color",
            "group": "Texto enriquecido",
            "editor": "color",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nBorderWidth",
            "label": "Grosor",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "borderVisibility",
            "label": "Visibilidad",
            "group": "Texto enriquecido",
            "editor": "border-visibility",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nRounded",
            "label": "Redondeo",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nShadowSize",
            "label": "Grosor",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "nShadowTransparency",
            "label": "Transparencia",
            "group": "Texto enriquecido",
            "editor": "number",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cShadowColor",
            "label": "Color",
            "group": "Texto enriquecido",
            "editor": "color",
            "type": "richText",
            "typeLabel": "Texto enriquecido"
          },
          {
            "property": "cText",
            "label": "Contenido",
            "group": "Texto formateado",
            "editor": "text",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cFontFamily",
            "label": "Fuente",
            "group": "Texto formateado",
            "editor": "select",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nFontSize",
            "label": "Tamaño",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lFontBold",
            "label": "Negrita",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lFontItalic",
            "label": "Cursiva",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lFontUnderline",
            "label": "Subrayado",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lFontStrikeout",
            "label": "Tachado",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lTextWrap",
            "label": "Partir si no cabe",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lAllowPageBreak",
            "label": "Continuar entre páginas",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nLineSpacing",
            "label": "Interlineado adicional",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nParagraphSpacing",
            "label": "Espacio entre párrafos",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lKeepEmptyParagraphs",
            "label": "Conservar párrafos vacíos",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lTextAdjusted",
            "label": "Justificación forzada",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lTrimSpaces",
            "label": "Recortar espacios exteriores",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cTextColor",
            "label": "Color",
            "group": "Texto formateado",
            "editor": "color",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nTextOpacity",
            "label": "Opacidad texto",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cTextAlign",
            "label": "Alineación",
            "group": "Texto formateado",
            "editor": "select",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nTextDecimalPosition",
            "label": "Posición decimal",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cTextVerticalAlign",
            "label": "Alineación vertical",
            "group": "Texto formateado",
            "editor": "select",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cName",
            "label": "Nombre",
            "group": "Texto formateado",
            "editor": "text",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cType",
            "label": "Tipo de objeto",
            "group": "Texto formateado",
            "editor": "text",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nLayerId",
            "label": "Capa",
            "group": "Texto formateado",
            "editor": "select",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cCondition",
            "label": "Condición de aparición",
            "group": "Texto formateado",
            "editor": "text",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lVisible",
            "label": "Visible",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "lLocked",
            "label": "Bloqueado",
            "group": "Texto formateado",
            "editor": "checkbox",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nLeft",
            "label": "Izquierda",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nTop",
            "label": "Superior",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nRight",
            "label": "Derecha",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nBottom",
            "label": "Inferior",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nWidth",
            "label": "Ancho",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nHeight",
            "label": "Alto",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cBackgroundColor",
            "label": "Color de fondo",
            "group": "Texto formateado",
            "editor": "color",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cFillStyle",
            "label": "Tipo de relleno",
            "group": "Texto formateado",
            "editor": "select",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cFillColor2",
            "label": "Color final",
            "group": "Texto formateado",
            "editor": "color",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cFillColor3",
            "label": "Color intermedio",
            "group": "Texto formateado",
            "editor": "color",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nFillOpacity",
            "label": "Opacidad del relleno",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nRotation",
            "label": "Rotación",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nOpacity",
            "label": "Opacidad",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cBorderColor",
            "label": "Color",
            "group": "Texto formateado",
            "editor": "color",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nBorderWidth",
            "label": "Grosor",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "borderVisibility",
            "label": "Visibilidad",
            "group": "Texto formateado",
            "editor": "border-visibility",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nRounded",
            "label": "Redondeo",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nShadowSize",
            "label": "Grosor",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "nShadowTransparency",
            "label": "Transparencia",
            "group": "Texto formateado",
            "editor": "number",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cShadowColor",
            "label": "Color",
            "group": "Texto formateado",
            "editor": "color",
            "type": "TFormattedText",
            "typeLabel": "Texto formateado"
          },
          {
            "property": "cName",
            "label": "Nombre",
            "group": "Tabla",
            "editor": "text",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "cType",
            "label": "Tipo de objeto",
            "group": "Tabla",
            "editor": "text",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nLayerId",
            "label": "Capa",
            "group": "Tabla",
            "editor": "select",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "cCondition",
            "label": "Condición de aparición",
            "group": "Tabla",
            "editor": "text",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "lVisible",
            "label": "Visible",
            "group": "Tabla",
            "editor": "checkbox",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "lLocked",
            "label": "Bloqueado",
            "group": "Tabla",
            "editor": "checkbox",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nLeft",
            "label": "Izquierda",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nTop",
            "label": "Superior",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nRight",
            "label": "Derecha",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nBottom",
            "label": "Inferior",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nWidth",
            "label": "Ancho",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "cHeightMode",
            "label": "Modo de altura",
            "group": "Tabla",
            "editor": "select",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nHeight",
            "label": "Alto",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "cBackgroundColor",
            "label": "Color de fondo",
            "group": "Tabla",
            "editor": "color",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "cFillStyle",
            "label": "Tipo de relleno",
            "group": "Tabla",
            "editor": "select",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "cFillColor2",
            "label": "Color final",
            "group": "Tabla",
            "editor": "color",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "cFillColor3",
            "label": "Color intermedio",
            "group": "Tabla",
            "editor": "color",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nFillOpacity",
            "label": "Opacidad del relleno",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nRotation",
            "label": "Rotación",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nOpacity",
            "label": "Opacidad",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "cBorderColor",
            "label": "Color",
            "group": "Tabla",
            "editor": "color",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nBorderWidth",
            "label": "Grosor",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "borderVisibility",
            "label": "Visibilidad",
            "group": "Tabla",
            "editor": "border-visibility",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nRounded",
            "label": "Redondeo",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nShadowSize",
            "label": "Grosor",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "nShadowTransparency",
            "label": "Transparencia",
            "group": "Tabla",
            "editor": "number",
            "type": "TTable",
            "typeLabel": "Tabla"
          },
          {
            "property": "cShadowColor",
            "label": "Color",
            "group": "Tabla",
            "editor": "color",
            "type": "TTable",
            "typeLabel": "Tabla"
          }
        ],
        "aAvailableFields": [
          {
            "cName": "DETAIL.cantidad",
            "cType": "numerico",
            "cOrigin": "DetalleVar",
            "cGroup": "DETAIL"
          },
          {
            "cName": "DETAIL.codigo",
            "cType": "texto",
            "cOrigin": "DetalleVar",
            "cGroup": "DETAIL"
          },
          {
            "cName": "DETAIL.descripcion",
            "cType": "texto",
            "cOrigin": "DetalleVar",
            "cGroup": "DETAIL"
          },
          {
            "cName": "DETAIL.importe",
            "cType": "numerico",
            "cOrigin": "DetalleVar",
            "cGroup": "DETAIL"
          },
          {
            "cName": "DETAIL.precio",
            "cType": "numerico",
            "cOrigin": "DetalleVar",
            "cGroup": "DETAIL"
          },
          {
            "cName": "HEADER.cif",
            "cType": "texto",
            "cOrigin": "DataVar",
            "cGroup": "HEADER"
          },
          {
            "cName": "HEADER.cliente",
            "cType": "texto",
            "cOrigin": "DataVar",
            "cGroup": "HEADER"
          },
          {
            "cName": "HEADER.direccion",
            "cType": "texto",
            "cOrigin": "DataVar",
            "cGroup": "HEADER"
          },
          {
            "cName": "HEADER.fecha",
            "cType": "fecha",
            "cOrigin": "DataVar",
            "cGroup": "HEADER"
          },
          {
            "cName": "HEADER.logo",
            "cType": "imagen",
            "cOrigin": "DataVar",
            "cGroup": "HEADER"
          },
          {
            "cName": "HEADER.numero",
            "cType": "numerico",
            "cOrigin": "DataVar",
            "cGroup": "HEADER"
          },
          {
            "cName": "HEADER.total",
            "cType": "numerico",
            "cOrigin": "DataVar",
            "cGroup": "HEADER"
          },
          {
            "cName": "SUM.TotalDetalle",
            "cType": "numerico",
            "cOrigin": "AcumVar",
            "cGroup": "SUM"
          },
          {
            "cName": "VAR.Moneda",
            "cType": "texto",
            "cOrigin": "UserVar",
            "cGroup": "VAR"
          },
          {
            "cName": "VAR.Titulo",
            "cType": "texto",
            "cOrigin": "UserVar",
            "cGroup": "VAR"
          }
        ],
        "hTemplate": {
          "cType": "TDocument",
          "cFormatVersion": "1.0",
          "cTemplateId": "",
          "cTemplateName": "Documento",
          "cDocumentKind": "report",
          "cPaperFormat": "a4",
          "cPaperOrientation": "portrait",
          "tModifiedAt": "2026-08-10T12:06:21.320Z",
          "cFileName": "",
          "nPaperWidth": 210,
          "nPaperHeight": 297,
          "cPaperHeightMode": "fixed",
          "nDesignHeight": 250,
          "nContinuousBottomMargin": 5,
          "lShowGrid": true,
          "hUserVars": {
            "Moneda": {
              "tipo": "texto",
              "formula": "\"EUR\""
            },
            "Titulo": {
              "tipo": "texto",
              "formula": "\"Factura\""
            }
          },
          "hAcumVars": {
            "TotalDetalle": {
              "tipo": "numerico",
              "formula": "DETAIL.importe"
            }
          },
          "hImportMetadata": {},
          "hLabelLayout": {
            "nLabelWidth": 70,
            "nLabelHeight": 37,
            "nColumns": 3,
            "nRows": 8,
            "nMarginLeft": 0,
            "nMarginTop": 0,
            "nGapHorizontal": 0,
            "nGapVertical": 0,
            "cFlow": "row",
            "cLabelFormat": "manual",
            "nPrintOffsetX": 0,
            "nPrintOffsetY": 0
          },
          "hLayers": {
            "0": {
              "nId": 0,
              "cName": "Capa 1",
              "cCondition": "",
              "lDesignerVisible": true,
              "cColor": "#000000"
            }
          },
          "aObjects": []
        },
        "hOriginalCommands": {
          "commands": [
            {
              "command": "create",
              "type": "TText",
              "properties": {
                "cText": "\"FACTURA\""
              }
            },
            {
              "command": "setProperty",
              "target": "selection",
              "property": "cTextColor",
              "value": "#17365D"
            },
            {
              "command": "setProperty",
              "target": "selection",
              "property": "lFontBold",
              "value": true
            },
            {
              "command": "move",
              "target": "selection",
              "dx": 15,
              "dy": 0
            },
            {
              "command": "resize",
              "target": "selection",
              "scaleX": 2,
              "scaleY": 1
            },
            {
              "command": "create",
              "type": "TRectangle",
              "properties": {
                "cBackgroundColor": "#D9EAF7"
              }
            },
            {
              "command": "move",
              "target": "selection",
              "dx": 0,
              "dy": 10
            },
            {
              "": "line"
            },
            {
              "command": "create",
              "type": "TLine"
            },
            {
              "command": "move",
              "target": "selection",
              "dx": 5,
              "dy": 0
            }
          ]
        },
        "hDiagnostic": {
          "commandIndex": 7,
          "command": "",
          "error": "Comando no soportado."
        }
      },
      "response": {
        "lOk": true,
        "hInspection": {
          "cInstruction": "Crea tres objetos secuencialmente: un texto que ponga FACTURA, un rectangulo y una linea. Al texto creado cambiale el color a #17365D, ponlo en negrita, muevelo 15 mm a la derecha y redimensionalo al doble de ancho. Al rectangulo ponle fondo #D9EAF7 y muevelo 10 mm hacia abajo. Mueve tambien la linea 5 mm a la derecha.",
          "cProvider": "Ollama",
          "cModelSelection": "Ollama — GPT-OSS 20B",
          "cModel": "gpt-oss:20b",
          "cRepresentation": "COMMANDS",
          "cRawResponse": "{\"commands\":[{\"command\":\"create\",\"type\":\"TText\",\"properties\":{\"cText\":\"\\\"FACTURA\\\"\"}},{\"command\":\"setProperty\",\"target\":\"selection\",\"property\":\"cTextColor\",\"value\":\"#17365D\"},{\"command\":\"setProperty\",\"target\":\"selection\",\"property\":\"lFontBold\",\"value\":true},{\"command\":\"move\",\"target\":\"selection\",\"dx\":15,\"dy\":0},{\"command\":\"resize\",\"target\":\"selection\",\"scaleX\":2,\"scaleY\":1},{\"command\":\"create\",\"type\":\"TRectangle\",\"properties\":{\"cBackgroundColor\":\"#D9EAF7\"}},{\"command\":\"move\",\"target\":\"selection\",\"dx\":0,\"dy\":10},{\"command\":\"create\",\"type\":\"TLine\"},{\"command\":\"move\",\"target\":\"selection\",\"dx\":5,\"dy\":0}]}",
          "cThinking": "Need create text, rectangle, line sequentially. Then apply properties to each. Use separate targets: after creating text, target selection refers to that new object? But selection is current selection; after creation, selection includes the created object. So we can chain commands. For rectangle and line similarly.\n\nWe need correct syntax: for line creation command should be {\"command\":\"create\",\"type\":\"TLine\"}. The erroneous part had \"\"line\". Remove.\n\nAlso ensure move/resize after each create. Sequence:\n\n1 create text\n2 setProperty color\n3 setProperty bold\n4 move right 15\n5 resize scaleX 2\n\n6 create rectangle\n7 setProperty background color\n8 move down 10\n\n9 create line\n10 move right 5\n\nReturn commands array.\n\nCheck that all requested: yes. Provide JSON.\n\n",
          "cOllamaRequest": "{\"model\":\"gpt-oss:20b\",\"messages\":[{\"role\":\"system\",\"content\":\"Interpreta la instrucción y devuelve únicamente JSON válido con la forma {\\\"commands\\\":[{\\\"command\\\":\\\"setProperty\\\",\\\"target\\\":\\\"selection\\\" o {\\\"ids\\\":[\\\"id_real\\\"]},\\\"property\\\":\\\"propiedad_real\\\",\\\"value\\\":valor}]}. Cada comando DEBE usar la clave command (nunca type) y target. Comandos permitidos: setProperty, move, resize, delete, align, distribute, reorder, duplicate, tableMoveColumn, tableSetColumnWidth, tableInsertColumn, tableDeleteColumn, tableInsertLine, tableDeleteLine, tableMoveLine, tableSetLineHeight, tableSetLineBackground, tableSetLineBorderColor, tableSetLineBorderWidth, tableSetLinePadding, tableSetLineBorderRadius, tableSetLineBorderSide, tableSetLineVerticalSeparators, tableSetLineZebraEnabled, tableSetLineZebraColor, tableSetLineCondition, tableSetLineSuppressCondition, tableSetLineBackgroundColorFormula, tableSetLineBorderColorFormula. Prioridad: propiedad o estilo → setProperty; desplazamiento relativo → move; tamaño relativo → resize; alineación de varios objetos → align; eliminar objetos → delete. Para eliminar usa exactamente {\\\"command\\\":\\\"delete\\\",\\\"target\\\":\\\"selection\\\"}. Si se pide duplicar, reducir o cambiar el tamaño, devuelve únicamente resize y no uses setProperty para propiedades numéricas. Para setProperty usa exactamente property y value, nunca name ni valores como *2. Para move usa {\\\"command\\\":\\\"move\\\",\\\"target\\\":\\\"selection\\\",\\\"dx\\\":10,\\\"dy\\\":0}; para resize usa {\\\"command\\\":\\\"resize\\\",\\\"target\\\":\\\"selection\\\",\\\"scaleX\\\":0.5,\\\"scaleY\\\":0.5}. Para alinear usa exactamente {\\\"command\\\":\\\"align\\\",\\\"target\\\":\\\"selection\\\",\\\"mode\\\":\\\"left\\\"}; modos válidos: left|right|top|bottom|horizontalCenter|verticalCenter. Si la orden se refiere a los objetos seleccionados, usa target:\\\"selection\\\". No inventes IDs ni calcules coordenadas o dimensiones finales. Para distribuir usa exactamente {\\\"command\\\":\\\"distribute\\\",\\\"target\\\":\\\"selection\\\",\\\"mode\\\":\\\"horizontal\\\"}; modos válidos: horizontal|vertical. Para reordenar usa exactamente {\\\"command\\\":\\\"reorder\\\",\\\"target\\\":\\\"selection\\\",\\\"mode\\\":\\\"bringToFront\\\"}; modos válidos: bringToFront=traer al frente, sendToBack=enviar al fondo, bringForward=subir un nivel, sendBackward=bajar un nivel. Para duplicar usa exactamente {\\\"command\\\":\\\"duplicate\\\",\\\"target\\\":\\\"selection\\\"}. Para tablas usa únicamente estas formas: {\\\"command\\\":\\\"tableMoveColumn\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"header\\\",\\\"lineIndex\\\":0,\\\"fromIndex\\\":2,\\\"toIndex\\\":0}, {\\\"command\\\":\\\"tableSetColumnWidth\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"header\\\",\\\"lineIndex\\\":0,\\\"columnIndex\\\":0,\\\"width\\\":30}, {\\\"command\\\":\\\"tableInsertColumn\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"columnIndex\\\":2}, {\\\"command\\\":\\\"tableDeleteColumn\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"columnIndex\\\":2}, {\\\"command\\\":\\\"tableInsertLine\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":1}, {\\\"command\\\":\\\"tableDeleteLine\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":1}, {\\\"command\\\":\\\"tableMoveLine\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"fromIndex\\\":1,\\\"toIndex\\\":0}, {\\\"command\\\":\\\"tableSetLineHeight\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"height\\\":12}, {\\\"command\\\":\\\"tableSetLineBackground\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"color\\\":\\\"#d3d3d3\\\"}; section: header|groupHeader|detail|groupFooter|footer. Los índices son enteros cero-basados y no negativos. tableSetLineHeight usa altura fija en milímetros >=1. tableSetLineBackground usa únicamente color HEX fijo; no usa fórmulas ni paths privados. Insertar columna usa columnIndex como posición antes de la columna existente; si coincide con el número actual de columnas, añade al final. Insertar línea usa lineIndex como posición antes de la línea existente; si coincide con el número actual de líneas, añade al final. No uses hSections, aLines ni aCells. Semántica de líneas OBLIGATORIA: si una sección tiene una sola línea, basta mencionar la sección y usa lineIndex 0. Si tiene varias líneas, una operación estructural debe indicar la línea; si no la indica y no dice todas, devuelve EXACTAMENTE {\\\"commands\\\":[]}. Solo si dice todas las líneas genera una operación por cada línea existente. Esta regla no afecta a objetos visuales de celda, que siguen usando commands normales. Para cambiar altura o fondo fijo de una línea de TTable usa obligatoriamente tableSetLineHeight o tableSetLineBackground con section y lineIndex; no uses setProperty para esas operaciones. Shapes adicionales de línea: {\\\"command\\\":\\\"tableSetLineBorderColor\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"color\\\":\\\"#0000ff\\\"}, {\\\"command\\\":\\\"tableSetLineBorderWidth\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"width\\\":1}, {\\\"command\\\":\\\"tableSetLinePadding\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"side\\\":\\\"nTop\\\",\\\"value\\\":2}, {\\\"command\\\":\\\"tableSetLineBorderRadius\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"radius\\\":2}, {\\\"command\\\":\\\"tableSetLineBorderSide\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"side\\\":\\\"top\\\",\\\"visible\\\":true}, {\\\"command\\\":\\\"tableSetLineVerticalSeparators\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"visible\\\":true}, {\\\"command\\\":\\\"tableSetLineCondition\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"formula\\\":\\\"DETAIL.cantidad > 0\\\"}, {\\\"command\\\":\\\"tableSetLineSuppressCondition\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"formula\\\":\\\"DETAIL.importe == 0\\\"}, {\\\"command\\\":\\\"tableSetLineBackgroundColorFormula\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"formula\\\":\\\"IF(...)\\\"}, {\\\"command\\\":\\\"tableSetLineBorderColorFormula\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"formula\\\":\\\"IF(...)\\\"}. Las cuatro primitivas de fórmula reciben formula como string literal y aceptan string vacío para borrar; no evalúes ni cambies la sintaxis. Usa la primitiva específica según sea condición, supresión o fórmula de color; no uses paths hBorder, hBackground ni setProperty. Si la instrucción menciona una línea, cabecera, detalle o pie, el color de borde de esa línea usa tableSetLineBorderColor y nunca setProperty. Zebra solo existe en líneas detail. Shapes exactas: {\\\"command\\\":\\\"tableSetLineZebraEnabled\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"enabled\\\":true} y {\\\"command\\\":\\\"tableSetLineZebraColor\\\",\\\"target\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"role\\\":\\\"odd\\\",\\\"color\\\":\\\"#d3d3d3\\\"}. Usa enabled booleano para activar o desactivar y role odd/even para filas impares/pares. No uses hZebraPattern ni paths privados. REGLA DE SCOPE OBLIGATORIA: estos, ellos, los seleccionados y pronombres equivalentes -> target:\\\"selection\\\". Todos, todas, todo el documento, todos los objetos o todos los objetos de un tipo -> target:{\\\"ids\\\":[...]} usando todos los cId coincidentes de DOCUMENTO_COMPLETO_SCOPE=global, incluidos objetos anidados en TTable. Si la selección está vacía, una orden global debe usar siempre ids. Para una orden global no uses target:\\\"selection\\\" ni mezcles ambos targets. También se permite create: {\\\"command\\\":\\\"create\\\",\\\"type\\\":\\\"TText\\\",\\\"properties\\\":{\\\"cText\\\":\\\"\\\\\\\\\\\"texto\\\\\\\\\\\"\\\"}}. En create describe únicamente lo solicitado: incluye solo el tipo, contenido, posición y propiedades que la instrucción pida explícitamente; el diseñador completa los defaults reales. Tipos reales: TText,TRectangle,TEllipse,TImage,TLine,TBarcode,richText,TFormattedText,TTable. Properties solo editables, nunca cId, defaults, estructura interna ni geometría. position usa {\\\"x\\\":20,\\\"y\\\":30}. Para crear una tabla usa {\\\"command\\\":\\\"create\\\",\\\"ref\\\":\\\"tabla1\\\",\\\"type\\\":\\\"TTable\\\"}; las primitives TTable posteriores pueden usar target:{\\\"ref\\\":\\\"tabla1\\\"}. Una TTable recién creada tiene las secciones vacías. Antes de insertar columnas o modificar una línea, crea esa línea con tableInsertLine. tableInsertLine crea siempre una línea válida con exactamente 1 columna inicial. SEMÁNTICA OBLIGATORIA DEL NÚMERO DE COLUMNAS: \\\"de N columnas\\\", \\\"con N columnas\\\" y \\\"que tenga N columnas\\\" expresan el TOTAL FINAL deseado; genera exactamente N menos las columnas actuales operaciones tableInsertColumn. Después de tableInsertLine ya hay 1 columna: para una línea de 4 columnas genera exactamente 3 tableInsertColumn y el total final es 4, nunca 4 inserciones. \\\"añade N columnas\\\", \\\"agrega N columnas\\\", \\\"inserta N columnas más\\\" y equivalentes explícitos expresan una CANTIDAD ADICIONAL; genera exactamente N tableInsertColumn. La fachada ejecuta literalmente esas inserciones y no corrige ni reinterpreta el número. Ejemplo total final 4: {\\\"commands\\\":[{\\\"command\\\":\\\"create\\\",\\\"ref\\\":\\\"tabla1\\\",\\\"type\\\":\\\"TTable\\\"},{\\\"command\\\":\\\"tableInsertLine\\\",\\\"target\\\":{\\\"ref\\\":\\\"tabla1\\\"},\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0},{\\\"command\\\":\\\"tableInsertColumn\\\",\\\"target\\\":{\\\"ref\\\":\\\"tabla1\\\"},\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"columnIndex\\\":1},{\\\"command\\\":\\\"tableInsertColumn\\\",\\\"target\\\":{\\\"ref\\\":\\\"tabla1\\\"},\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"columnIndex\\\":2},{\\\"command\\\":\\\"tableInsertColumn\\\",\\\"target\\\":{\\\"ref\\\":\\\"tabla1\\\"},\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"columnIndex\\\":3}]}. No envíes hSections, aLines ni aCells en create. Para crear contenido real en una celda usa {\\\"command\\\":\\\"create\\\",\\\"ref\\\":\\\"txt1\\\",\\\"type\\\":\\\"TText\\\",\\\"targetCell\\\":{\\\"table\\\":{\\\"ref\\\":\\\"tabla1\\\"},\\\"section\\\":\\\"header\\\",\\\"lineIndex\\\":0,\\\"cellIndex\\\":0},\\\"properties\\\":{\\\"cText\\\":\\\"\\\\\\\"Título\\\\\\\"\\\"}}; table admite \\\"selection\\\", {\\\"ids\\\":[\\\"id_real\\\"]} o {\\\"ref\\\":\\\"tabla1\\\"}. Tipos manuales admitidos en celda: TText,richText,TBarcode,TImage. Si la instrucción enumera contenidos o títulos, crea un objeto por cada literal en la celda correspondiente; no omitas esos contenidos. No uses position ni geometría para contenido de celda. Una ref es temporal dentro de esta respuesta: el create declara ref:\\\"new1\\\" y un comando posterior apunta al mismo objeto con target:{\\\"ref\\\":\\\"new1\\\"}. Ejemplo: {\\\"commands\\\":[{\\\"command\\\":\\\"create\\\",\\\"ref\\\":\\\"new1\\\",\\\"type\\\":\\\"TText\\\",\\\"properties\\\":{\\\"cText\\\":\\\"\\\\\\\\\\\"TOTAL\\\\\\\\\\\"\\\"}},{\\\"command\\\":\\\"resize\\\",\\\"target\\\":{\\\"ref\\\":\\\"new1\\\"},\\\"scaleX\\\":2,\\\"scaleY\\\":2}]}. TIPOS:TBarcode=Código de barras,TEllipse=Elipse,TFormattedText=Texto formateado,TImage=Imagen,TLine=Línea,TRectangle=Rectángulo,TTable=Tabla,TText=Texto,richText=Texto enriquecido. PROPS_TBarcode:cBackgroundColor:string=Código de barras / Color de fondo,cBarcodeType:string=Código de barras / Tipo,cBorderColor:string=Código de barras / Color,cColor:string=Código de barras / Color,cCondition:string=Código de barras / Condición de aparición,cContent:string=Código de barras / Contenido,cFillColor2:string=Código de barras / Color final,cFillColor3:string=Código de barras / Color intermedio,cFillStyle:string=Código de barras / Tipo de relleno,cFontFamily:string=Código de barras / Fuente,cShadowColor:string=Código de barras / Color,lFontBold:boolean=Código de barras / Negrita,lFontItalic:boolean=Código de barras / Cursiva,lFontStrikeout:boolean=Código de barras / Tachado,lFontUnderline:boolean=Código de barras / Subrayado,lLocked:boolean=Código de barras / Bloqueado,lShowText:boolean=Código de barras / Mostrar texto,lTrimSpaces:boolean=Código de barras / Recortar espacios exteriores,lVisible:boolean=Código de barras / Visible,nBorderWidth:number=Código de barras / Grosor,nFillOpacity:number=Código de barras / Opacidad del relleno,nFontSize:number=Código de barras / Tamaño,nLayerId:number=Código de barras / Capa,nOpacity:number=Código de barras / Opacidad,nRotation:number=Código de barras / Rotación,nRounded:number=Código de barras / Redondeo,nShadowSize:number=Código de barras / Grosor,nShadowTransparency:number=Código de barras / Transparencia. PROPS_TEllipse:cBackgroundColor:string=Elipse / Color de fondo,cBorderColor:string=Elipse / Color,cCondition:string=Elipse / Condición de aparición,cFillColor2:string=Elipse / Color final,cFillColor3:string=Elipse / Color intermedio,cFillStyle:string=Elipse / Tipo de relleno,cShadowColor:string=Elipse / Color,lLocked:boolean=Elipse / Bloqueado,lVisible:boolean=Elipse / Visible,nBorderWidth:number=Elipse / Grosor,nFillOpacity:number=Elipse / Opacidad del relleno,nLayerId:number=Elipse / Capa,nOpacity:number=Elipse / Opacidad,nRotation:number=Elipse / Rotación,nRounded:number=Elipse / Redondeo,nShadowSize:number=Elipse / Grosor,nShadowTransparency:number=Elipse / Transparencia. PROPS_TFormattedText:cBackgroundColor:string=Texto formateado / Color de fondo,cBorderColor:string=Texto formateado / Color,cCondition:string=Texto formateado / Condición de aparición,cFillColor2:string=Texto formateado / Color final,cFillColor3:string=Texto formateado / Color intermedio,cFillStyle:string=Texto formateado / Tipo de relleno,cFontFamily:string=Texto formateado / Fuente,cShadowColor:string=Texto formateado / Color,cText:string=Texto formateado / Contenido,cTextAlign:string=Texto formateado / Alineación,cTextColor:string=Texto formateado / Color,cTextVerticalAlign:string=Texto formateado / Alineación vertical,lAllowPageBreak:boolean=Texto formateado / Continuar entre páginas,lFontBold:boolean=Texto formateado / Negrita,lFontItalic:boolean=Texto formateado / Cursiva,lFontStrikeout:boolean=Texto formateado / Tachado,lFontUnderline:boolean=Texto formateado / Subrayado,lKeepEmptyParagraphs:boolean=Texto formateado / Conservar párrafos vacíos,lLocked:boolean=Texto formateado / Bloqueado,lTextAdjusted:boolean=Texto formateado / Justificación forzada,lTextWrap:boolean=Texto formateado / Partir si no cabe,lTrimSpaces:boolean=Texto formateado / Recortar espacios exteriores,lVisible:boolean=Texto formateado / Visible,nBorderWidth:number=Texto formateado / Grosor,nFillOpacity:number=Texto formateado / Opacidad del relleno,nFontSize:number=Texto formateado / Tamaño,nLayerId:number=Texto formateado / Capa,nLineSpacing:number=Texto formateado / Interlineado adicional,nOpacity:number=Texto formateado / Opacidad,nParagraphSpacing:number=Texto formateado / Espacio entre párrafos,nRotation:number=Texto formateado / Rotación,nRounded:number=Texto formateado / Redondeo,nShadowSize:number=Texto formateado / Grosor,nShadowTransparency:number=Texto formateado / Transparencia,nTextDecimalPosition:number=Texto formateado / Posición decimal,nTextOpacity:number=Texto formateado / Opacidad texto. PROPS_TImage:cBackgroundColor:string=Imagen / Color de fondo,cBorderColor:string=Imagen / Color,cCondition:string=Imagen / Condición de aparición,cFillColor2:string=Imagen / Color final,cFillColor3:string=Imagen / Color intermedio,cFillStyle:string=Imagen / Tipo de relleno,cFit:string=Imagen / Ajuste,cShadowColor:string=Imagen / Color,cSource:string=Imagen / Origen / contenido,cSourceType:string=Imagen / Tipo de origen,lKeepRatio:boolean=Imagen / Mantener proporción,lLocked:boolean=Imagen / Bloqueado,lVisible:boolean=Imagen / Visible,nBorderWidth:number=Imagen / Grosor,nFillOpacity:number=Imagen / Opacidad del relleno,nLayerId:number=Imagen / Capa,nOpacity:number=Imagen / Opacidad,nRotation:number=Imagen / Rotación,nRounded:number=Imagen / Redondeo,nShadowSize:number=Imagen / Grosor,nShadowTransparency:number=Imagen / Transparencia. PROPS_TLine:cBorderColor:string=Línea / Color,cCondition:string=Línea / Condición de aparición,cFillColor2:string=Línea / Color final,cFillColor3:string=Línea / Color intermedio,cFillStyle:string=Línea / Tipo de relleno,cLineStyle:string=Línea / Estilo,cOrientation:string=Línea / Orientación,cShadowColor:string=Línea / Color,lLocked:boolean=Línea / Bloqueado,lVisible:boolean=Línea / Visible,nBorderWidth:number=Línea / Grosor,nFillOpacity:number=Línea / Opacidad del relleno,nLayerId:number=Línea / Capa,nOpacity:number=Línea / Opacidad,nRotation:number=Línea / Rotación,nShadowSize:number=Línea / Grosor,nShadowTransparency:number=Línea / Transparencia. PROPS_TRectangle:cBackgroundColor:string=Rectángulo / Color de fondo,cBorderColor:string=Rectángulo / Color,cCondition:string=Rectángulo / Condición de aparición,cFillColor2:string=Rectángulo / Color final,cFillColor3:string=Rectángulo / Color intermedio,cFillStyle:string=Rectángulo / Tipo de relleno,cShadowColor:string=Rectángulo / Color,lLocked:boolean=Rectángulo / Bloqueado,lVisible:boolean=Rectángulo / Visible,nBorderWidth:number=Rectángulo / Grosor,nFillOpacity:number=Rectángulo / Opacidad del relleno,nLayerId:number=Rectángulo / Capa,nOpacity:number=Rectángulo / Opacidad,nRotation:number=Rectángulo / Rotación,nRounded:number=Rectángulo / Redondeo,nShadowSize:number=Rectángulo / Grosor,nShadowTransparency:number=Rectángulo / Transparencia. PROPS_TTable:cBackgroundColor:string=Tabla / Color de fondo,cBorderColor:string=Tabla / Color,cCondition:string=Tabla / Condición de aparición,cFillColor2:string=Tabla / Color final,cFillColor3:string=Tabla / Color intermedio,cFillStyle:string=Tabla / Tipo de relleno,cHeightMode:string=Tabla / Modo de altura,cShadowColor:string=Tabla / Color,lLocked:boolean=Tabla / Bloqueado,lVisible:boolean=Tabla / Visible,nBorderWidth:number=Tabla / Grosor,nFillOpacity:number=Tabla / Opacidad del relleno,nLayerId:number=Tabla / Capa,nOpacity:number=Tabla / Opacidad,nRotation:number=Tabla / Rotación,nRounded:number=Tabla / Redondeo,nShadowSize:number=Tabla / Grosor,nShadowTransparency:number=Tabla / Transparencia. PROPS_TText:cBackgroundColor:string=Texto / Color de fondo,cBorderColor:string=Texto / Color,cCondition:string=Texto / Condición de aparición,cFillColor2:string=Texto / Color final,cFillColor3:string=Texto / Color intermedio,cFillStyle:string=Texto / Tipo de relleno,cFontFamily:string=Texto / Fuente,cShadowColor:string=Texto / Color,cText:string=Texto / Contenido,cTextAlign:string=Texto / Alineación,cTextColor:string=Texto / Color,cTextVerticalAlign:string=Texto / Alineación vertical,lAllowPageBreak:boolean=Texto / Continuar entre páginas,lFontBold:boolean=Texto / Negrita,lFontItalic:boolean=Texto / Cursiva,lFontStrikeout:boolean=Texto / Tachado,lFontUnderline:boolean=Texto / Subrayado,lKeepEmptyParagraphs:boolean=Texto / Conservar párrafos vacíos,lLocked:boolean=Texto / Bloqueado,lTextAdjusted:boolean=Texto / Justificación forzada,lTextWrap:boolean=Texto / Partir si no cabe,lTrimSpaces:boolean=Texto / Recortar espacios exteriores,lVisible:boolean=Texto / Visible,nBorderWidth:number=Texto / Grosor,nFillOpacity:number=Texto / Opacidad del relleno,nFontSize:number=Texto / Tamaño,nLayerId:number=Texto / Capa,nLineSpacing:number=Texto / Interlineado adicional,nOpacity:number=Texto / Opacidad,nParagraphSpacing:number=Texto / Espacio entre párrafos,nRotation:number=Texto / Rotación,nRounded:number=Texto / Redondeo,nShadowSize:number=Texto / Grosor,nShadowTransparency:number=Texto / Transparencia,nTextDecimalPosition:number=Texto / Posición decimal,nTextOpacity:number=Texto / Opacidad texto. PROPS_richText:cBackgroundColor:string=Texto enriquecido / Color de fondo,cBorderColor:string=Texto enriquecido / Color,cCondition:string=Texto enriquecido / Condición de aparición,cContent:string=Texto enriquecido / Contenido,cFillColor2:string=Texto enriquecido / Color final,cFillColor3:string=Texto enriquecido / Color intermedio,cFillStyle:string=Texto enriquecido / Tipo de relleno,cOverflow:string=Texto enriquecido / Desbordamiento,cShadowColor:string=Texto enriquecido / Color,cVerticalAlign:string=Texto enriquecido / Alineación vertical,lLocked:boolean=Texto enriquecido / Bloqueado,lVisible:boolean=Texto enriquecido / Visible,nBorderWidth:number=Texto enriquecido / Grosor,nFillOpacity:number=Texto enriquecido / Opacidad del relleno,nLayerId:number=Texto enriquecido / Capa,nOpacity:number=Texto enriquecido / Opacidad,nRotation:number=Texto enriquecido / Rotación,nRounded:number=Texto enriquecido / Redondeo,nShadowSize:number=Texto enriquecido / Grosor,nShadowTransparency:number=Texto enriquecido / Transparencia. CTEXT CANONICO: texto fijo=\\\"\\\\\\\\\\\"FACTURA\\\\\\\\\\\"\\\"; campo=REFERENCIA_EXACTA; texto+campo=\\\"\\\\\\\\\\\"Factura: \\\\\\\\\\\"+REFERENCIA_EXACTA\\\"; formula=\\\"Transform(REFERENCIA_EXACTA,\\\\\\\\\\\"99/99/9999\\\\\\\\\\\")\\\". Para contenido de celda usa el mismo TText y la misma semantica. Usa exclusivamente referencias exactas de CAMPOS_Y_VARIABLES_DISPONIBLES; no inventes campos. Si la instruccion pide un dato/campo y no existe una referencia compatible, no conviertas su descripcion en texto fijo: omite esa parte o devuelve {\\\"commands\\\":[]}. En TTable, para CADA seccion usada, el orden obligatorio es: tableInsertLine; N-1 tableInsertColumn para obtener N columnas; despues los create.targetCell. El contenido header exige linea header y el contenido detail exige linea detail; antes de cellIndex K deben existir al menos K+1 columnas en esa misma linea. Nunca uses create.targetCell sobre una linea o celda inexistente. Para una celda vacia de una TTable existente seleccionada usa exactamente {\\\"command\\\":\\\"create\\\",\\\"type\\\":\\\"TText\\\",\\\"targetCell\\\":{\\\"table\\\":\\\"selection\\\",\\\"section\\\":\\\"detail\\\",\\\"lineIndex\\\":0,\\\"cellIndex\\\":K},\\\"properties\\\":{\\\"cText\\\":\\\"REFERENCIA_EXACTA\\\"}}. Para una TTable existente identificada table puede ser {\\\"ids\\\":[\\\"id_real\\\"]}; nunca uses {\\\"cId\\\":\\\"...\\\"}. Para una tabla creada en ESTA respuesta, todas las estructuras y targetCell.table usan siempre {\\\"ref\\\":\\\"tabla1\\\"}, nunca \\\"selection\\\". Una lista de N nombres de columnas son N titulos fijos TText de header con cText=\\\"\\\\\\\\\\\"TITULO\\\\\\\\\\\"\\\"; si ademas se piden sus campos o campos disponibles, crea header Y detail, cada seccion con su tableInsertLine y exactamente N-1 inserciones, y despues N TText por seccion. Esquema minimo de dos secciones y dos columnas: create TTable ref tabla1; tableInsertLine header; tableInsertColumn header columnIndex 1; tableInsertLine detail; tableInsertColumn detail columnIndex 1; despues create.targetCell header 0 y 1, y detail 0 y 1, todos con table:{\\\"ref\\\":\\\"tabla1\\\"}. Alinear el contenido o texto a izquierda/centro/derecha usa setProperty con property:\\\"cTextAlign\\\" y value:\\\"left\\\"|\\\"center\\\"|\\\"right\\\"; align se reserva para alinear geometricamente varios objetos.\"},{\"role\":\"user\",\"content\":\"SELECCION_ACTUAL_SCOPE=selection:\\n[]\\nDOCUMENTO_COMPLETO_SCOPE=global:\\n[]\\nGLOBAL_COUNTS:\\nGLOBAL_IDS_BY_TYPE:\\nPROPIEDADES COMUNES EDITABLES: \\nCOLORES CANÓNICOS: rojo:#ff0000 · verde:#008000 · verde oscuro:#006400 · azul:#0000ff · azul oscuro:#00008b · amarillo:#ffff00 · gris claro:#d3d3d3\\nCAMPOS_Y_VARIABLES_DISPONIBLES\\nTIPOS:C=texto,N=numero,D=fecha,I=imagen,M=memo,L=booleano\\nCABECERA:HEADER.cif:C,HEADER.cliente:C,HEADER.direccion:C,HEADER.fecha:D,HEADER.logo:I,HEADER.numero:N,HEADER.total:N\\nDETALLE:DETAIL.cantidad:N,DETAIL.codigo:C,DETAIL.descripcion:C,DETAIL.importe:N,DETAIL.precio:N\\nVARIABLES:VAR.Moneda:C,VAR.Titulo:C\\nACUMULADORES:SUM.TotalDetalle:N\\n\\nINSTRUCCIÓN:\\nCrea tres objetos secuencialmente: un texto que ponga FACTURA, un rectangulo y una linea. Al texto creado cambiale el color a #17365D, ponlo en negrita, muevelo 15 mm a la derecha y redimensionalo al doble de ancho. Al rectangulo ponle fondo #D9EAF7 y muevelo 10 mm hacia abajo. Mueve tambien la linea 5 mm a la derecha.\\n\\nREPARACION_UNICA_COMMANDS\\nPLAN_ORIGINAL_COMPLETO:{\\\"commands\\\":[{\\\"command\\\":\\\"create\\\",\\\"type\\\":\\\"TText\\\",\\\"properties\\\":{\\\"cText\\\":\\\"\\\\\\\"FACTURA\\\\\\\"\\\"}},{\\\"command\\\":\\\"setProperty\\\",\\\"target\\\":\\\"selection\\\",\\\"property\\\":\\\"cTextColor\\\",\\\"value\\\":\\\"#17365D\\\"},{\\\"command\\\":\\\"setProperty\\\",\\\"target\\\":\\\"selection\\\",\\\"property\\\":\\\"lFontBold\\\",\\\"value\\\":true},{\\\"command\\\":\\\"move\\\",\\\"target\\\":\\\"selection\\\",\\\"dx\\\":15,\\\"dy\\\":0},{\\\"command\\\":\\\"resize\\\",\\\"target\\\":\\\"selection\\\",\\\"scaleX\\\":2,\\\"scaleY\\\":1},{\\\"command\\\":\\\"create\\\",\\\"type\\\":\\\"TRectangle\\\",\\\"properties\\\":{\\\"cBackgroundColor\\\":\\\"#D9EAF7\\\"}},{\\\"command\\\":\\\"move\\\",\\\"target\\\":\\\"selection\\\",\\\"dx\\\":0,\\\"dy\\\":10},{\\\"\\\":\\\"line\\\"},{\\\"command\\\":\\\"create\\\",\\\"type\\\":\\\"TLine\\\"},{\\\"command\\\":\\\"move\\\",\\\"target\\\":\\\"selection\\\",\\\"dx\\\":5,\\\"dy\\\":0}]}\\nERROR_DRY_RUN:{\\\"commandIndex\\\":7,\\\"command\\\":\\\"\\\",\\\"error\\\":\\\"Comando no soportado.\\\"}\\nDEVUELVE EL PLAN COMPLETO CORREGIDO. Conserva las partes correctas, corrige dependencias, commands invalidos y prerequisitos omitidos. Antes de devolverlo, revisa tambien que cubre todas las partes explicitamente solicitadas por el usuario y que no omite pasos necesarios. Devuelve unicamente {\\\"commands\\\":[...]} y no un parche parcial.\"}],\"stream\":false,\"format\":\"json\",\"keep_alive\":-1,\"options\":{\"temperature\":0,\"top_p\":1,\"top_k\":0,\"repeat_penalty\":1.1,\"frequency_penalty\":0,\"presence_penalty\":0,\"num_ctx\":65536,\"num_batch\":4096,\"num_thread\":10,\"num_gpu\":99,\"num_predict\":4096},\"think\":\"low\"}",
          "cHttpBody": "{\"model\":\"gpt-oss:20b\",\"created_at\":\"2026-08-10T12:23:15.7681022Z\",\"message\":{\"role\":\"assistant\",\"content\":\"{\\\"commands\\\":[{\\\"command\\\":\\\"create\\\",\\\"type\\\":\\\"TText\\\",\\\"properties\\\":{\\\"cText\\\":\\\"\\\\\\\"FACTURA\\\\\\\"\\\"}},{\\\"command\\\":\\\"setProperty\\\",\\\"target\\\":\\\"selection\\\",\\\"property\\\":\\\"cTextColor\\\",\\\"value\\\":\\\"#17365D\\\"},{\\\"command\\\":\\\"setProperty\\\",\\\"target\\\":\\\"selection\\\",\\\"property\\\":\\\"lFontBold\\\",\\\"value\\\":true},{\\\"command\\\":\\\"move\\\",\\\"target\\\":\\\"selection\\\",\\\"dx\\\":15,\\\"dy\\\":0},{\\\"command\\\":\\\"resize\\\",\\\"target\\\":\\\"selection\\\",\\\"scaleX\\\":2,\\\"scaleY\\\":1},{\\\"command\\\":\\\"create\\\",\\\"type\\\":\\\"TRectangle\\\",\\\"properties\\\":{\\\"cBackgroundColor\\\":\\\"#D9EAF7\\\"}},{\\\"command\\\":\\\"move\\\",\\\"target\\\":\\\"selection\\\",\\\"dx\\\":0,\\\"dy\\\":10},{\\\"command\\\":\\\"create\\\",\\\"type\\\":\\\"TLine\\\"},{\\\"command\\\":\\\"move\\\",\\\"target\\\":\\\"selection\\\",\\\"dx\\\":5,\\\"dy\\\":0}]}\",\"thinking\":\"Need create text, rectangle, line sequentially. Then apply properties to each. Use separate targets: after creating text, target selection refers to that new object? But selection is current selection; after creation, selection includes the created object. So we can chain commands. For rectangle and line similarly.\\n\\nWe need correct syntax: for line creation command should be {\\\"command\\\":\\\"create\\\",\\\"type\\\":\\\"TLine\\\"}. The erroneous part had \\\"\\\"line\\\". Remove.\\n\\nAlso ensure move/resize after each create. Sequence:\\n\\n1 create text\\n2 setProperty color\\n3 setProperty bold\\n4 move right 15\\n5 resize scaleX 2\\n\\n6 create rectangle\\n7 setProperty background color\\n8 move down 10\\n\\n9 create line\\n10 move right 5\\n\\nReturn commands array.\\n\\nCheck that all requested: yes. Provide JSON.\\n\\n\"},\"done\":true,\"done_reason\":\"stop\",\"total_duration\":5003413000,\"load_duration\":206612900,\"prompt_eval_count\":6030,\"prompt_eval_duration\":15431000,\"eval_count\":166,\"eval_duration\":2189325000}",
          "hMetrics": {
            "total_duration": 5003413000,
            "load_duration": 206612900,
            "prompt_eval_count": 6030,
            "prompt_eval_duration": 15431000,
            "eval_count": 166,
            "eval_duration": 2189325000,
            "unattributed_duration": 2592044100
          },
          "hCommands": {
            "commands": [
              {
                "command": "create",
                "type": "TText",
                "properties": {
                  "cText": "\"FACTURA\""
                }
              },
              {
                "command": "setProperty",
                "target": "selection",
                "property": "cTextColor",
                "value": "#17365D"
              },
              {
                "command": "setProperty",
                "target": "selection",
                "property": "lFontBold",
                "value": true
              },
              {
                "command": "move",
                "target": "selection",
                "dx": 15,
                "dy": 0
              },
              {
                "command": "resize",
                "target": "selection",
                "scaleX": 2,
                "scaleY": 1
              },
              {
                "command": "create",
                "type": "TRectangle",
                "properties": {
                  "cBackgroundColor": "#D9EAF7"
                }
              },
              {
                "command": "move",
                "target": "selection",
                "dx": 0,
                "dy": 10
              },
              {
                "command": "create",
                "type": "TLine"
              },
              {
                "command": "move",
                "target": "selection",
                "dx": 5,
                "dy": 0
              }
            ]
          },
          "lValid": true,
          "nCreates": 0,
          "nChanges": 0,
          "nDeletes": 0,
          "nStructures": 0,
          "nGeneratedIds": 0,
          "nOperations": 9,
          "nFinalOperations": 9,
          "cValidation": "Shape commands válida; validación de ejecución pendiente",
          "nResponseMilliseconds": 5028.966,
          "tRequestStartedAt": "2026-08-10T14:23:10.741956+02:00",
          "tResponseFinishedAt": "2026-08-10T14:23:15.770878+02:00",
          "hPromptDiagnostics": {
            "nSystemCharacters": 21478,
            "nUserCharacters": 2078,
            "nPromptCharacters": 23557,
            "nPromptCharactersBeforeFields": 21084,
            "nFieldsCharacters": 370,
            "nPromptTokensBeforeEstimated": 5271,
            "nPromptTokensAfterEstimated": 5890,
            "nContextTokens": 65536,
            "lPromptFitsContext": true,
            "hFields": {
              "nGroups": 4,
              "nFields": 12,
              "nUserVariables": 2,
              "nAccumulators": 1
            }
          }
        }
      }
    },
    {
      "action": "logCommandsRepair",
      "milliseconds": 16.600000023841858,
      "payload": {
        "cAction": "logCommandsRepair",
        "cInstruction": "Crea tres objetos secuencialmente: un texto que ponga FACTURA, un rectangulo y una linea. Al texto creado cambiale el color a #17365D, ponlo en negrita, muevelo 15 mm a la derecha y redimensionalo al doble de ancho. Al rectangulo ponle fondo #D9EAF7 y muevelo 10 mm hacia abajo. Mueve tambien la linea 5 mm a la derecha.",
        "hInitialPlan": {
          "commands": [
            {
              "command": "create",
              "type": "TText",
              "properties": {
                "cText": "\"FACTURA\""
              }
            },
            {
              "command": "setProperty",
              "target": "selection",
              "property": "cTextColor",
              "value": "#17365D"
            },
            {
              "command": "setProperty",
              "target": "selection",
              "property": "lFontBold",
              "value": true
            },
            {
              "command": "move",
              "target": "selection",
              "dx": 15,
              "dy": 0
            },
            {
              "command": "resize",
              "target": "selection",
              "scaleX": 2,
              "scaleY": 1
            },
            {
              "command": "create",
              "type": "TRectangle",
              "properties": {
                "cBackgroundColor": "#D9EAF7"
              }
            },
            {
              "command": "move",
              "target": "selection",
              "dx": 0,
              "dy": 10
            },
            {
              "": "line"
            },
            {
              "command": "create",
              "type": "TLine"
            },
            {
              "command": "move",
              "target": "selection",
              "dx": 5,
              "dy": 0
            }
          ]
        },
        "hDiagnostic": {
          "commandIndex": 7,
          "command": "",
          "error": "Comando no soportado."
        },
        "hRepairedPlan": {
          "commands": [
            {
              "command": "create",
              "type": "TText",
              "properties": {
                "cText": "\"FACTURA\""
              }
            },
            {
              "command": "setProperty",
              "target": "selection",
              "property": "cTextColor",
              "value": "#17365D"
            },
            {
              "command": "setProperty",
              "target": "selection",
              "property": "lFontBold",
              "value": true
            },
            {
              "command": "move",
              "target": "selection",
              "dx": 15,
              "dy": 0
            },
            {
              "command": "resize",
              "target": "selection",
              "scaleX": 2,
              "scaleY": 1
            },
            {
              "command": "create",
              "type": "TRectangle",
              "properties": {
                "cBackgroundColor": "#D9EAF7"
              }
            },
            {
              "command": "move",
              "target": "selection",
              "dx": 0,
              "dy": 10
            },
            {
              "command": "create",
              "type": "TLine"
            },
            {
              "command": "move",
              "target": "selection",
              "dx": 5,
              "dy": 0
            }
          ]
        },
        "hFinalValidation": {
          "lOk": true,
          "cError": "",
          "hDiagnostic": null
        },
        "nInitialMilliseconds": 4380.371,
        "nRepairMilliseconds": 5051.599999964237
      },
      "response": {
        "lOk": true
      }
    }
  ],
  "documentBefore": {
    "cType": "TDocument",
    "cFormatVersion": "1.0",
    "cTemplateId": "",
    "cTemplateName": "Documento",
    "cDocumentKind": "report",
    "cPaperFormat": "a4",
    "cPaperOrientation": "portrait",
    "tModifiedAt": "2026-08-10T12:06:21.320Z",
    "cFileName": "",
    "nPaperWidth": 210,
    "nPaperHeight": 297,
    "cPaperHeightMode": "fixed",
    "nDesignHeight": 250,
    "nContinuousBottomMargin": 5,
    "lShowGrid": true,
    "hUserVars": {
      "Moneda": {
        "tipo": "texto",
        "formula": "\"EUR\""
      },
      "Titulo": {
        "tipo": "texto",
        "formula": "\"Factura\""
      }
    },
    "hAcumVars": {
      "TotalDetalle": {
        "tipo": "numerico",
        "formula": "DETAIL.importe"
      }
    },
    "hImportMetadata": {},
    "hLabelLayout": {
      "nLabelWidth": 70,
      "nLabelHeight": 37,
      "nColumns": 3,
      "nRows": 8,
      "nMarginLeft": 0,
      "nMarginTop": 0,
      "nGapHorizontal": 0,
      "nGapVertical": 0,
      "cFlow": "row",
      "cLabelFormat": "manual",
      "nPrintOffsetX": 0,
      "nPrintOffsetY": 0
    },
    "hLayers": {
      "0": {
        "nId": 0,
        "cName": "Capa 1",
        "cCondition": "",
        "lDesignerVisible": true,
        "cColor": "#000000"
      }
    },
    "aObjects": []
  },
  "documentAfter": {
    "cType": "TDocument",
    "cFormatVersion": "1.0",
    "cTemplateId": "",
    "cTemplateName": "Documento",
    "cDocumentKind": "report",
    "cPaperFormat": "a4",
    "cPaperOrientation": "portrait",
    "tModifiedAt": "2026-08-10T12:06:21.320Z",
    "cFileName": "",
    "nPaperWidth": 210,
    "nPaperHeight": 297,
    "cPaperHeightMode": "fixed",
    "nDesignHeight": 250,
    "nContinuousBottomMargin": 5,
    "lShowGrid": true,
    "hUserVars": {
      "Moneda": {
        "tipo": "texto",
        "formula": "\"EUR\""
      },
      "Titulo": {
        "tipo": "texto",
        "formula": "\"Factura\""
      }
    },
    "hAcumVars": {
      "TotalDetalle": {
        "tipo": "numerico",
        "formula": "DETAIL.importe"
      }
    },
    "hImportMetadata": {},
    "hLabelLayout": {
      "nLabelWidth": 70,
      "nLabelHeight": 37,
      "nColumns": 3,
      "nRows": 8,
      "nMarginLeft": 0,
      "nMarginTop": 0,
      "nGapHorizontal": 0,
      "nGapVertical": 0,
      "cFlow": "row",
      "cLabelFormat": "manual",
      "nPrintOffsetX": 0,
      "nPrintOffsetY": 0
    },
    "hLayers": {
      "0": {
        "nId": 0,
        "cName": "Capa 1",
        "cCondition": "",
        "lDesignerVisible": true,
        "cColor": "#000000"
      }
    },
    "aObjects": [
      {
        "cId": "obj_1786364595832_4d5o10",
        "cName": "Texto",
        "cType": "TText",
        "nLeft": 35,
        "nTop": 20,
        "nWidth": 120,
        "nHeight": 12,
        "lVisible": true,
        "lLocked": false,
        "lSelected": false,
        "nLayerId": 0,
        "nZIndex": 1,
        "cBorderColor": "#000000",
        "cBorderColorFormula": "",
        "nBorderWidth": 0.1,
        "lBorderTop": false,
        "lBorderRight": false,
        "lBorderBottom": false,
        "lBorderLeft": false,
        "cBackgroundColor": "#ffffff",
        "cBackgroundColorFormula": "",
        "cFillStyle": "solid",
        "cFillColor2": "#ffffff",
        "cFillColor2Formula": "",
        "cFillColor3": "#ffffff",
        "cFillColor3Formula": "",
        "nFillOpacity": 1,
        "nRounded": 0,
        "nShadowSize": 0,
        "nShadowTransparency": 50,
        "cShadowColor": "#000000",
        "cShadowColorFormula": "",
        "nRotation": 0,
        "nOpacity": 1,
        "cCondition": "",
        "nPaddingTop": 0,
        "nPaddingRight": 0,
        "nPaddingBottom": 0,
        "nPaddingLeft": 0,
        "nLl12LinkID": 0,
        "nLl12LinkToID": 0,
        "nLl12LinkMode": 0,
        "nLl12GroupId": 0,
        "lLl12WrapBefore": false,
        "cTableId": "",
        "cTableSectionKey": "",
        "cText": "\"FACTURA\"",
        "cFontFamily": "Arial",
        "nFontSize": 12,
        "nFontOutPrecision": 0,
        "nFontPitchAndFamily": 0,
        "lFontBold": true,
        "cFontBoldFormula": "",
        "lFontItalic": false,
        "cFontItalicFormula": "",
        "lFontUnderline": false,
        "cFontUnderlineFormula": "",
        "lFontStrikeout": false,
        "cFontStrikeoutFormula": "",
        "lTextWrap": true,
        "lAllowPageBreak": false,
        "nLineSpacing": 0,
        "nParagraphSpacing": 0,
        "lKeepEmptyParagraphs": true,
        "lTextAdjusted": false,
        "lTrimSpaces": false,
        "cTextFlowGroup": "",
        "nTextFlowOrder": 0,
        "nTextFlowLineHeight": 0,
        "cTextColor": "#17365d",
        "cTextColorFormula": "",
        "nTextOpacity": 1,
        "cTextAlign": "left",
        "nTextDecimalPosition": -10,
        "cTextVerticalAlign": "top",
        "cLl12SourceType": "",
        "cLl12SourceJson": ""
      },
      {
        "cId": "obj_1786364595840_i885k1",
        "cName": "Rectángulo",
        "cType": "TRectangle",
        "nLeft": 20,
        "nTop": 30,
        "nWidth": 50,
        "nHeight": 30,
        "lVisible": true,
        "lLocked": false,
        "lSelected": false,
        "nLayerId": 0,
        "nZIndex": 2,
        "cBorderColor": "#000000",
        "cBorderColorFormula": "",
        "nBorderWidth": 0.1,
        "lBorderTop": true,
        "lBorderRight": true,
        "lBorderBottom": true,
        "lBorderLeft": true,
        "cBackgroundColor": "#d9eaf7",
        "cBackgroundColorFormula": "",
        "cFillStyle": "solid",
        "cFillColor2": "#ffffff",
        "cFillColor2Formula": "",
        "cFillColor3": "#ffffff",
        "cFillColor3Formula": "",
        "nFillOpacity": 1,
        "nRounded": 0,
        "nShadowSize": 0,
        "nShadowTransparency": 50,
        "cShadowColor": "#000000",
        "cShadowColorFormula": "",
        "nRotation": 0,
        "nOpacity": 1,
        "cCondition": "",
        "nPaddingTop": 0,
        "nPaddingRight": 0,
        "nPaddingBottom": 0,
        "nPaddingLeft": 0,
        "nLl12LinkID": 0,
        "nLl12LinkToID": 0,
        "nLl12LinkMode": 0,
        "nLl12GroupId": 0,
        "lLl12WrapBefore": false,
        "cTableId": "",
        "cTableSectionKey": ""
      },
      {
        "cId": "obj_1786364595847_d284jw",
        "cName": "Línea",
        "cType": "TLine",
        "nLeft": 25,
        "nTop": 20,
        "nWidth": 50,
        "nHeight": 1,
        "lVisible": true,
        "lLocked": false,
        "lSelected": true,
        "nLayerId": 0,
        "nZIndex": 3,
        "cBorderColor": "#000000",
        "cBorderColorFormula": "",
        "nBorderWidth": 0.1,
        "lBorderTop": false,
        "lBorderRight": false,
        "lBorderBottom": false,
        "lBorderLeft": false,
        "cBackgroundColor": "transparent",
        "cBackgroundColorFormula": "",
        "cFillStyle": "solid",
        "cFillColor2": "#ffffff",
        "cFillColor2Formula": "",
        "cFillColor3": "#ffffff",
        "cFillColor3Formula": "",
        "nFillOpacity": 1,
        "nRounded": 0,
        "nShadowSize": 0,
        "nShadowTransparency": 50,
        "cShadowColor": "#000000",
        "cShadowColorFormula": "",
        "nRotation": 0,
        "nOpacity": 1,
        "cCondition": "",
        "nPaddingTop": 0,
        "nPaddingRight": 0,
        "nPaddingBottom": 0,
        "nPaddingLeft": 0,
        "nLl12LinkID": 0,
        "nLl12LinkToID": 0,
        "nLl12LinkMode": 0,
        "nLl12GroupId": 0,
        "lLl12WrapBefore": false,
        "cTableId": "",
        "cTableSectionKey": "",
        "cOrientation": "horizontal",
        "cLineStyle": "solid"
      }
    ]
  }
}