Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

Le service web RecordSql est une fonctionnalité native du runtime, disponible en mode REST uniquement.

...

Paramètre

Balise

Description

Nom dictionnaire RecordSql

"dhoq"

(obligatoire)

Nom du dictionnaire record sql : c’est le fichier .dhoq.

Par exemple GTRSART.dhoq contient plusieurs RecordSql liés aux articles

Nom RecordSql

"recordsql"

(obligatoire)

Nom du record sql unitaire : correspond a la balise <RecordSql du dictionnaire.

Par exemple Article est la requête SQL principal de la base articles

Image RemovedImage Added

Token

"access_token"

(obligatoire)

Valeur du TOKEN obtenu durant la phase d'authentification

Paramètres 

"parameters"

Liste des champs et leurs valeurs (en majuscules et en précisant le nom de table) au format table.champ=valeur séparés par le point-virgule.

Ce champs servent de référence en tant que clé pour exécuter la requête. Par défaut ce champ reste vide car le moteur REST cherche s’il peut remplir tout seul les paramètres variables pour traiter la requête, en se basant sur la table des utilisateurs  et les tables communes de l’ERP.

En principe ce champ devrait être toujours vide, à part quelques exceptions, sinon il doit contenir une suite de champs .

Exemple : MZ.DOS=998 ; etc

Champs à récupérer

"fields"

Liste des champs à récupérer, en majuscules et sans préciser la table, séparés par un point virgule.

Par défaut * indique qu’on veut récupérer tous les champs de la table.

Exemple  CPOSTAL;VIL

Note : pour les champs provenant d'une jointure soit on utilise l'alias (si existant dans le recordSql), soit on utilise le nom de la table jointée avec le nom du champ séparés par un '_'. Exemple : jointure sur ART, la récupération du champ ART.REF s'obtient avec l''écriture du champ ART_REF

Attention, ce sont les champs renvoyés par le service web, et pas ceux retournés par la requêre SQL. Pour optimiser la requête, il convient d'utiliser les options

Condition where

"where”

Nom de la condition where existante dans le RecordSql

Le programme XRecordSQLCheck.exe vous permet de connaitre le contenu des fichier .dhog avec la liste des recordSQL qu’ il contient et pour chacun la liste des clauses where, des tris et des clauses having ainsi que les paramètres à transmettre.

Paramètres where

"where_parameters"

Liste des paramètres de la condition where selon le RecordSql au format nomDuParametre1=valeur1;nomDuParametre2=valeur2 ou directement les valeurs au format valeur1;valeur2 dans ce cas les conditions sont appliquées dans l’ordre d’apparition

Pour les champs valeur de type ‘chaîne de caractères’, ne pas mettre de cote ou double cote pour les chaines

Pagination offset

"offset"

Mettre une valeur > 0 pour récupérer un nombre important d'enregistrements. Voir plus loin au sujet des lectures en mode pagination pour renvoyer les enregistrements en plusieurs fois, sachant que le serveur est configuré pour une valeur maximale du nombre d'enregistrements

La valeur 0 équivaut a la valeur 1, c'est à dire que seul le premier enregistrement sera retourné.

Pagination count

"count"

Tri

"orderby"

Nom du tri orderby du RecordSql : nom tel qu'il apparaît par exemple Par_Ref

Condition having

"having"

Nom de la condition having

Paramètres having

"having_parameters"

Paramètres de la condition having

Filtres SQL

"filter"

Filtres avancés concernant les clauses WHERE et la gestion des jointures (voir plus bas)

Informations

"infos"

Informations complémentaires, notamment sur la performances (voir plus bas)

...

Info

Header

Un HEADER est uniquement utilisé pour indiqué le Content-Type : application/json  , mais pas de header d'authentification puisqu'elle passe par le champ "access_token" du corps


Astuce

Espacements

Les 'espaces' sont interdits dans les noms de balises.

Exemple :  un appel "dhoq " (donc un espace en trop) provoque une erreur 

...

Balise

Description

"error"

Contient le CODE ERREUR

  • 0 signifie qu'il n'y a pas d'erreur

  • tout autre valeur indique une erreur

Retrouvez dans cette page les code retour d’erreur

"txterr"

Texte de l'erreur, si applicable

"tablename"

Nom de la table FROM lue

"nbrecord"

