Martes técnico: Búsqueda universal en Acumatica

Doug Johnson | 26 de abril de 2020

Para el martes técnico de esta semana, mostraré cómo configurar las capacidades de búsqueda universal disponibles dentro de Acumatica. La búsqueda universal se inicia desde la barra de búsqueda en la parte superior izquierda de todas las pantallas de Acumatica y proporciona acceso rápido a pantallas, archivos, wikis y objetos indexados dentro de Acumatica.

Medio ambiente: 5.30.1138

Datos: Datos de demostración de SalesDemo del portal de socios

Martes técnico de Acumatica

Escenario general

Problema empresarial

Encontrar datos dentro de su sistema ERP es fundamental. La velocidad a la que puede encontrar información es directamente proporcional a la utilidad de su implementación ERP (Enterprise Resource Planning).

Acumatica proporciona una barra de búsqueda universal que le ayuda a navegar directamente a los objetos contenidos en el software. Puede buscar títulos de pantalla, archivos, wikis y objetos indexados en Acumatica.

Búsqueda universal en Acumatica

La pantalla anterior muestra el artículo de la wiki (Ayuda > Guía de interfaz > Búsqueda > Búsqueda en Acumatica ERP), donde puede conocer las capacidades de la función de búsqueda universal.

Acumatica Universal Search equilibra la necesidad de encontrar datos con la velocidad de procesamiento y la carga del servidor. Mediante la indexación selectiva de objetos de datos, Universal Search minimiza la sobrecarga de procesamiento sin afectar a los resultados. Por ejemplo, indexar el campo de país en un registro de contacto no será útil si todos sus clientes se encuentran en Estados Unidos.

La decisión de qué indexar variará considerablemente según el cliente. Para un distribuidor local de electrónica, campos como el nombre del cliente y el inventario son más importantes que el código postal. Un distribuidor que trabaje con artículos en serie de gran valor querrá indexar el campo del número de serie.

Escenario de demostración

Por defecto, la búsqueda de Acumatica puede encontrar muchos objetos empresariales mantenidos en la base de datos. En función de sus necesidades, puede ampliar las capacidades del motor de búsqueda global para incluir campos como el código postal y el número de serie.

Este artículo describe cómo modificar qué objetos de negocio se indexan en Universal Search para que pueda atender las necesidades de clientes específicos.

Implantación de Acumatica

En este artículo, dividimos el trabajo en dos tareas:

  1. Comprender qué campos están indexados
  2. Cómo cambiar la indexación por defecto

Paso 1: Comprender qué campos se indexan

La búsqueda universal incluye campos seleccionados. Si sabe qué buscar, podrá ver qué campos están indexados.

  • Cada objeto en Acumatica puede tener un campo llamado NoteID. El NoteID contiene información sobre qué campos del objeto están indexados.
  • En NoteID hay un atributo especial llamado PXSearchable que contiene información sobre los campos en los que se pueden realizar búsquedas.

Para ilustrarlo, veamos la indexación en el objeto Contacto. Para ello, siga estos pasos ...

a) Crear un proyecto de personalización. Vaya a Sistema > Personalización > Gestionar > Proyectos de personalización (SM.20.45.05) y cree un nuevo proyecto. He creado un proyecto llamado UniversalSearch.

Búsqueda universal en Acumatica

b) Seleccione la pantalla que desea personalizar. Haga doble clic en el proyecto UniversalSearch para abrirlo. A continuación, seleccione la opción "Personalizar pantalla existente". Seleccione la pantalla: Organización > Gestión de clientes > Área de trabajo > Gestionar > Contactos (CR.30.20.00).

Búsqueda universal en Acumatica

c) Seleccione el objeto sobre el que desea obtener información. Hay muchos objetos disponibles para las pantallas de Acumatica. Si hace clic en la pestaña "Agregar campos de datos", verá un campo llamado Vista de datos con un cuadro desplegable. Este desplegable contiene todos los objetos de datos que están disponibles para la pantalla (también conocido como el esquema de la pantalla). La vista de datos 'Contacto' es la que nos interesa. Para obtener ese objeto, haga clic en la pestaña 'Atributos', seleccione ' Form: Contacto', y haga clic en 'ver fuente' como se ilustra a continuación.

