Accueil Blog (en) Mardi technique: Recherche universelle dans Acumatica

Mardi technique: Recherche universelle dans Acumatica

Doug Johnson | Avril 26, 2020

Pour le mardi technique de cette semaine, je vais montrer comment configurer les capacités de recherche universelles 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 dans Acumatica.

Environnement : 5.30.1138

Données : données de démonstration SalesDemo à partir du portail partenaire

Mardi technique d’Acumatica

Vue d’ensemble du scénario

Problème d’affaires

Il est essentiel de trouver des données à l’intérieur de votre système ERP. La vitesse à 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 (Help > Interface Guide > Search > Search in Acumatica ERP), où vous pouvez apprendre les capacités de la fonction de recherche universelle.

Acumatica Universal Search équilibre la nécessité de trouver des données avec la vitesse de traitement et la charge du serveur. En indexant sélectivement les objets de données, la recherche universelle minimise la surcharge de traitement sans affecter les résultats. Par exemple, l’indexation du champ pays sur un enregistrement de contact ne sera pas utile si tous vos clients se trouvent aux États-Unis.

La décision de ce qu’il faut indexer variera considérablement selon le client. Pour un distributeur d’électronique local, des champs comme le nom du client et l’inventaire sont plus importants que le code postal. Un distributeur traitant d’articles sérialisés coûteux voudra indexer le champ de numéro de série.

Scénario de démonstration

Hors de la boîte, la recherche Acumatica peut trouver de nombreux objets de gestion gérés dans la base de données. En fonction de vos besoins, vous pouvez étendre les capacités globales des moteurs de recherche pour inclure des champs tels que le code postal et le numéro de série.

Cet article explique comment modifier les objets de gestion indexés dans la recherche universelle afin que vous puissiez répondre aux besoins de clients spécifiques.

Mise en œuvre d’Acumatica

Dans cet article, nous divisons le travail en deux tâches:

  1. Comprendre quels champs sont 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 qu’il faut rechercher, vous pouvez voir quels champs sont indexés.

  • Chaque objet dans Acumatica peut avoir un champ appelé NoteID. 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’être.

Pour illustrer, regardons l’indexation dans l’objet Contact. Pour ce faire, suivez ces étapes ...

a) Créez un projet de personnalisation. Accédez à Personnalisation du système > > Gérer les 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. Ensuite, sélectionnez l’option pour « Personnaliser l’écran existant ». Sélectionnez l’écran : Organisation > gestion de la clientèle > domaine de travail > gérer les contacts > (CR.30.20.00).

Recherche universelle dans Acumatica

c) Sélectionnez l’objet que vous souhaitez découvrir. Il existe de nombreux objets disponibles pour les écrans Acumatica. Si vous cliquez sur l’onglet « Ajouter des champs de données », vous pouvez voir un champ appelé Vue de données avec une liste déroulante. Cette liste déroulante contient tous les objets de données disponibles à l’écran (alias le schéma d’écran). La vue de données « Contact » est celle qui nous intéresse. Pour obtenir cet objet, cliquez sur l’onglet « Attributs », sélectionnez « Formulaire: Contact », puis cliquez sur « Afficher la source » comme illustré ci-dessous.

Recherche universelle dans Acumatica

