Desarrollo en Dynamics AX 2012 Jose Antonio Estevan Krasis Press Scribd PDF
Desarrollo en Dynamics AX 2012 Jose Antonio Estevan Krasis Press Scribd PDF
Desarrollo en Dynamics AX 2012 Jose Antonio Estevan Krasis Press Scribd PDF
Dynamics AX 2012
Krasis Consulting, S. L.
www.Krasis.com
ISBN: 978-84-941112-4-2
CREATIVIDAD
La fruta posee una piel gruesa de color escarlata o dorada con tono carmes en el exterior y una gran
cantidad de semillas internas rodeadas de una jugosa pulpa de color rub. En oriente es considerada
como un smbolo del amor y de la fecundidad y sus virtudes han sido difundidas por poetas tan
conocidos como Garca Lorca.
Creamos los mejores cursos online en espaol para programadores
Tengo que agradecer a Jos Manuel Alarcn que creyera en el proyecto desde el principio, a
pesar de mi escasa disciplina. Por asumir el riesgo sin pensarlo demasiado y por el buen
trabajo que han hecho en Krasis Press para que esto salga adelante. Gracias tambin a Salina
Mar y Cristina de Microsoft Ibrica, por el prlogo y el apoyo mostrado hacia el proyecto.
Y gracias a ti, lector, permteme el tuteo. Porque si ests leyendo esto debo suponer que
has comprado el libro. Espero sinceramente que consigas aprender tanto como he aprendido
yo escribindolo, porque entonces todo el esfuerzo habr valido la pena.
Albert Einstein
iv
Contenido
AGRADECIMIENTOS ................................................................................................ iv
CONTENIDO ............................................................................................................... v
PRLOGO ................................................................................................................... xi
vi
Contenido vii
viii
Contenido ix
CAPTULO-9: INFORMES......................................................................................361
x
Prlogo
Ha sido una grata satisfaccin que Jos Antonio quisiera contar conmigo para
prologar su primer libro. Adems, el placer se ve aumentado si se percibe que la
publicacin va a ayudar a mejorar calidad de los profesionales expertos en
Soluciones de Gestin Empresarial en la comunidad hispano hablante, y por otra
parte a reconocer al grupo al que pertenece el autor. Una comunidad reconocida
por Microsoft por ser los profesionales ms valorados del sector, con un altsimo
conocimiento en su campo en este caso en Microsoft Dynamics AX, y que
aportan un gran valor a nuestro canal de distribucin.
Hoy en da y ms que nunca, la diferenciacin es la clave del xito
empresarial, y es la caracterstica comn de todas las compaas innovadoras y
competitivas. Cierto es que las soluciones ERP se han caracterizado
histricamente por ser monolticas y por su falta de flexibilidad. Todos los que
estamos alrededor de Microsoft Dynamics AX sabemos que ste trae un soplo de
aire fresco, ya que permite a las empresas modelar y automatizar procesos
empresariales (finanzas, comercial, logstica, produccin etc.) y planificar todos
los recursos de las compaas con la flexibilidad necesaria para incorporar esas
gotas de innovacin y diferenciacin.
Las necesidades de las empresas son cada vez mayores, y la inversin en
innovacin de los fabricantes tecnolgicos es cada vez ms alta. En el caso de
Microsoft Dynamics AX se generan dos actualizaciones cada seis meses, lo que
permite que la herramienta sea una de las ms competitivas del mercado,
adaptndola a las tendencias tecnolgicas. Por ejemplo, la ltima revisin del
producto ha incluido el soporte para desplegar la solucin en la nube.
La clave del xito no slo reside en la calidad del producto, sino tambin
en el servicio prestado por profesionales altamente cualificados, que sean capaces
xii Desarrollo en Microsoft Dynamics AX 2012
Salina Mar Aragn, Product Marketing Manager Microsoft Dynamics CRM&ERP en Microsoft.
1
CAPTULO
Introduccin
Este captulo contiene una descripcin de los objetivos del libro, a quin va
dirigido, lo que se puede esperar de l, y tambin algunos puntos que no se deben
esperar. Sirve tambin como introduccin a los captulos que vamos a encontrar
a continuacin y para preparar el entorno de pruebas en el que se desarrollan los
ejemplos, con algunas demostraciones.
13
14 Desarrollo en Microsoft Dynamics AX 2012
A pesar de que muchos de los temas tratados en el texto son novedades de Microsoft
Dynamics AX 2012, la mayora de los conceptos generales son vlidos para versiones
anteriores, aunque en la medida de lo posible se indicarn de manera especfica los
detalles que sean propios de esta versin en concreto.
http://www.microsoft.com/en-us/dynamics/resource-library.aspx
3.- CONTENIDO
El contenido del libro se divide en 10 captulos, cada uno dedicado a una parte importante
de la programacin en Microsoft Dynamics AX. Los captulos estn diseados para ser
ledos en ese orden, intentando que los conceptos se incluyan segn el orden en el que
se van necesitando, pero tambin pueden ser utilizados como gua de consulta de un tema
concreto. Cuando se nombra un concepto que todava no se ha introducido se incluye
una referencia al captulo relacionado.
Introduccin 15
Como durante el libro los primeros ejemplos se van a hacer esperar un poco, vamos a
adelantar la primera toma de contacto con el entorno, realizando unos pequeos ejemplos
que nos introducirn tanto al entorno como a las diferentes maneras de afrontar un
desarrollo en Microsoft Dynamics AX.
Para la realizacin de estos ejemplos y los que vendrn en los siguientes captulos se
utiliza el entorno publicado por Microsoft en forma de mquina virtual de demostracin
en los portales PartnerSource y CustomerSource. A estos portales se tiene acceso si
trabajamos para un partner certificado para Microsoft Dynamics, o si como clientes
tenemos una licencia de Microsoft Dynamics activa, respectivamente.
Esta mquina virtual contiene una instalacin totalmente funcional de todos los
componentes de la aplicacin, con datos de prueba, lista para trabajar. Se puede descargar
de los siguientes enlaces:
https://mbs.microsoft.com/partnersource/deployment/methodology/vpc/ax2
012demotoolsmaterials.htm
https://mbs.microsoft.com/customersource/downloads/servicepacks/ax2012
demotoolsmaterials.htm
https://lcs.dynamics.com
Como programador, s de primera mano que para aprender a programar, hay que
programar, y que el movimiento se demuestra andando. Ms adelante veremos por qu,
pero tengo que empezar diciendo que esto no es siempre as en Microsoft Dynamics AX.
Podemos realizar una gran cantidad de modificaciones sin necesidad de programar, pero
vamos a empezar con el tpico ejemplo para empezar a conocer el entorno.
Haremos el clsico hello-world y de esta manera probaremos que la instalacin de
Microsoft Dynamics AX 2012 de la que disponemos es vlida para realizar los ejemplos
que propondr en el resto del libro.
Figura 1.- Visin general del cliente de trabajo de Microsoft Dynamics AX 2012
Despus, navegar al nodo Jobs, y crear uno nuevo (botn derecho en Jobs >
Nuevo Job). Ver figura 3.
Quizs este ejemplo ha sido demasiado sencillo. Vamos a hacer un segundo ejemplo para
empezar a entender por qu en Microsoft Dynamics AX no es tan importante el cdigo
como en otros entornos o lenguajes. Para ello usaremos el entorno de desarrollo llamado
MorphX, que veremos en detalle en el Captulo 3 Herramientas de desarrollo.
En los primeros ejemplos se explicarn con detalle cada uno de los pasos, pero
conforme avancemos se obviarn los pasos descritos en ejemplos anteriores.
El objetivo de este ejemplo es la sencilla tarea de presentar un formulario al usuario
con la lista de clientes de la empresa actual. La tabla de clientes ya existe (obviamente)
en la aplicacin estndar, slo vamos a presentar algunos de sus campos en un formulario
que el usuario podr utilizar para consulta.
Clic derecho en Designs > Nuevo control > Grid. Ajustar las siguientes
propiedades en el Grid recin creado: Name: GridIdentification; Width:
Column width; Height: Column height; DataSource: CustTable;
DataGroup: Identification.
Tambin se ajustan las propiedades visuales del control para que se adapte
al tamao del formulario y hacerlo redimensionable. Se puede comprobar
arrastrando la esquina inferior-derecha del formulario para cambiar su
Introduccin 21
Esta es la manera en la que se desarrollan una gran parte de los cambios en MorphX.
Como se puede ver, mediante unos sencillos pasos (que an pueden ser ms sencillos,
como veremos ms adelante) hemos creado un formulario totalmente funcional sin
necesidad de introducir una sola lnea de cdigo. Comprobaremos que todo lo que se
pueda desarrollar sin programar nos va a suponer una ventaja a la hora de extenderlo,
mantenerlo e integrarlo con la funcionalidad actual, por lo que es aconsejable utilizar
cdigo slo cuando no haya ms remedio.
2
CAPTULO
Conociendo la aplicacin
Este captulo pretende dar una visin general de la arquitectura que forma una
solucin Microsoft Dynamics AX completa. Es importante comprender esta
arquitectura, ya que en buena medida condiciona la manera de pensar con la que
se afrontan los desarrollos que se van a ejecutar sobre ella. Tambin se hace un
repaso del proceso de instalacin de los componentes, su configuracin ms
importante, y la funcionalidad genrica de la aplicacin.
Es importante dejar claro que resultara imposible abarcar aqu todo el detalle de la
instalacin, configuracin y optimizacin de una solucin completa de Microsoft
Dynamics AX. Para ello, lo ideal es remitirse a la gua de instalacin oficial del producto
que se puede descargar de manera gratuita y se mantiene actualizada despus de cada
nueva revisin para reflejar los ltimos cambios.
http://www.microsoft.com/en-us/download/details.aspx?id=12687
Para que una instalacin de Microsoft Dynamics AX sea utilizable, como mnimo
habr que instalar un motor de bases de datos Microsoft SQL Server, un servicio AOS y
el cliente para Windows. sta ser la instalacin mnima que necesitaremos tambin para
desarrollar si incluimos las herramientas de desarrollo (otro cliente, como veremos ms
adelante).
En esta capa incluimos, tanto los componentes con los que los usuarios de Microsoft
Dynamics AX interactan durante su trabajo con la aplicacin, como los que utilizamos
los desarrolladores para la modificacin y ampliacin del sistema. El cliente principal es
el Cliente de Dynamics AX para Windows que usan los usuarios finales (es a lo que nos
referimos cuando hablamos simplemente de El cliente), pero no es el nico. Ver figuras
1 y 2.
Conociendo la aplicacin 25
Tambin podemos incluir en esta capa los dos puntos de acceso a las herramientas
de desarrollo para Microsoft Dynamics AX, ya que ambas se instalan en el lado del
cliente:
La capa de datos se limita bsicamente a una o varias instancias de Microsoft SQL Server.
Estos servidores albergarn la base de datos que contiene los datos de negocio de la
aplicacin, la base de datos que contiene los metadatos llamada Model Store (a partir de
la versin AX 2012 R2) y otra base de datos con la misma estructura que esta ltima
llamada Baseline, utilizada durante los cambios de versin o para comparar con
versiones anteriores. Tambin puede albergar las bases de datos necesarias para
Sharepoint y Reporting Services, as como las instancias de Analysis Services, etc.
Estas bases de datos pueden estar instaladas en el mismo servidor o en servidores
diferentes as como en cluster, tal como se diseara una instalacin de Microsoft SQL
Server cualquiera. Habitualmente, las bases de datos de Microsoft Dynamics AX
conviven con otras bases de datos en una misma instancia de Microsoft SQL Server, y
las destinadas al Reporting y Business Intelligence se instalan en servidores separados.
Aunque no hay ninguna limitacin y esto depender del escalado que se decida durante
la instalacin y posteriores optimizaciones.
28 Desarrollo en Microsoft Dynamics AX 2012
2.1.- Capas
Las unidades en las que podemos guardar y desplegar los desarrollos en Microsoft
Dynamics AX son lo que llamamos de manera genrica: Objetos. Un objeto puede ser
una tabla en la base de datos, un informe, un formulario, una clase, etc. pero tambin
existen objetos ms pequeos, como un ndice o un campo de una tabla.
Estos objetos son unidades irrompibles que se pueden crear, eliminar, importar y
exportar entre entornos, por lo que sern la unidad mnima de transporte de desarrollos
entre instalaciones; aunque existen herramientas para poder importar slo partes de estos
objetos de manera selectiva, como veremos. Por ejemplo, podemos importar slo un
mtodo de una clase, en lugar de la clase entera, o slo unos cuantos cambios de un
mtodo, una propiedad de un formulario, etc.
Existe una copia de cada capa que se llama igual que su capa principal, pero
terminado en P (de Parche). Estas copias se utilizan para desplegar los desarrollos y
ampliaciones que estn en pruebas, pendientes de validar, o que corrigen una
funcionalidad de manera temporal. Esto incluye los objetos que nos enva Microsoft para
corregir errores puntuales, que vendrn en la capa que consideren ms adecuada, desde
el ms pequeo hotfix, a los grandes Feature Pack o Cumulative Update.
Igual que Microsoft, tenemos que utilizar siempre la capa ms adecuada, que como
norma general ser la capa ms alta a la que tengamos acceso., En lneas generales ser
SLN/ISV si desarrollamos un producto certificado por Microsoft, VAR si trabajamos
para un partner proveedor del cliente final, CUS si trabajamos para un cliente final, y
USR queda libre y no debe utilizarse para desarrollar, sino que la utiliza el propio sistema
para guardar cambios menores que generan los propios usuarios. Estas normas se pueden
variar en entornos muy complejos, pero son un buen principio del que partir a la hora de
desarrollar nuestra metodologa.
2.2.- Modelos
Un modelo es una agrupacin de objetos en una capa. Los modelos se han aadido en
esta versin para facilitar el despliegue y la integracin de funcionalidades de varios
fabricantes y evitar problemas a los que, de forma histrica, nos estamos enfrentando
desde las versiones iniciales de Microsoft Dynamics AX.
Como veremos en el captulo 3 Herramientas de desarrollo, la inclusin de los
modelos en el sistema es un cambio interno muy importante respecto a las versiones
previas del producto que, si bien no soluciona todos los problemas, s mejora mucho el
procedimiento y permite metodologas ms avanzadas (cercanas a la integracin
continua, incluso).
Como hemos visto a lo largo de este captulo, para que una instalacin de Microsoft
Dynamics AX sea funcional es necesario instalar y configurar unos componentes
mnimos: Un cliente, un servicio AOS y una base de datos.
El programa de instalacin incluye una instalacin simplificada (slo para entornos
64 bits) llamada Instalacin en un solo equipo, aunque es preferible realizar una
instalacin manual, ya que permite mayor flexibilidad. Adems, es algo que se tendr
que realizar muchas veces durante el trabajo con Microsoft Dynamics AX y es bueno
dominar el proceso en cualquier situacin.
Lo que vamos a ver, es una versin muy simplificada del proceso de instalacin y
configuracin bsica, la parte de la instalacin y configuracin que es relevante para un
desarrollador. Se pueden encontrar todos los detalles en la Gua de instalacin oficial,
enlazada al principio de este captulo.
32 Desarrollo en Microsoft Dynamics AX 2012
3.1.- Instalacin
Ahora que estamos familiarizados con los componentes de Microsoft Dynamics AX,
vamos a realizar una instalacin personalizada para disponer de un entorno de pruebas
que nos servir durante el resto de captulos.
Bases de datos
Cliente
Conociendo la aplicacin 33
Herramientas para programadores (al marcar esta opcin se marcan todos los
componentes necesarios para el desarrollo). Esta parte no es necesaria para
una instalacin mnima, o de produccin, pero s para una instalacin de
desarrollo como es nuestro caso (ver Figura 5).
3.2.- Configuracin
Una vez instalados, es necesario configurar los componentes, bsicamente para indicar
a cada uno dnde estn instalados los otros. Tambin se pueden configurar diversos
parmetros que sern tiles para la optimizacin, aunque no vamos a verlos todos al
detalle.
Toda la configuracin de Microsoft Dynamics AX 2012 se encuentra en las
Herramientas administrativas del Panel de Control de Windows de cada servidor,
separado en dos utilidades, dependiendo de los componentes instalados en cada uno:
Desde esta utilidad podemos configurar todos los servicios AOS que haya instalados en
un servidor (es habitual que haya ms de uno, sobre todo en entornos de desarrollo o
preproduccin). Contiene diversos parmetros que deciden ciertos comportamientos del
servicio. Los que nos interesan, de momento, son los siguientes:
Database Connection
o Server name: Servidor Microsoft SQL Server donde estn las bases
de datos (incluida la Model Store a partir de AX 2012 R2).
El resto de opciones las dejaremos en sus valores por defecto de momento, iremos
viendo algunas de ellas durante el resto del libro, aunque estn ms dedicadas a la
administracin y optimizacin del rendimiento que al desarrollo propiamente dicho.
Developer
Lo que hemos visto en este punto se refiere a la configuracin necesaria para que el
cliente de Microsoft Dynamics AX 2012 para Windows se conecte a un servidor AOS.
Esta configuracin es obligatoria para empezar a trabajar, pero hay tambin una
configuracin que, como desarrolladores, es muy interesante, aunque no obligatoria. Me
refiero a mostrar informacin relevante en la barra de estado del cliente (ver Figura 7).
Ya hemos comentado varias veces que es comn tener diferentes entornos (para
desarrollo, para pruebas, el entorno real en produccin,), hemos hablado de conectar
a una u otra capa y de guardar nuestros desarrollos en un modelo. A nivel funcional,
como veremos, los datos que nos muestra el cliente estn asignados a una empresa, que
a su vez trabaja en una divisa (euros, dlares, etc.). Toda esta informacin puede ser
confusa, sobre todo si nuestros entornos no son iguales. Y no queremos entrar a un
entorno para hacer una prueba, y borrar por accidente datos de la aplicacin real. Para
esto es importante tener bien configurados los datos que nos muestra la barra de estado.
Esta configuracin se realiza para cada usuario, de manera que configurarla a nuestro
modo no va a afectar a cmo la ven los dems. Se encuentra en el cliente para Windows,
en Archivo > Herramientas > Opciones (o slo Herramientas > Opciones, en el entorno
de desarrollo), dentro de la pestaa Barra de estado.
Conociendo la aplicacin 39
Mostrar id. de usuario: Nos informa del usuario con el que estamos
trabajando. Es til si trabajamos con varios usuarios, por ejemplo, para hacer
pruebas de seguridad y permisos.
En este momento podemos diferenciar los componentes de ms alto nivel del cliente
Microsoft Dynamics AX 2012 que se muestran en el esquema de la figura 9.
La gran mayora de formularios del cliente para Windows siguen unos patrones de diseo
determinados por el tipo de formulario que representan. Es bueno conocerlos para
respetar estos patrones cuando realicemos modificaciones o cuando diseemos nuestros
42 Desarrollo en Microsoft Dynamics AX 2012
Las pginas Detalle son similares pero en vez de una lista de registros, muestran todos
los campos de un slo registro. En versiones anteriores, estos formularios se organizaban
en pestaas, el nuevo diseo en Microsoft Dynamics AX 2012 se organiza mediante reas
desplegables llamadas FastTabs. Estos controles actan como pestaas, con la diferencia
de que se pueden desplegar varios a la vez y de que pueden mostrar algunos elementos
de resumen mientras estn cerradas. Ver Figura 15.
Estas son las pginas con formato maestro-detalle que podemos encontrar de manera
habitual en la aplicacin. En la figura 16 se puede ver un formulario de pedido de ventas
en modo edicin, donde se aprecian los datos de la cabecera y las lneas.
46 Desarrollo en Microsoft Dynamics AX 2012
Figura 16.- Ejemplo de pgina de tipo Detalle con Transacciones. Pedidos de venta
Como novedad, podemos utilizar los nuevos FastTabs para plegar y desplegar las
reas de cabecera, lista de lneas y detalle de lneas, como se aprecia en la figura 17, sin
cambiar de formulario. Tambin podemos observar que se ha sustituido la botonera en
la parte derecha de versiones anteriores, por grupos de botones localizados a nivel de
lnea.
Figura 17.- Ejemplo de pgina de tipo Detalle con Transacciones. Lneas de pedido
Conociendo la aplicacin 47
Al modificar o disear nuevas pginas Detalle con Transacciones, hay que tener en
cuenta que a menudo son los formularios ms utilizados de la aplicacin. La mayora
de usuarios pasan gran parte de sus horas de trabajo utilizando formularios de este tipo
y por eso tanto su usabilidad como su rendimiento es crtico.
4.3.- Navegacin
Esta funcionalidad existe de manera nativa en todos los objetos estndar y existir en
todos los desarrollados siempre que stos se creen siguiendo las buenas prcticas de
desarrollo al respecto, haciendo saber al sistema las relaciones entre los datos y los
objetos implicados para representarlos, como veremos ms adelante.
http://msdn.microsoft.com/en-us/library/aa658028.aspx
Una aplicacin como Microsoft Dynamics AX est diseada para manejar una gran
cantidad de datos, por lo que disponer de diversas y potentes opciones para filtrar estos
datos es obligatorio. Las opciones de filtrado han sido notablemente mejoradas en
Microsoft Dynamics AX 2012.
La forma ms comnmente utilizada es emplear el men contextual de cualquier
campo, en cualquier formulario. Como se puede ver en la Figura 20, existen cuatro
opciones referentes al filtrado y dos ms referentes a la ordenacin, que se repiten a lo
largo de la aplicacin. Todas estas opciones se basan en el Query Framework que
veremos ms adelante.
50 Desarrollo en Microsoft Dynamics AX 2012
Aparte de estas conocidas opciones del men contextual, en las pginas de lista que
ya hemos visto hay un rea especfica para las opciones de filtrado (ver figura 21). Lo
ms evidente es una caja de texto donde escribir la cadena de bsqueda y un selector con
los campos de filtro recomendados para ese formulario, aunque se puede elegir cualquier
campo.
Tambin vemos una pequea botonera con cuatro opciones similares a las que ya
hemos comentado:
Filtrar por cuadrcula: activa el filtro por cuadrcula del formulario. Ver
figura 21.
Este filtro aade una nueva fila al grid del formulario, permitiendo escribir
una cadena de filtro en la partes superior de cada columna, y permitiendo
tambin que se puedan ver fcilmente los filtros activos.
Conociendo la aplicacin 51
Otra opcin es el men contextual de filtros que aparece al pulsar el texto en color
verde que describe el filtro activo en el formulario (ver Figura 23).
Todas las opciones que se incluyen en este men referentes a filtros, a ordenacin y
al guardado de filtros ya las hemos visto y su funcionamiento es el mismo, aunque este
punto de men puede ser ms accesible en algunos casos.
Al filtrar datos, tanto a nivel funcional como estamos viendo aqu, como a nivel de
programacin como veremos ms adelante, podemos utilizar una serie de comodines y
estructuras para realizar filtros complejos sobre los campos, similares a una especie de
SQL simplificado o incluso expresiones regulares sencillas.
Los comodines son los tpicos, a saber, asterisco (*) y signo de interrogacin (?) que
representan a cualquier texto, el primero, y a cualquier carcter (slo uno) el segundo.
De esta forma, para buscar todos los clientes que empiecen por A utilizaremos el texto
A*, ya que el texto A? slo devolvera los clientes que empiecen por A y slo tengan
dos caracteres.
Aparte de esto, podemos utilizar dos puntos normales seguidos (..) para representar
rangos. Estos rangos aplican a cualquier tipo de dato, desde nmeros, textos, hasta
cadenas y fechas. As, la cadena de texto A*..C* representa todos los clientes que
empiecen por A, B o C, la cadena 01/01/2013..31/01/2013 representa todos los das
del mes de enero de 2013 y la cadena 120..150 representa todos los nmeros entre 120
Conociendo la aplicacin 53
y 150, ambos inclusive. El rango puede estar abierto por alguno de sus lados, por ejemplo
para mostrar todos los registros desde principios de 2013 hasta hoy, usamos la cadena
01012013... El sistema es capaz de interpretar y convertir fechas sin utilizar las
barras inclinadas para representarlas, incluso es capaz de corregir algunas fechas
errneas. Por ejemplo, si en un campo de tipo fecha escribimos 300213 el sistema se dar
cuenta de que no existe el 30 de febrero y resolver la fecha 29 de febrero de 2013 como
el ltimo da del mes indicado.
Otra posibilidad es que queramos mostrar varios valores que no representen un rango
continuo, sino una lista de valores discretos o de otros rangos. Para eso usaremos varios
filtros separados por comas (,). Por ejemplo, para mostrar solamente los clientes C2 y
C4 usamos la cadena C2,C4 y para buscar los clientes que empiezan por X y los que
terminan en J usamos la cadena X*,*J.
Por ltimo, podemos utilizar el smbolo de exclamacin (!) para negar el resultado de
un rango, esto es, para mostrar los registros que no lo cumplen. Por ejemplo, para
obtener los artculos que no empiezan por A, usamos la cadena !A*.
Negacin: ! (exclamacin)