Accueil Blog Mardi technique : Recherche universelle dans Acumatica

Mardi technique : Recherche universelle dans Acumatica

Doug Johnson | 26 avril 2020

Pour le mardi technique de cette semaine, je vais montrer comment configurer les capacités de recherche universelle disponibles dans Acumatica. La recherche universelle est lancée à partir de la barre de recherche en haut à gauche de tous les écrans Acumatica et fournit un accès rapide aux écrans, fichiers, wikis et objets indexés à l'intérieur d'Acumatica.

Environnement: 5.30.1138

Données: Données de démonstration SalesDemo du portail des partenaires

Mardi technique d'Acumatica

Aperçu du scénario

Problème d'entreprise

Il est essentiel de trouver des données dans votre système ERP. La rapidité avec laquelle vous pouvez trouver des informations est directement proportionnelle à l'utilité de votre implémentation ERP (Enterprise Resource Planning).

Acumatica fournit une barre de recherche universelle qui vous aide à naviguer directement vers les objets contenus dans le logiciel. Vous pouvez rechercher des titres d'écran, des fichiers, des wikis et des objets indexés dans Acumatica.

Recherche universelle dans Acumatica

L'écran ci-dessus montre l'article wiki (Aide > Guide d'interface > Recherche > Recherche dans Acumatica ERP), où vous pouvez apprendre les capacités de la fonction de recherche universelle.

Acumatica Universal Search met en balance le besoin de trouver des données avec la vitesse de traitement et la charge du serveur. En indexant sélectivement les objets de données, Universal Search minimise la charge de traitement sans affecter les résultats. Par exemple, l'indexation du champ pays d'un enregistrement de contact ne sera pas utile si tous vos clients sont situés aux États-Unis.

Le choix des éléments à indexer varie considérablement d'un client à l'autre. Pour un distributeur local de produits électroniques, des champs tels que le nom du client et l'inventaire sont plus importants que le code postal. Un distributeur traitant des articles sérialisés de grande valeur voudra indexer le champ du numéro de série.

Scénario de démonstration

En standard, Acumatica search peut trouver de nombreux objets métiers gérés dans la base de données. En fonction de vos besoins, vous pouvez étendre les capacités du moteur de recherche global pour inclure des champs tels que le code postal et le numéro de série.

Cet article explique comment modifier les objets commerciaux indexés dans Universal Search afin de répondre aux besoins de clients spécifiques.

Mise en œuvre d'Acumatica

Dans cet article, nous avons divisé le travail en deux tâches :

  1. Comprendre quels sont les champs indexés
  2. Comprendre comment modifier l'indexation par défaut

Étape 1 : Comprendre quels champs sont indexés

La recherche universelle inclut les champs sélectionnés. Si vous savez ce que vous cherchez, vous pouvez voir quels champs sont indexés.

  • Chaque objet dans Acumatica peut avoir un champ appelé NoteID. Le NoteID contient des informations sur les champs de l'objet qui sont indexés.
  • Dans NoteID, il existe un attribut spécial appelé PXSearchable qui contient des informations sur les champs pouvant faire l'objet d'une recherche.

Pour illustrer notre propos, examinons l'indexation de l'objet Contact. Pour ce faire, suivez les étapes suivantes ...

a) Créer un projet de personnalisation. Naviguez vers Système > Personnalisation > Gérer > Projets de personnalisation (SM.20.45.05) et créez un nouveau projet. J'ai créé un projet appelé UniversalSearch.

Recherche universelle dans Acumatica

b) Sélectionnez l'écran que vous souhaitez personnaliser. Double-cliquez sur le projet UniversalSearch pour l'ouvrir. Sélectionnez ensuite l'option "Personnaliser un écran existant". Sélectionnez l'écran : Organisation > Gestion des clients > Espace de travail > Gérer > Contacts (CR.30.20.00).

Recherche universelle dans Acumatica

c) Sélectionnez l'objet sur lequel vous souhaitez vous informer. Il existe de nombreux objets disponibles pour les écrans Acumatica. Si vous cliquez sur l'onglet "Add Data Fields" (Ajouter des champs de données), vous pouvez voir un champ appelé Data View (Vue des données) avec une liste déroulante. Cette liste déroulante contient tous les objets de données disponibles pour l'écran (c'est-à-dire le schéma de l'écran). La vue de données "Contact" est celle qui nous intéresse. Pour obtenir cet objet, cliquez sur l'onglet "Attributs", sélectionnez "Form : Contact" et cliquez sur "view source", comme illustré ci-dessous.

Recherche universelle dans Acumatica

d) Ouvrir le champ NoteID. Dans le code source, recherchez le champ NoteID et développez-le.

Recherche universelle dans Acumatica