d) Ouvrez 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 éléments d’information liés à la façon dont les données sont indexées et affichées. Il existe plusieurs paramètres :

  1. Catégorie (SearchCategory.CR). Cela décrit la zone dans la recherche universelle à laquelle la recherche de contact appartient - le module de gestion client dans ce cas. Si vous commencez votre recherche dans la gestion de la clientèle et sélectionnez la première option, ces résultats seront renvoyés. Si vous effectuez une recherche dans l’inventaire ou les commandes client, l’objet Contact ne sera pas inclus. Si vous « Recherchez dans toutes les entités », tous les résultats sont inclus, peu importe où vous vous trouvez dans le système.
  2. Titre (« {0} {1} »). Cela 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 complet sont utilisés.
  4. Champs d’index (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 e-mail, 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 n’ont pas besoin d’être inclus car ce sont des champs clés pour la table et sont donc automatiquement indexés.
  5. Programming Stuff (WhereConstraint = typeof(Where<Current, NotEqual, And<Current, NotEqual>>)). Not important for our discussion here.
  6. Ligne de détail 1 (Line1Format = « {0}{1}{2} »). Ceci décrit la ligne 1 des résultats de la recherche.
  7. Détail Ligne 1 Texte (Line1Fields = nouveau Type { typeof(Contact.salutation), typeof(Contact.phone1), typeof(Contact.eMail) }). Ces valeurs remplacent les paramètres au format Ligne de détail 1.
  8. Ligne de détail 2 (Line2Format = « {1}{2}{3} »). Ceci décrit la ligne 2 des résultats de la recherche.
  9. Détail Ligne 2 Texte (Line2Fields = nouveau Type { typeof(Contact.defAddressID), typeof(Address.displayName), typeof(Address.city), typeof(Address.state), typeof(Address.countryID) }). Ces valeurs remplacent les paramètres au format Ligne de détail 2.

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

Dans cet exemple, nous ajoutons le champ de position à l’index afin de pouvoir effectuer une recherche en fonction de la position. Pour commencer, recherchez « représentant des solutions » dans Universal Search. La recherche ne doit pas renvoyer de résultats.

a) Rechercher le nom de l’élément de données. Accédez à l’écran où réside le champ que vous souhaitez indexer. Dans ce cas, il s’agit de l’organisation > de la gestion de la clientèle > de la zone de travail > gérer les contacts > (CR.30.20.00). Cliquez ensuite sur Personnalisation en haut à droite et sélectionnez Inspecter l’élément. Déplacez le curseur du 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 voir, le champ Position se trouve dans la classe de données de contact ... cela 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 notre nom de champ (Contact.Salutation), nous pouvons modifier la classe d’accès aux données (DAC). Pour ce faire :

1. Ouvrez la personnalisation UniversalSearch, cliquez sur Accès aux données, sélectionnez le signe « + » pour ajouter une table de données existante. Dans la zone contextuelle, sélectionnez TableName « 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’emplacement approprié. Voir ci-dessous pour le changement de codage. C’est une bonne idée 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 UniversalSearch.

Étape 3 : Reconstruire l’index des entités de recherche 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 de contact. Pour indexer toutes les données existantes, nous devons reconstruire l’index d’entité de texte intégral.

Pour ce faire, accédez à System > Management > Manage > Rebuild Full-Text Entity Index et sélectionnez l’entité Contact ou simplement Process All.

Recherche universelle dans Acumatica

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

Recherche universelle dans Acumatica

Conclusion

Le moteur de recherche Acumatica est puissant, flexible et efficace. Comme démontré, vous pouvez ajouter et supprimer des champs du moteur d’indexation de recherche universelle selon les besoins des utilisateurs.

Le moteur de recherche universel le rend facile à trouver:

  • Écrans dans Acumatica
  • Fichiers basés sur le nom de fichier
  • Articles wiki tels que fichiers d’aide
  • Objets de gestion

Plus important encore, vous pouvez facilement accéder aux objets de gestion renvoyés par la recherche universelle. En un clic, l’écran et l’enregistrement de données appropriés s’affichent pour prendre l’action suivante.

ANNEXE : Activation de 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 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 favorisera un article décrivant les types d’écorce d’arbre par rapport à un article qui parle de chiens.

La recherche sémantique est activée pour les installations standard de MySQL et 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 en texte intégral est activée. Par exemple:

Recherchez « bartend » dans Comptes clients où la recherche en texte intégral n’est PAS activée :

Recherche universelle dans Acumatica

Dans toutes les entités ...

Recherche universelle dans Acumatica

Comparez avec la recherche de « bartend » dans 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, Gestion des produits chez Acumatica.

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