Búsqueda universal en Acumatica

d) Abra el campo NoteID. Dentro del Código Fuente, busque el campo NoteID y expándalo.

Búsqueda universal en Acumatica

Este es el texto del campo NoteID:

#región 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) Interpretar los datos. El NoteID contiene varios datos relacionados con la indexación y visualización de los datos. Existen varios parámetros:

  1. Categoría (SearchCategory.CR). Describe el área de Universal Search a la que pertenece la búsqueda de contactos, en este caso el módulo de gestión de clientes. Si inicia la búsqueda en gestión de clientes y selecciona la primera opción, se obtendrán estos resultados. Si busca dentro de inventario o pedidos de venta, el objeto Contacto no se incluirá. Si usted "Busca en Todas las Entidades" entonces todos los resultados serán incluidos sin importar en que parte del sistema se encuentre.
  2. Título ("{0} {1}"). Describe cómo se muestra el texto del título para los resultados.
  3. Texto del título (new Type { typeof(Contact.contactType), typeof(Contact.displayName) }). Este parámetro describe los campos que sustituyen a {0} y {1} en la descripción del título. En este caso se utilizan el Tipo de contacto y el Nombre para mostrar.
  4. Campos Indexados (new Type { typeof(Contact.eMail), typeof(Contact.phone1), typeof(Contact.phone2), typeof(Contact.phone3), typeof(Contact.webSite) }). Estos son los campos que se indexan para la búsqueda. Este es el parámetro que debe utilizar si desea añadir o eliminar campos de la búsqueda universal. En este caso, puede ver que la dirección de correo electrónico, el teléfono 1, el teléfono 2, el teléfono 3 y el sitio web se incluyen en los resultados de la búsqueda universal. El nombre y los apellidos no necesitan incluirse porque son campos clave para la tabla y, por tanto, se indexan automáticamente.
  5. Programming Stuff (WhereConstraint = typeof(Where<Current, NotEqual, And<Current, NotEqual>>)). Not important for our discussion here.
  6. Detalle Línea 1 (Line1Format = "{0}{1}{2}"). Describe la línea 1 de los resultados de la búsqueda.
  7. Texto de la línea 1 de detalle (Line1Fields = new Type { typeof(Contact.salutation), typeof(Contact.phone1), typeof(Contact.eMail) }). Estos valores sustituyen a los parámetros del formato Línea 1 detallada.
  8. Detalle Línea 2 (Line2Format = "{1}{2}{3}"). Describe la línea 2 de los resultados de la búsqueda.
  9. Texto de la línea 2 de detalle (Line2Fields = new Type { typeof(Contact.defAddressID), typeof(Address.displayName), typeof(Address.city), typeof(Address.state), typeof(Address.countryID) }). Estos valores sustituyen a los parámetros en el formato Detalle Línea 2.

Paso 2: Incluir un objeto adicional en la búsqueda universal

En este ejemplo, añadimos el campo de posición al índice para poder buscar en función de la posición. Para empezar, busque "representante de soluciones" en Universal Search. La búsqueda no debería devolver ningún resultado.

a) Buscar el nombre del elemento de datos. Navegue hasta la pantalla donde reside el campo que desea indexar. En este caso es Organización > Gestión de clientes > Área de trabajo > Gestionar > Contactos (CR.30.20.00). A continuación, haga clic en Personalización en la parte superior derecha y seleccione Inspeccionar elemento. Mueva el cursor con el signo de interrogación sobre el campo que desea indexar y haga clic en él.

Búsqueda universal en Acumatica

El resultado es el siguiente.

Búsqueda universal en Acumatica

Como puede ver, el campo Posición se encuentra en la Clase de Datos de Contacto ... esto significa que podemos añadirlo al índice existente que revisamos en la sección anterior. El nombre del campo a indexar es Contact.Salutation.

