SupportConnexion
Contactez-nous
Lire les FlowFields depuis MS Dynamics NAV 2013 ou version ultérieure

Lire les FlowFields depuis MS Dynamics NAV 2013 ou version ultérieure

March 25, 2016 · Michael Bock · Fonctionnalités

Lire les FlowFields ou champs calculés depuis MS Dynamics NAV devient plus simple

Nous sommes heureux d’annoncer que nous prenons désormais en charge la lecture des FlowFields ou champs calculés depuis MS Dynamics NAV 2013 ou version ultérieure (en réalité, NAV 2009, NAV 2013, NAV 2015 et NAV 2016 sont tous pris en charge).

Microsoft ayant mis fin à la prise en charge de l’interface C/Front (la dernière version compatible c/Front était NAV 2009), il est devenu plus difficile de récupérer les FlowFields depuis la base de données NAV. La méthode la plus performante consiste à créer une nouvelle vue qui joint l’index SIFT correspondant directement dans la base de données NAV. Oui, cela paraît compliqué, mais lisez la suite : il existe maintenant un moyen plus simple de lire les FlowFields tels que Balance pour un Customer ou Inventory pour un Item.

Créer une nouvelle vue qui joint l’index SIFT correspondant restera toujours la solution la plus performante, car la vue peut être adaptée pour vous fournir tous les champs nécessaires en une seule requête au serveur de base de données MS Dynamics NAV (SQL Server). Si vous avez les compétences pour le faire et que la maintenance d’une vue supplémentaire dans NAV lors des mises à niveau ne vous dérange pas, cela reste la meilleure option.

Récupérer les champs calculés avec RapidiOnline

Cependant, si vous souhaitez garder la base de données MS Dynamics NAV propre et gagner du temps, vous pouvez obtenir le même résultat directement dans la configuration RapidiOnline. Vous pouvez désormais utiliser notre fonction DBLookup pour récupérer ces sommes de FlowFields depuis MS Dynamics NAV. Il est même possible de définir les FlowFilters afin de calculer la somme sur un intervalle de dates précis, par exemple.

Dans les versions récentes de RapidiOnline, les formules et aussi les DBLookup sont évalués sur le RapidiConnector : cette nouvelle solution est donc plutôt performante, puisque toutes les requêtes sur la base SQL s’exécutent en local.

Voici quelques exemples d’utilisation de cette nouvelle fonctionnalité :

Obtenir Balance pour chaque Customer

##DBLookup('SOURCEDS','Detailed Cust_ Ledg_ Entry$VSIFT$4','Customer No_',"No_",'SUM$Amount')

Dans le DBLookup ci-dessus, nous supposons que vous lisez la table NAV Customer et que nous voulons Balance pour chaque Customer lu. Nous utilisons l’index SIFT nommé « Detailed Cust_ Ledg_ Entry$VSIFT$4 » et nous filtrons le champ « Customer No_ » avec la valeur de chaque Customer (la valeur de « No_ »). Nous récupérons la valeur du champ « SUM$Amount ». En pratique, l’instruction Select utilisée ressemble à ceci : SELECT SUM("SUM$Amount") FROM "Detailed Cust_ Ledg_ Entry$VSIFT$4" WHERE "Customer No_" = 'xxx' (xxx étant remplacé par chaque Customer No spécifique), mais vous l’indiquez simplement comme ci-dessus.

Obtenir Total Sales (LCY) de l’année 2012 pour chaque Customer

##DBLookup('SOURCEDS','Cust_ Ledger Entry$VSIFT$1','Customer No_',"No_",'Posting Date','##"Posting Date">=\'2012-01-01\' and "Posting Date"<=\'2012-12-31\'','SUM$Sales (LCY)')

Dans ce DBLookup, nous lisons également la table NAV Customer et nous voulons obtenir Total Sales (LCY) de l’année 2012 pour chaque Customer lu. Nous utilisons un autre index SIFT, cette fois nommé « Cust_ Ledger Entry$VSIFT$1 », et nous filtrons le champ « Customer No_ » avec la valeur de chaque Customer (la valeur de « No_ »). Nous devons en outre filtrer le champ « Posting Date », non pas sur une date précise mais sur un intervalle. Cela se fait avec notre filtre de formule spécial (le ## indique que le reste de la chaîne est défini comme filtre fixe). À l’intérieur de la chaîne de filtre, nous devons « échapper » l’apostrophe droite à l’aide du \ (barre oblique inverse) : notre interpréteur de formules supprime le \ mais conserve les ' (guillemets simples) nécessaires au bon fonctionnement de la clause WHERE en SQL. L’instruction SQL Select ressemble à ceci : SELECT SUM("SUM$Sales (LCY)") FROM "Cust_ Ledger Entry$VSIFT$1" WHERE "Customer No_" = 'xxx' AND "Posting Date">='2012-01-01' and "Posting Date"<='2012-12-31' (xxx étant remplacé par chaque Customer No spécifique).  

Obtenir Inventory pour chaque Item

##DBLookup('SOURCEDS','Item Ledger Entry$VSIFT$3','Item No_',"No_",'SUM$Quantity')

Dans ce dernier exemple, nous lisons la table NAV Item et nous voulons obtenir la valeur totale d’Inventory pour chaque Item lu. Nous utilisons l’index SIFT nommé « Item Ledger Entry$VSIFT$3 » et nous filtrons le champ « Item No_ » avec la valeur de chaque Item (la valeur du champ « No_ »). L’instruction SQL Select obtenue ressemble à ceci : SELECT SUM("SUM$Quantity") FROM "Item Ledger Entry$VSIFT$3" WHERE "Item No_" = 'xxx' (où xxx serait remplacé par chaque Item No spécifique). 

Quel index SIFT utiliser

L’index SIFT à utiliser pour calculer une somme donnée ne figure pas dans un endroit unique et peut varier d’une installation NAV à l’autre, selon la version de NAV et le niveau de personnalisation. Vous trouverez des indices dans NAV, dans l’Object Designer de la table concernée, puis en consultant les vues définies dans la base de données SQL de NAV elle-même (regardez sous les vues).

Pour utiliser cette nouvelle fonctionnalité, le service Rapidi central et le RapidiConnector doivent tous deux être en version 3.2.92v ou ultérieure. Veuillez contacter notre support pour organiser une mise à niveau si nécessaire.

Rencontrez notre Customer Success Team - réservez un créneau dès maintenant !

Voyez si cela convient à votre environnement

Dites-nous quels systèmes vous utilisez et nous vous dirons franchement si Rapidi est le bon outil.