Définir les éléments répétables dans le Filtre JSON

Cloud_Business.png

Si un élément JSON survient dans les données JSON plusieurs fois, c'est un élément répétable. Généralement, un élément répétable contient des données pour un seul masque d'étiquette. Les éléments répétables produisent plusieurs étiquettes remplies des données pertinentes.

Pour indiquer que vous voulez utiliser les valeurs de tous les éléments répétables, pas seulement ceux du premier :

  1. Sélectionner l'élément et le définir comme Bloc de données.

  2. Activer l'option Élément répétable.

UUID-8cd03b89-bc59-8a9a-0f71-cb27d3d850d8.png

Si le filtre contient une définition d'éléments définis comme bloc de données/élément répétable, l'action Utiliser le Filtre de Données affiche les éléments répétables avec les espaces réservés imbriqués. Toute action indentée sous un tel espace réservé s'exécute seulement pour les blocs de données à ce niveau.

Exemple

L'élément "item" est défini comme – Bloc de données et Élément répétable . Il indique au filtre d'extraire toutes les occurrences du spectre, pas seulement le premier. Dans ce cas, l'élément item doit être défini comme le sous-niveau dans l'action Utiliser le Filtre de Données. Vous devez indenter les actions Ouvrir l'étiquette et Imprimer l'étiquette sous cet espace réservé de sous-niveau, pour qu'elles soient bouclées autant de fois qu'il y a d'occurrences de l'élément item. Comme montré dans l'exemple ci-dessous, à trois reprises.

{
    "NICELABEL_JOB" : {
        "TIMESTAMP" : "20130221100527.788134",
        "USER" : "PGRI",
        "IT_LABEL_DATA" : {
            "item" : [
                {
                    "LBL_NAME" : "goods_receipt.nlbl",
                    "LBL_PRINTER": "Production01",
                    "LBL_QUANTITY": "1",
                    "MAKTX": "MASS ONE",
                    "MATNR" : "28345",
                    "MEINS": "KG",
                    "WDATU" : "19.01.2012",
                    "QUANTITY" : "1",
                    "EXIDV" : "012345678901234560"
                },
                {
                    "LBL_NAME" : "goods_receipt.nlbl",
                    "LBL_PRINTER": "Production01",
                    "LBL_QUANTITY": "1",
                    "MAKTX": "MASSE DEUX",
                    "MATNR" : "28346",
                    "MEINS": "KG",
                    "WDATU" : "11.01.2011",
                    "QUANTITY" : "1",
                    "EXIDV" : "012345678901234577"
                },
                {
                    "LBL_NAME" : "goods_receipt.nlbl",
                    "LBL_PRINTER": "Production01",
                    "LBL_QUANTITY": "1",
                    "MAKTX": "MASSE TROIS",
                    "MATNR" : "27844",
                    "MEINS": "KG",
                    "WDATU" : "07.03.2009",
                    "QUANTITY" : "1",
                    "EXIDV" : "012345678901234584"
                }
            ]
        }
    }
}

Avertissement :

Le filtre de données json avec un bloc de données imbriquées duplique les valeurs provenant de la zone d’affectation précédente si une variable est définie dans le premier bloc, mais pas dans le deuxième. Prenons par exemple une situation où vous imprimez deux étiquettes. Dans la première zone d'affectation, vous avez défini une variable « manufacturer_serial ». Dans la deuxième zone d’affectation, cette variable n’est pas présente.

{
  "jobs" : [
    {
      "data" : [
        {
          "manufacturer_serial": "706583012001",
          "package_code": "AA792CY"
        }
      ],
      "label_filename": "serial_number_label.nlbl",
      "print_quantity" : 1,
      "printer_name": "Warehouse_printer_09"
    },
    {
      "data" : [
        {
          "package_code": "BE273XS"
        }
      ],
      "label_filename": "serial_number_label.nlbl",
      "print_quantity" : 1,
      "printer_name": "Entrepôt_09"
    }
  ]
}

Le résultat attendu serait la deuxième étiquette sans les données « manufacturer_serial ». Mais sur l'impression obtenue, la deuxième étiquette contiendrait la valeur "manufacturer_serial" provenant de la première étiquette, à savoir 706583012001.

Trois solutions sont possibles :

  • Éviter des blocs de données imbriquées.

  • Définir des valeurs de variables vides (« ») si les variables ne sont pas utilisées dans les blocs de données imbriquées.

          "data" : [
            {
              "manufacturer_serial" : "",
              "package_code": "AA792CY"
            }
  • Utiliser des conditions sur les actions pour définir les variables.

  • Utiliser des manipulations de chaîne lorsque des variables manquantes ont été détectées.