Voici le texte du champ NoteID :

#region NoteID

public abstract class noteID : PX.Data.IBqlField { }

{ typeof(Contact.contactType), typeof(Contact.displayName) },

new Type { typeof(Contact.eMail), typeof(Contact.phone1), typeof(Contact.phone2), typeof(Contact.phone3), typeof(Contact.webSite) },

WhereConstraint = typeof(Where<Current, NotEqual, And<Current, NotEqual>>),

Line1Format = "{0}{1}{2}", Line1Fields = new Type { typeof(Contact.salutation), typeof(Contact.phone1), typeof(Contact.eMail) },

Line2Format = "{1}{2}{3}", Line2Fields = new Type { typeof(Contact.defAddressID), typeof(Address.displayName), typeof(Address.city), typeof(Address.state), typeof(Address.countryID) }

)]

[PXNote(

DescriptionField = typeof(Contact.displayName),

Selector = typeof(Search<Contact.contactID, Where<Contact.contactType, Equal, Or<Contact.contactType, Equal>>>),

ShowInReferenceSelector = true)]

public virtual Guid? NoteID { get; set; }

e) Interpréter les données. Le NoteID contient plusieurs informations relatives à l'indexation et à l'affichage des données. Il existe plusieurs paramètres :

  1. Catégorie (SearchCategory.CR). Cette catégorie décrit le domaine de la recherche universelle auquel appartient la recherche de contact - en l'occurrence, le module de gestion des clients. Si vous commencez votre recherche dans le module de gestion des clients et que vous sélectionnez la première option, ces résultats seront renvoyés. Si vous effectuez une recherche dans l'inventaire ou les commandes clients, l'objet Contact ne sera pas inclus. Si vous choisissez "Rechercher dans toutes les entités", tous les résultats seront inclus, quel que soit l'endroit où vous vous trouvez dans le système.
  2. Titre ("{0} {1}"). Ceci décrit comment le texte du titre est affiché pour les résultats.
  3. Texte du titre (nouveau type { typeof(Contact.contactType), typeof(Contact.displayName) }). Ce paramètre décrit les champs qui remplacent les {0} et {1} dans la description du titre. Dans ce cas, le type de contact et le nom d'affichage sont utilisés.
  4. Champs d'indexation (nouveau type { typeof(Contact.eMail), typeof(Contact.phone1), typeof(Contact.phone2), typeof(Contact.phone3), typeof(Contact.webSite) }). Ce sont les champs qui sont indexés pour la recherche. C'est le paramètre à utiliser si vous souhaitez ajouter ou supprimer des champs de la recherche universelle ! Dans ce cas, vous pouvez voir que l'adresse électronique, le téléphone 1, le téléphone 2, le téléphone 3 et le site web sont tous inclus dans les résultats de la recherche universelle. Le prénom et le nom de famille n'ont pas besoin d'être inclus car ce sont des champs clés pour la table et ils sont donc automatiquement indexés.
  5. Programming Stuff (WhereConstraint = typeof(Where<Current, NotEqual, And<Current, NotEqual>>)). Not important for our discussion here.
  6. Détail ligne 1 (Line1Format = "{0}{1}{2}"). Ceci décrit la ligne 1 des résultats de la recherche.
  7. Texte de la ligne de détail 1 (Line1Fields = new Type { typeof(Contact.salutation), typeof(Contact.phone1), typeof(Contact.eMail) }). Ces valeurs remplacent les paramètres dans le format de la ligne de détail 1.
  8. Détail ligne 2 (Line2Format = "{1}{2}{3}"). Ceci décrit la ligne 2 des résultats de la recherche.
  9. Texte de la ligne 2 détaillée (Line2Fields = new Type { typeof(Contact.defAddressID), typeof(Address.displayName), typeof(Address.city), typeof(Address.state), typeof(Address.countryID) }). Ces valeurs remplacent les paramètres dans le format de la ligne de détail 2.

Étape 2 : Inclure un objet supplémentaire dans la recherche universelle

Dans cet exemple, nous ajoutons le champ "position" à l'index afin de pouvoir effectuer une recherche basée sur la position. Pour commencer, recherchez "représentant en solutions" dans la recherche universelle. La recherche ne devrait donner aucun résultat.

a) Trouver le nom de l'élément de données. Naviguez jusqu'à l'écran où se trouve le champ que vous souhaitez indexer. Dans le cas présent, il s'agit de Organisation > Gestion des clients > Domaine de travail > Gérer > Contacts (CR.30.20.00). Cliquez ensuite sur Personnalisation en haut à droite et sélectionnez Inspecter l'élément. Déplacez le curseur en forme de point d'interrogation sur le champ que vous souhaitez indexer et cliquez dessus.