Nombre d'enregistrements retournés

"records"

Tableau avec les enregistrements retournés

"infos"

Informations générales ou performance

...

Exemple de demande de lecture de la table de codes postaux, alors que le paramétrage des RecordSql n'est pas fait :

{
"dhoq" : "xxrstab.dhoq",
"recordsql" : "",
"access_token" : "xxxxxx",
"parameters" : " ",
"fields" : "*",         
"where" : " ",
"where_parameters" : " ",
"offset" : 0,
"count" : 0,
"orderby" :  " ",
"havingc" : " ",
"having_parameters" : " ",
"infos" : " " 
}

Réponse :

{
    "error"54,
    "txterr""erreur : dhoq '' non autorisé",
    "tablename""",
    "nbrecord"0,
    "records"null,
    "infos"""
}


Lecture simple

Exemple de demande de lecture de la table de catégories fournisseur, sans conditions ni champs précisés :

{
"dhoq" : "gtrstab.dhoq",
"recordsql" : "CATFOU",
"access_token" : "xxxxxx",
"parameters" : " ",
"fields" : "",          
"where" : " ",
"where_parameters" : " ",
"offset" : 0,
"count" : 0,
"orderby" :  " ",
"havingc" : " ",
"having_parameters" : " ",
"infos" : " " 
}