b) Añadir elemento de datos al índice. Tras determinar el objeto (PX.Objects.CR.Contact) y nuestro nombre de campo (Contact.Salutation), podemos modificar la clase de acceso a datos (DAC). Para ello

1. Abra la personalización UniversalSearch, haga clic en Acceso a datos, seleccione el signo "+" para añadir una tabla de datos existente. 2. En el cuadro emergente, seleccione TableName "PX.Objects.CR.Contact".

Búsqueda universal en Acumatica

2. Haga clic en Add Field -> Change Attributes of Base Field, y seleccione el campo NoteID. Vea las capturas de pantalla a continuación.

Búsqueda universal en Acumatica
Búsqueda universal en Acumatica

3. En Personalizar atributos seleccione 'Reemplazar original' y añada el nuevo campo que desea indexar en la ubicación adecuada. Vea más abajo el cambio de codificación. Es una buena idea incluir el campo que está indexando en los resultados. En este caso el campo Posición ya está incluido en la línea 1.

Búsqueda universal en Acumatica

4. Para activar el cambio, publique la personalización de UniversalSearch.

Paso 3: Reconstruir el índice de entidades de texto completo

Después de establecer los nuevos criterios de búsqueda, Acumatica indexará automáticamente cualquier nuevo valor añadido al campo Posición en el registro de contacto. Para indexar todos los datos existentes, necesitamos reconstruir el índice de entidad de texto completo.

Para ello, vaya a Sistema > Gestión > Gestionar > Reconstruir Índice de Entidades de Texto Completo y seleccione la entidad Contacto o simplemente Procesar Todo.

Búsqueda universal en Acumatica

Ahora, repite la búsqueda que hiciste antes... y... ¡RESULTADOS!

Búsqueda universal en Acumatica

Conclusión

El motor de búsqueda de Acumatica es potente, flexible y eficaz. Como se ha demostrado, puede añadir y eliminar campos del motor de indexación Universal Search según lo requieran los usuarios.

El buscador universal facilita la búsqueda:

  • Pantallas en Acumatica
  • Archivos basados en el nombre del archivo
  • Artículos wiki como archivos de ayuda
  • Objetos empresariales

Y lo que es más importante, puede navegar fácilmente a los objetos de negocio devueltos por Universal Search. Con un solo clic se muestra la pantalla y el registro de datos adecuados para realizar la siguiente acción.

APÉNDICE: Activación de la búsqueda de texto completo

Acumatica aprovecha las capacidades de la base de datos para realizar "búsquedas semánticas". Una búsqueda semántica es una búsqueda inteligente que tiene en cuenta el contexto de sus términos de búsqueda para devolver los resultados más relevantes.

Por ejemplo, si escribe "corteza de álamo amarillo" en la barra de búsqueda, un algoritmo de búsqueda semántica favorecerá un artículo que describa tipos de corteza de árbol frente a otro que hable de perros.

La búsqueda semántica está habilitada para las instalaciones estándar de MySQL y Microsoft SQL Server - excepto para Microsoft SQL Express. Para activar o desactivar la búsqueda semántica en Microsoft SQL Server, consulte este artículo: http://sqlish.com/installing-full-text-search-on-sql-server/ o http://stackoverflow.com/questions/12525106/sql-server-2012-install-or-add-full-text-search.

Las búsquedas contextuales basadas en su ubicación en la aplicación Acumatica sólo funcionarán si la búsqueda de texto completo está activada. Por ejemplo:

Búsqueda de "camarero" en Cuentas por cobrar donde la búsqueda de texto completo NO ESTÁ habilitada:

Búsqueda universal en Acumatica

En todas las entidades ...

Búsqueda universal en Acumatica

Compárelo con la búsqueda de "camarero" en Cuentas por cobrar, donde la búsqueda de texto completo SÍ está habilitada:

Búsqueda universal en Acumatica

Tenga en cuenta que los resultados se muestran en el contexto de la búsqueda.

Autor del blog

Vicepresidente de Gestión de Productos en Acumatica.

Reciba las actualizaciones del blog en su bandeja de entrada.