Přeskočit obsah

Alternativní definice formulářů

Alternativní definice formulářů (Custom Form Definitions) umožňují definovat více variant rozložení formuláře v rámci jedné konfigurace. Aktivní varianta se přepíná programově pomocí metody form.setFormDefinition() v Custom Script.

Konfigurace

Alternativní definice se konfigurují v poli CustomFormDefinitions v JSON konfiguraci formuláře. Každá definice má vlastní Name a vlastní sadu Groups.

Vlastnost Popis
Name Jedinečný název definice. Slouží jako identifikátor při přepínání. [Povinné]
Groups Pole skupin specifických pro tuto definici. Stejný formát jako hlavní Groups. [Povinné]
{
  "Groups": [
    {
      "Name": "Výchozí formulář",
      "Fields": [
        { "InternalName": "Title" },
        { "InternalName": "Status" }
      ]
    }
  ],
  "CustomFormDefinitions": [
    {
      "Name": "CreateForm",
      "Groups": [
        {
          "Name": "Nová položka",
          "Fields": [
            { "InternalName": "Title", "Required": true },
            { "InternalName": "Category" },
            { "InternalName": "Priority" }
          ]
        }
      ]
    },
    {
      "Name": "DisplayForm",
      "Groups": [
        {
          "Name": "Přehled",
          "Fields": [
            { "InternalName": "Title" },
            { "InternalName": "Status" },
            { "InternalName": "Created" },
            { "InternalName": "Author" }
          ]
        }
      ]
    }
  ]
}

Přepínání definic

Přepnutí aktivní definice se provádí v události onFormInit pomocí metody form.setFormDefinition(name). Metoda přijímá název definice z CustomFormDefinitions.

Omezení: setFormDefinition() lze volat pouze v události onFormInit. Po dokončení inicializace metoda vyhodí chybu.

async function onFormInit() {
  const { form } = tisa;

  if (form.isNewForm) {
    form.setFormDefinition("CreateForm");
  } else if (form.isDisplayForm) {
    form.setFormDefinition("DisplayForm");
  }
  // Pokud podmínka neodpovídá, použije se výchozí Groups
}

Typický scénář

Alternativní definice se nejčastěji používají, když:

  • Nový formulář zobrazuje jiná pole než editační nebo zobrazovací formulář.
  • Formulář úkolu potřebuje zobrazit pouze relevantní pole pro schvalovatele.
  • Různé typy obsahu vyžadují různé rozložení v rámci jednoho seznamu.