Réponse (a noter que la demande en count=0 donne un retour nbrecord=1:

{
    "error"0,
    "txterr""",
    "tablename""T116",
    "nbrecord"1,
    "records": [
        {
            "record": {
                "T116_ID""3",
                "CEBIN""116",
                "DOS""998",
                "TABNO""116",
                "CATFOUCOD""TRANSIT",
                "LIB80""Transitaire",
                "CATFABFL""1",
                "USERCR""DEMO",
                "USERMO""DEMO",
                "USERCRDH""20191119144005",
                "USERMODH""20191119144026",
                "CENOTE""1",
                "NOTE""0"
            }
        }
    ],
    "infos"""
}


Exemple de demande de lecture de la table de codes postaux, sans conditions mais avec liste de champs ET uniquement les 2 premiers:

{
"dhoq" : "gtrstab.dhoq",
"recordsql" : "CODEPOSTAL",
"access_token" : "xxxxxx",
"parameters" : " ",
"fields" : "CPOSTAL;VIL",           
"where" : " ",
"where_parameters" : " ",
"offset" : 0,
"count" : 100,
"orderby" :  " ",
"havingc" : " ",
"having_parameters" : " ",
"infos" : " " 
}

Réponse :

{
    "error"0,
    "txterr""",
    "tablename""T057",
    "nbrecord"2,
    "records": [
        {
            "record": {
                "CPOSTAL""01000",
                "VIL""BOURG EN BRESSE"
            }
        },
        {
            "record": {
                "CPOSTAL""01000",
                "VIL""BROU"
            }
        }
    ],
    "infos"""
}

Lecture simple avec conditions

Exemple de demande de lecture de la table de codes postaux, avec conditions LIKE et liste de champs :

{

"dhoq":"gtrstab.dhoq",
"recordsql":"CODEPOSTAL",
"access_token":"xxxxxx",
"parameters":"",
"fields":"CPOSTAL;VIL",
"where":"like_cpostal",
"where_parameters":"cpostal=67%",
"offset":0,
"count":100,
"orderby":"",
"having":"",
"having_parameters":"",
"infos":""
}

Réponse :

{
    "error"0,
    "txterr""",
    "tablename""T057",
    "nbrecord"1,
    "records": [
        {
            "record": {
                "CPOSTAL""67000",
                "VIL""STRASBOURG"
            }
        }
    ],
    "infos"""
}

Lecture avec pagination

Exemple de demande de lecture de la table des modes de règlement avec pagination par 10 : Première lecture

{
"dhoq" : "gtrstab.dhoq",
"recordsql" : "MODEREGLEMENT",
"access_token" : "xxxxxx",
"parameters" : " ",
"fields" : "*",         
"where" : " ",
"where_parameters" : " ",
"offset" : 0,
"count" : 10,
"orderby" :  " ",
"having" : " ",
"having_parameters" : " ",
"infos" : " " 
}

Réponse :

{
    "error"0,
    "txterr""",
    "tablename""T006",
    "nbrecord"10,
    "records": [
        {
            "record": {
                "DOS""998",
                "REGL""B30",
                "LIB"""
            }
        },
        {
            "record": {
                "DOS""998",
                "REGL""B30F",
                "LIB"""
            }
        },
        {
            "record": {
                "DOS""998",
                "REGL""C",
                "LIB"""
            }
        },
        {
            "record": {
                "DOS""998",
                "REGL""N10",
                "LIB"""
            }
        },
        {
            "record": {
                "DOS""998",
                "REGL""N30",
                "LIB"""
            }
        },
        {
            "record": {
                "DOS""998",
                "REGL""P30",
                "LIB"""
            }
        },
        {
            "record": {
                "DOS""998",
                "REGL""P30F",
                "LIB"""
            }
        },
        {
            "record": {
                "DOS""998",
                "REGL""T30",
                "LIB"""
            }
        },
        {
            "record": {
                "DOS""998",
                "REGL""T30F",
                "LIB"""
            }
        },
        {
            "record": {
                "DOS""998",
                "REGL""T60",
                "LIB"""
            }
        }
    ],
    "infos"""
}

La réponse indique un NBRECORD qui vaut le COUNT demandé, donc il faut une seconde lecture:

{
"dhoq" : "gtrstab.dhoq",
"recordsql" : "MODEREGLEMENT",
"access_token" : "xxxxxx",
"parameters" : "",
"fields" : "DOS;REGL;LIB",          
"where" : " ",
"where_parameters" : " ",
"offset" : 10,
"count" : 10,
"orderby" :  " ",
"havingc" : " ",
"having_parameters" : " ",
"infos" : " " 
}

Réponse :

{
    "error"0,
    "txterr""",
    "tablename""T006",
    "nbrecord": 9,
    "records": [
        {
            "record": {
                "DOS""998",
                "REGL""T60F",
                "LIB"""
            }
        },
        {
            "record": {
                "DOS""998",
                "REGL""TMUL",
                "LIB"""
            }
        },
        {
            "record": {
                "DOS""998",
                "REGL""V30",
                "LIB"""
            }
        },
        {
            "record": {
                "DOS""998",
                "REGL""V30F",
                "LIB"""
            }
        },
        {
            "record": {
                "DOS""998",
                "REGL""E",
                "LIB"""
            }
        },
        {
            "record": {
                "DOS""998",
                "REGL""TMEN",
                "LIB"""
            }
        },
        {
            "record": {
                "DOS""998",
                "REGL""VIR",
                "LIB"""
            }
        },
        {
            "record": {
                "DOS""998",
                "REGL""VII",
                "LIB"""
            }
        },
        {
            "record": {
                "DOS""998",
                "REGL""SEPA",
                "LIB"""
            }
        }
    ],
    "infos"""
}

La réponse indique un NBRECORD différent de COUNT, donc c'est terminé

...

Exemple de demande de lecture de la table des articles pour une plage de code ean, trié par ean, en récupérant 3 champs, sans jointures et sans autres colonnes


{
"dhoq" : "gtrsart.dhoq",
"recordsql" : "ARTICLE",
"access_token" : "xxxxxx",
"parameters" : "",
"fields" : "DOS;REF;EAN",           
"where" : "Between_Ean",
"where_parameters" : "eanD=3000000000000;eanF=4000000000000",
"offset" : 0,
"count" : 5,
"orderby" :  "Par_CodeEAN",
"having" : " ",
"having_parameters" : " ",
"infos" : "<joindeactivate>$ALL<columndeactivate>$ALL" 
}

Réponse :

{
    "error"0,
    "txterr""",
    "tablename""ART",
    "nbrecord"5,
    "records": [
        {
            "record": {
                "DOS""998",
                "REF""FCR0011",
                "EAN""3210330000250"
            }
        },
        {
            "record": {
                "DOS""998",
                "REF""CPAQ0009",
                "EAN""3210330003821"
            }
        },
        {
            "record": {
                "DOS""998",
                "REF""FPN0104",
                "EAN""3210330017159"
            }
        },
        {
            "record": {
                "DOS""998",
                "REF""X0000018",
                "EAN""3210330017585"
            }
        },
        {
            "record": {
                "DOS""998",
                "REF""FPT0061",
                "EAN""3210330021356"
            }
        }
    ],
    "infos"""
}