Recherche universelle dans Acumatica

Le résultat est ci-dessous.

Recherche universelle dans Acumatica

Comme vous pouvez le constater, le champ Position est situé dans la classe de données Contact ... ce qui signifie que nous pouvons l'ajouter à l'index existant que nous avons examiné dans la section précédente. Le nom du champ à indexer est Contact.Salutation.

b) Ajouter un élément de données à l'index. Après avoir déterminé l'objet (PX.Objects.CR.Contact) et le nom de notre champ (Contact.Salutation), nous pouvons modifier la classe d'accès aux données (DAC). Pour ce faire :

1. Ouvrez la personnalisation d'UniversalSearch, cliquez sur Accès aux données, sélectionnez le signe "+" pour ajouter une table de données existante. Dans la fenêtre contextuelle, sélectionnez le nom de la table "PX.Objects.CR.Contact".

Recherche universelle dans Acumatica

2. Cliquez sur Ajouter un champ -> Modifier les attributs du champ de base, puis sélectionnez le champ NoteID. Voir les captures d'écran ci-dessous.

Recherche universelle dans Acumatica
Recherche universelle dans Acumatica

3. Dans Personnaliser les attributs, sélectionnez "Remplacer l'original" et ajoutez le nouveau champ que vous souhaitez indexer à l'endroit approprié. Voir ci-dessous pour la modification du codage. Il est conseillé d'inclure le champ que vous indexez dans les résultats. Dans ce cas, le champ Position est déjà inclus à la ligne 1.

Recherche universelle dans Acumatica

4. Pour activer votre modification, publiez la personnalisation de UniversalSearch.

Étape 3 : Reconstruction de l'index des entités en texte intégral

Après avoir établi les nouveaux critères de recherche, Acumatica indexera automatiquement toutes les nouvelles valeurs ajoutées au champ Position dans l'enregistrement Contact. Pour indexer toutes les données existantes, nous devons reconstruire l'index plein texte de l'entité.

Pour ce faire, naviguez vers Système > Gestion > Gérer > Reconstruire l'index des entités plein texte et sélectionnez l'entité Contact ou simplement Traiter tout.

Recherche universelle dans Acumatica

Maintenant, répétez la recherche que vous avez faite auparavant ... et ... RÉSULTATS !

Recherche universelle dans Acumatica

Conclusion

Le moteur de recherche Acumatica est puissant, flexible et efficace. Comme nous l'avons démontré, vous pouvez ajouter et supprimer des champs du moteur d'indexation Universal Search en fonction des besoins des utilisateurs.

Le moteur de recherche universel facilite la recherche :

  • Écrans dans Acumatica
  • Fichiers basés sur le nom du fichier
  • Articles de wiki tels que les fichiers d'aide
  • Business Objects

Plus important encore, vous pouvez facilement naviguer vers les objets de gestion renvoyés par la recherche universelle. D'un seul clic, l'écran et l'enregistrement de données appropriés s'affichent pour l'action suivante.

ANNEXE : Permettre la recherche en texte intégral

Acumatica tire parti des capacités de la base de données pour effectuer des "recherches sémantiques". Une recherche sémantique est une recherche intelligente qui prend en compte le contexte de vos termes de recherche pour vous renvoyer les résultats les plus pertinents.

Par exemple, si vous tapez "écorce de peuplier jaune" dans la barre de recherche, un algorithme de recherche sémantique privilégiera un article décrivant les types d'écorce d'arbre plutôt qu'un article parlant de chiens.

La recherche sémantique est activée pour les installations standard de MySQL et de Microsoft SQL Server - à l'exception de Microsoft SQL Express. Pour activer ou désactiver la recherche sémantique sur Microsoft SQL Server, consultez cet article : http://sqlish.com/installing-full-text-search-on-sql-server/ ou http://stackoverflow.com/questions/12525106/sql-server-2012-install-or-add-full-text-search.

Les recherches contextuelles basées sur l'endroit où vous vous trouvez dans l'application Acumatica ne fonctionneront que si la recherche plein texte est activée. Par exemple, la recherche contextuelle ne fonctionnera que si la recherche plein texte est activée :

Recherche pour 'bartend' dans Accounts Receivable où la recherche plein texte N'EST PAS activée :

Recherche universelle dans Acumatica

Dans toutes les entités ...

Recherche universelle dans Acumatica

Comparez avec la recherche de "barman" dans les comptes clients où la recherche en texte intégral est activée :

Recherche universelle dans Acumatica

Notez que les résultats sont renvoyés dans le contexte de l'endroit où vous effectuez la recherche.

Auteur du blog

Vice-président de la gestion des produits chez Acumatica.

Recevez les mises à jour du blog dans votre boîte de réception.