Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Derechos de autor Copyright © 2012 Microsoft Corporation. Reservados todos los derechos.
Limitación de responsabilidad Este documento se proporciona "tal cual". Información y opiniones expresadas en este documento, incluida la URL
y otras referencias a sitios web de Internet, pueden cambiar sin previo aviso. Usted asume el riesgo de utilizarlo.
Algunos ejemplos representados en este documento se proporcionan solo como ilustración y son ficticios. No se pretende ni
debe inferirse ninguna asociación o conexión real.
Propiedad intelectual Este documento no le otorga ningún derecho legal a ninguna propiedad intelectual en ningún producto de Microsoft.
Puede copiar y utilizar este documento para sus fines internos de referencia.
Marcas registradas Microsoft, Dexterity, Microsoft Dynamics, Visual Basic, Visual Studio, Windows, Windows Server y Windows Vista son marcas comerciales
del grupo de empresas Microsoft.
Renuncia a la garantía Microsoft Corporation renuncia a cualquier garantía con respecto al código de muestra contenido en esta documentación,
incluidas las garantías de comerciabilidad e idoneidad para un propósito particular.
Acuerdo de licencia El uso de este producto está cubierto por un contrato de licencia proporcionado con el producto de software. Si tiene alguna pregunta, llame
al Departamento de asistencia al cliente de Microsoft Dynamics GP al 8004560025 (en EE. UU. o Canadá) o al
+17012816500.
Contenido
Introducción................................................. .................................................... .............................................2
Capítulo 13: Implementación del soporte de macros .................................. ....................75 Descripción general de la
compatibilidad con macros ............... .................................................... ..........................................75 Grabación de
yo ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CONTENIDO
Capítulo 18: Campos de ventana ............................................... .................................................... ........ 99 Acceder a los campos
de la ventana .................................. .................................................... ....................................99
Métodos de campo de ventana .................................................. .................................................... ...............99
Capítulo 20: Campos de la tabla........................................... .................................................... ............ 109 Acceder a los campos
de la tabla .................................. .................................................... ..........................................109
Métodos de campo de tabla.................................................. .................................................... ....................................109
IV ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
INTRODU
Machine Translated by Google
Introducción
Bienvenido a Visual Studio® Tools para Microsoft Dynamics® GP. Esta documentación explica cómo
integrar las aplicaciones que crea con Visual Studio en Microsoft Dynamics GP. Antes de comenzar a
crear una integración para Microsoft Dynamics GP, tómese un momento para revisar la información
que se presenta aquí.
La Guía del programador de Visual Studio Tools para Microsoft Dynamics GP está diseñada para
brindarle una comprensión profunda de cómo usar estas herramientas para crear una aplicación que
se integre con Microsoft Dynamics GP. Incluso si está familiarizado con el uso de Visual Studio para
desarrollar aplicaciones, le resultará útil examinar el material que se presenta aquí.
• La Parte 1, Primeros pasos, explica cómo instalar Visual Studio Tools para Microsoft
Dynamics GP y comience a crear una integración.
• La Parte 3, Referencia de recursos, proporciona información detallada sobre la interacción con los
distintos tipos de recursos en Microsoft Dynamics GP.
requisitos previos
Debe utilizar Microsoft Dynamics GP 2013. Dado que trabajará con Microsoft Dynamics GP, el
conocimiento del sistema de contabilidad será útil.
Consulte los recursos de documentación de Microsoft Dynamics GP para obtener más información
sobre el producto.
También querrá instalar el SDK para Microsoft Dynamics GP. El SDK está disponible en la carpeta
Herramientas en los medios de instalación de Microsoft Dynamics GP. Contiene información útil sobre
Microsoft Dynamics GP, como listas de procedimientos y funciones de uso común.
Para usar Visual Studio Tools para Microsoft Dynamics GP, se requiere Visual Studio 2010 o posterior.
No se pueden usar versiones anteriores de Visual Studio. Se supone que está familiarizado con la
programación en un lenguaje administrado como C#. Esta documentación usa C# y Visual Basic para
demostrar cómo crear integraciones.
Símbolos y convenciones
Para ayudarlo a usar esta documentación de manera más efectiva, hemos usado los siguientes símbolos
y convenciones dentro del texto para resaltar tipos específicos de información.
Símbolo Descripción
Las notas al margen resumen Las notas al margen llaman la atención sobre información crítica y
la información importante. lo dirigen a otras áreas de la documentación donde se explica un
tema.
Convención Descripción
Soporte de producto
Se puede acceder al soporte técnico para desarrolladores de Microsoft Dynamics GP en línea o por
teléfono. Vaya a www.microsoft.com/dynamics y haga clic en el vínculo CustomerSource o PartnerSource,
o llame al 8884777877 (en EE. UU. y Canadá) o al 7012810555.
PAS
PAR
PRI
1:
Machine Translated by Google
• El Capítulo 1, "Instalación del SDK", explica cómo instalar el SDK de Visual Studio Tools.
para Microsoft Dynamics GP.
• Procedimiento de instalación
• Registro de plantilla • Qué
se instaló • Actualización a
un Visual Studio más nuevo
Procedimiento de instalación
El instalador del SDK de Visual Studio Tools para Microsoft Dynamics GP requiere la instalación previa de
Visual Studio 2010 o posterior. Para probar integraciones, también querrá tener instalado Microsoft
Dynamics GP.
Si ha instalado una versión anterior del SDK de Visual Studio Tools, asegúrese de eliminarlo del sistema
antes de instalar la nueva versión.
Para instalar Visual Studio Tools para Microsoft Dynamics GP SDK, complete el siguiente procedimiento:
Característica Descripción
Plantillas de Visual Studio 2010 Las plantillas de C# y Visual Basic para proyectos y formularios.
Se requiere Visual Studio 2010 para instalar esta función.
Plantillas de Visual Studio 2012 Las plantillas de C# y Visual Basic para proyectos y formularios.
Se requiere Visual Studio 2012 para instalar esta característica.
Documentación La guía del programador de Visual Studio Tools para Microsoft
Dynamics GP.
5. Comience la instalación.
Haga clic en Instalar para comenzar a instalar los componentes del SDK.
Durante la instalación, Visual Studio debe reconfigurarse para reconocer las nuevas plantillas que se
están instalando. Este proceso puede tardar unos minutos en completarse.
6. Finalice la instalación.
Haga clic en Finalizar para completar la instalación.
Registro de plantilla
Si está ejecutando con privilegios de usuario limitados o con el Control de cuentas de usuario (UAC)
activo, es posible que las plantillas instaladas para Visual Studio Tools no estén registradas en Visual
Studio. Es posible que deba registrar manualmente las plantillas para que aparezcan como selecciones
cuando cree nuevos proyectos.
Utilice el siguiente comando para que Visual Studio 2010 vuelva a crear su caché de plantilla:
Si utiliza una versión de Windows de 64 bits, los archivos de Visual Studio se ubicarán en la carpeta
Archivos de programa (x86).
En los sistemas que se ejecutan con UAC (Control de cuentas de usuario), deberá configurar las
propiedades de la aplicación devenv.exe para que se ejecute con privilegios administrativos.
Los siguientes elementos están instalados para Visual Studio Tools para Microsoft Dynamics
Médico de cabecera en la ubicación que especificó:
Componente Descripción
VSTDGPReadme.rtf Contiene información de última hora sobre Visual
Studio Tools para Microsoft Dynamics GP.
Si elige instalarlos, las plantillas de proyecto para C# y Visual Basic estarán en las ubicaciones
adecuadas para Visual Studio.
3. Cierre el instalador.
Cuando el instalador haya terminado de actualizar los componentes, haga clic en Finalizar.
7. Finalice la instalación.
Haga clic en Finalizar para completar la instalación.
10 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
Visual Studio Tools para Microsoft Dynamics GP proporciona tres capacidades principales para
una aplicación de integración:
Arquitectura
Visual Studio Tools para Microsoft Dynamics GP consta de componentes de tiempo de ejecución
y componentes de desarrollo.
ESCUADRÓN DE PROGRAMADORES 11
Machine Translated by Google
PARTE 1 PRIMEROS PASOS
Ensambles de aplicación Cada diccionario al que accederá una integración de Visual Studio Tools para
Microsoft Dynamics GP tendrá un ensamblaje de aplicación. Cada ensamblado de aplicación
proporciona acceso a los recursos en su diccionario correspondiente. Por ejemplo, el ensamblado
Application.Dynamics.dll proporciona acceso a los recursos del diccionario Dynamics.dic.
Visual Studio Tools para Microsoft Dynamics GP incluye los ensamblados de aplicaciones para todos
los módulos que se envían con Microsoft Dynamics GP. Puede usar la herramienta Generador de
ensamblados de diccionarios (Dag.exe) para crear ensamblados de aplicaciones para otros diccionarios
de terceros para Microsoft Dynamics GP. Aprenderá más sobre esta herramienta en el Capítulo 6,
“Generador de ensamblados de diccionario”.
Carpeta AddIns Los ensamblados para las aplicaciones de integración creadas con Visual Studio Tools
para Microsoft Dynamics GP se colocan en esta carpeta. Cuando se inicia Microsoft Dynamics GP,
busca automáticamente en esta carpeta e intenta iniciar las aplicaciones de integración que encuentra
allí.
Componentes de desarrollo
Los siguientes componentes de desarrollo están instalados en la carpeta donde eligió instalar Visual
Studio Tools para Microsoft Dynamics GP:
Proyecto de Visual Basic Este es el proyecto de plantilla para un complemento basado en Visual Basic.
Proyecto de Visual C# Este es el proyecto de plantilla para un complemento basado en Visual C#.
Creando un proyecto
Utilice el siguiente procedimiento para crear un nuevo proyecto de Visual Studio para un complemento
de Microsoft Dynamics GP.
12 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 2 FUNDAMENTOS DE LA INTEGRACIÓN
Si las plantillas de Microsoft Dynamics GP no aparecen en la lista, es posible que deba registrarlas
manualmente. Consulte Registro de plantillas en la página 8 para obtener detalles sobre cómo hacerlo.
ESCUADRÓN DE PROGRAMADORES 13
Machine Translated by Google
14 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
Integración de C# Use el
siguiente procedimiento para actualizar una integración de Visual Studio Tools creada con C#.
Si no tiene como destino .NET Framework 4, verá numerosos errores de compilación cuando compile
su proyecto.
ESCUADRÓN DE PROGRAMADORES 15
Machine Translated by Google
PARTE 1 PRIMEROS PASOS
Agregue referencias a los ensamblados actualizados de Visual Studio Tools para reemplazar las
referencias rotas.
Microsoft.Dexterity.Shell.UI
Al valor actualizado:
Microsoft.Dexterity.Shell
Esto significa que el código usado para el formulario usa el espacio de nombres anterior, en lugar
del nuevo espacio de nombres Microsoft.Dexterity.Shell. Debe ver el código del formulario y
cambiar todas las referencias del espacio de nombres para eliminar la parte de la "IU". Esto será
requerido en varios lugares. Un ejemplo de código que se corregirá se muestra resaltado en la
siguiente ilustración.
Es posible que deba expandir algunas secciones ocultas del código para encontrar todas las referencias.
Después de realizar estos cambios en el código del formulario, guarde el archivo actualizado.
Cierre el diseñador de formularios si aún está abierto y luego vuelva a abrir el formulario. El
formulario ahora debería abrirse y tener la apariencia actualizada de Microsoft Dynamics GP.
8. Cree la solución.
Elija compilar la solución actualizada en Visual Studio. Puede encontrar errores de compilación si
su integración hace referencia a recursos en Microsoft Dynamics GP que se eliminaron, movieron
o cambiaron de nombre. Deberá solucionar estos problemas y reconstruir la integración.
ESCUADRÓN DE PROGRAMADORES 17
Machine Translated by Google
PARTE 1 PRIMEROS PASOS
Si no tiene como destino .NET Framework 4, verá numerosos errores de compilación cuando
compile su proyecto.
Agregue referencias a los ensamblados actualizados de Visual Studio Tools para reemplazar
las referencias rotas.
Microsoft.Dexterity.Shell.UI
Al valor actualizado:
Microsoft.Dexterity.Shell
18 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 3 ACTUALIZACIÓN DE UNA INTEGRACIÓN
de nombres Microsoft.Dexterity.Shell.
Después de realizar estos cambios en el código del formulario, guarde el archivo actualizado. Vuelva
a abrir el formulario. El formulario debe aparecer en el diseñador de formularios y tener la apariencia
actualizada de Microsoft Dynamics GP.
9. Cree la solución.
Elija compilar la solución actualizada en Visual Studio. Puede encontrar errores de compilación si su
integración hace referencia a recursos en Microsoft Dynamics GP que se eliminaron, movieron o
cambiaron de nombre. Deberá solucionar estos problemas y reconstruir la integración.
ESCUADRÓN DE PROGRAMADORES 19
Machine Translated by Google
PARTE 1 PRIMEROS PASOS
• Para un proyecto de C#, muestre las propiedades del proyecto. En el grupo Aplicación, establezca
el campo Marco de destino en .NET Framework 4. En el mensaje que se muestra, haga clic en
Sí para indicar que desea realizar el cambio.
• Para un proyecto de Visual Basic, muestre las propiedades del proyecto. En el grupo Compilar, haga
clic en Opciones avanzadas de compilación. Establezca el campo Marco de destino (todas las
configuraciones) en .NET Framework 4 y luego haga clic en Aceptar. En el mensaje que se
muestra, haga clic en Sí para indicar que desea realizar el cambio.
Si no tiene como destino .NET Framework 4, verá numerosos errores de compilación cuando compile
su proyecto.
20 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 3 ACTUALIZACIÓN DE UNA INTEGRACIÓN
6. Cree la solución.
Elija compilar la solución actualizada en Visual Studio. Puede encontrar errores de compilación
si su integración hace referencia a recursos en Microsoft Dynamics GP que se eliminaron,
movieron o cambiaron de nombre. Deberá solucionar estos problemas y reconstruir la
integración.
ESCUADRÓN DE PROGRAMADORES 21
Machine Translated by Google
22 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
DE
PA
IN
2:
Machine Translated by Google
• El Capítulo 4, “WinForms”, describe cómo crear WinForms que tengan la apariencia de ventanas en
Microsoft Dynamics GP.
• El Capítulo 5, "Referencia de control", proporciona detalles de los diversos controles que son modificados
por Visual Studio Tools para Microsoft Dynamics GP.
• El Capítulo 7, “Acceso a los recursos del diccionario”, explica cómo acceder a los recursos de los
diccionarios desde su aplicación de integración.
• El Capítulo 8, “Eventos”, describe cómo registrarse y responder a eventos para Microsoft Dynamics GP.
• El Capítulo 11, "Depuración", explica cómo depurar una integración creada con
Herramientas de Visual Studio para Microsoft Dynamics GP.
• El Capítulo 12, “Formularios modificados y alternativos”, describe cómo acceder a los recursos en
formularios modificados y alternativos en Microsoft Dynamics GP.
• El Capítulo 13, "Implementación de compatibilidad con macros", explica cómo hacer que los formularios
creados con Visual Studio Tools sean accesibles por el sistema de macros en Microsoft Dynamics
GP.
• El Capítulo 14, "Uso de búsquedas", describe cómo usar las búsquedas existentes de Microsoft
Dynamics GP en su integración con Visual Studio Tools.
24 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
Capítulo 4: WinForms
Los WinForms estándar son la base de la interfaz de usuario para los complementos creados con Visual Studio Tools
para Microsoft Dynamics GP. Estos WinForms y los controles colocados en ellos se modifican especialmente para
que coincidan con la apariencia de Microsoft Dynamics GP. La información sobre WinForms se divide en las siguientes
secciones:
Elija un formulario de
Microsoft Dynamics GP.
Asigne al formulario un nombre que sea apropiado para la forma en que se utilizará.
ESCUADRÓN DE PROGRAMADORES 25
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
Propiedades de WinForm
Los WinForms que se agregan a un proyecto de Visual Studio Tools para Microsoft Dynamics
GP tienen varias propiedades adicionales que controlan su apariencia. Establecer estas
propiedades correctamente ayuda a que coincida con la apariencia de Microsoft Dynamics GP.
Estas propiedades son:
• AutoSetDexColors • Área
de control • Área de
estado
AutoSetDexColors La propiedad
AutoSetDexColors controla si los colores utilizados para WinForm coincidirán automáticamente
con el esquema de color seleccionado en las preferencias del usuario dentro de Microsoft
Dynamics GP. Establezca esta propiedad en True para que coincida con la apariencia de
Microsoft Dynamics GP.
ControlArea La
propiedad ControlArea especifica si la banda llamada área de control se dibuja en la parte
superior de WinForm. En las ventanas estándar de Microsoft Dynamics GP, los controles como
los botones Guardar, Borrar y Eliminar se colocan en el área de control. Establezca esta
propiedad en True para mostrar el área de control de un WinForm.
StatusArea La
propiedad StatusArea especifica si la banda denominada área de estado se dibuja en la parte
inferior de WinForm. Se dibuja una línea divisoria en la parte inferior de WinForm para indicar el
área de estado. En las ventanas estándar de Microsoft Dynamics GP, los controles como los
botones de exploración, los botones de notas y los botones de ayuda se colocan en el área de
estado. Establezca esta propiedad en True para mostrar el área de estado de un WinForm.
26 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 4 WINFORMS
Agregar controles
Puede agregar controles a los formularios para su integración de Microsoft Dynamics GP de la misma
manera que los agrega a los formularios estándar de Windows. Simplemente seleccione el control
en la caja de herramientas y arrástrelo al formulario.
Cuando agregue los controles, habrá propiedades adicionales disponibles para que algunos de ellos
coincidan con la apariencia de Microsoft Dynamics GP. Por ejemplo, los botones pulsadores tendrán
propiedades adicionales. Consulte el Capítulo 5, "Referencia de control", para obtener más
información acerca de los controles individuales.
ESCUADRÓN DE PROGRAMADORES 27
Machine Translated by Google
28 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
• Botones •
Cuadros de texto
• Etiquetas •
Cuadros combinados
• Cuadros de lista
Botones
Los controles de botón se usan para cada uno de los tipos de botón en un formulario de Microsoft
Dynamics GP. Los controles de botón en un WinForm para un proyecto de Microsoft Dynamics GP
obtienen sus características adicionales del dexButtonProvider que ve en el diseño de WinForm. La
propiedad ButtonType es una propiedad adicional disponible para cada botón. Especifica cómo se
muestra el control de botón y qué características tendrá. Puede establecer la propiedad
AutoSetDexColors en True para que los colores de los botones coincidan con los colores en Microsoft
Dynamics GP.
Estándar Los
botones estándar no modifican su apariencia cuando se colocan en un WinForm para un proyecto
de Dynamics GP. La siguiente ilustración muestra un botón estándar.
Los botones
de la barra de herramientas con el Tipo de botón establecido en Barra de herramientas normalmente
se colocan en el área de control de un formulario de Microsoft Dynamics GP. Estos botones tienen
una apariencia plana, con un color especial resaltado cuando se coloca el puntero sobre ellos.
También es común que estos botones tengan imágenes. La siguiente ilustración muestra un botón
de la barra de herramientas.
normalmente se coloca en el
área de control.
ESCUADRÓN DE PROGRAMADORES 29
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
StatusArea Los
botones ubicados en el área de estado en la parte inferior de una ventana deben tener el tipo
StatusArea. Estos botones deben mostrar solo gráficos y tendrán un borde 3D especial dibujado
alrededor de ellos cuando el puntero se coloque sobre ellos. Estos botones deben tener
establecida la propiedad Información sobre herramientas para que muestren una descripción de
la acción que realiza el botón. En la siguiente ilustración se muestra un botón de área de estado.
Muestra una información sobre herramientas que describe el propósito del botón.
Los
botones de campo que muestran solo imágenes y se colocan junto a otros controles en el
formulario deben tener la propiedad ButtonType establecida en Field. Estos botones se utilizan
para cosas como búsquedas o expansiones. Varios botones con este tipo se muestran junto a
un control de texto en la siguiente ilustración.
Campo_Editar.png Se utiliza para los botones de edición en el área de la ventana situada junto a
los campos.
Campo_MapaPunto.png Se utiliza para los botones de MapPoint en el área de la ventana situada junto
a los campos.
30 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 5 REFERENCIA DE CONTROL
Field_NotePresent.png Se utiliza para los botones de nota en el área de la ventana situada junto a
los campos.
Barra de herramientas_Redisplay.png Se usa para el botón Volver a mostrar ubicado en el área de control de
la ventana.
Cajas de texto
Los controles TextBox se utilizan para los controles de cadena, entero, moneda, fecha y hora en un
formulario de Microsoft Dynamics GP. Los cuadros de texto tienen la propiedad AutoSetDexColors que
se puede establecer en True para que los colores de control coincidan con los colores de Microsoft
Dynamics GP.
ESCUADRÓN DE PROGRAMADORES 31
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
A diferencia de los controles estándar en Microsoft Dynamics GP, los controles de cuadro de texto no tienen compatibilidad
integrada para formatear datos como valores de moneda. Deberá agregar código adicional a su integración para que
coincida con el comportamiento de los controles en Microsoft Dynamics GP. Por ejemplo, el siguiente código C# establece
el valor del cuadro de texto en la ilustración anterior. Utiliza el método Format para que el objeto String dé formato al valor
de la moneda.
Etiquetas
Los controles de etiquetas se utilizan para las etiquetas de texto que aparecen junto a los controles en el formulario de
Microsoft Dynamics GP. Corresponden a los elementos de texto estático que aparecen en las ventanas estándar de
Microsoft Dynamics GP.
Un control de etiqueta
muestra la etiqueta de texto
que aparece junto a otro control.
Los controles de etiqueta tienen la propiedad LinkField que debe establecerse cuando se etiqueta un campo específico.
Esta propiedad se establece en el nombre del control al que se aplica la etiqueta. Cuando se especifica en las Preferencias
del usuario de Microsoft Dynamics GP, la etiqueta se dibujará con el subrayado único que es estándar para las solicitudes.
Para que la etiqueta subrayada se dibuje correctamente, asegúrese de que la propiedad AutoSize de la etiqueta esté
establecida en False.
ComboBoxes
Use el control ComboBox en los casos en que usaría una lista desplegable o un cuadro combinado en Microsoft Dynamics
GP. Los controles ComboBox tienen la propiedad AutoSetDexColors que se puede establecer en True para que los colores
del control coincidan con los colores en Microsoft Dynamics GP.
La siguiente ilustración muestra un control ComboBox que se usa como una lista desplegable en un formulario de Microsoft
Dynamics GP.
cuadros de lista
Use el control ListBox en los casos en que usaría un cuadro de lista o un cuadro de lista de selección múltiple en Microsoft
Dynamics GP.
32 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
Se incluyen varios ensamblajes de aplicaciones con Visual Studio Tools para Microsoft Dynamics GP. Estos
son los ensamblados para la aplicación principal (Dynamics.dic) y las demás aplicaciones que se entregan
con Microsoft Dynamics GP.
Cuando desarrolle integraciones que utilicen recursos de estos diccionarios, utilice siempre los ensamblados
de aplicaciones que se incluyen con la instalación de Visual Studio Tools. Estos ensamblajes están firmados
digitalmente, lo que indica que fueron producidos por Microsoft. No genere sus propias versiones de
ensamblajes de aplicaciones para diccionarios enviados con el producto Microsoft Dynamics GP.
• Existe un diccionario de formularios para un producto y desea que su integración de Microsoft Dynamics
GP acceda a los recursos modificados en el diccionario de formularios.
• Ha instalado un diccionario de terceros para el que no existe ningún ensamblado de aplicación y desea
acceder a los recursos de este diccionario desde su integración de Microsoft Dynamics GP. El
diccionario de terceros podría contener nuevos formularios y otros recursos. Podría contener formas
alternativas del diccionario Dynamics.dic.
Archivos de salida
Application.ProductName.dll
Application.ProductName.ModifiedForms.dll
ProductName se deriva automáticamente del nombre del producto en el archivo de inicio. Se eliminan los
espacios o caracteres especiales del nombre del producto.
ESCUADRÓN DE PROGRAMADORES 33
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
Por ejemplo, el ensamblado de la aplicación que proporciona acceso a los recursos del diccionario de la
aplicación SRVCADV.dic se denomina Application.FieldService.dll. El ensamblado de la aplicación que
proporciona acceso a los recursos del diccionario de formularios (FRMS949.dic) se denomina
Application.FieldService.ModifiedForms.dll.
La información del
archivo XML del
ensamblado de la aplicación
se muestra en IntelliSense.
Si está utilizando una versión de Windows de 64 bits, los archivos se ubicarán en la carpeta Archivos de
programa (x86).
Dictionary Assembly Generator es una herramienta de línea de comandos y debe ejecutarse desde un
símbolo del sistema. Abra un símbolo del sistema y establezca la ubicación actual en la carpeta donde se
encuentra DAG.exe.
Para ver la sintaxis del comando, use el siguiente comando en el símbolo del sistema:
día.exe /?
El Generador de ensamblados de diccionarios utiliza el ID del producto para identificar el diccionario para
el que desea crear el ensamblado de la aplicación. Busque en el archivo de inicio (normalmente
Dynamics.set) una lista de los productos instalados.
34 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 6 GENERADOR DE MONTAJE DE DICCIONARIO
Dado que está ejecutando DAG.exe desde una ubicación diferente a donde está instalado Microsoft
Dynamics GP, deberá proporcionar la ruta completa al archivo de inicio.
El Generador de ensamblados de diccionarios debe poder escribir en la ubicación desde la que se ejecuta.
Esto significa que el usuario que ejecuta DAG.exe debe ser parte del grupo Administradores o del grupo
Usuarios avanzados. En un sistema que se ejecuta con Control de cuentas de usuario (UAC), significa
iniciar DAG.exe con privilegios administrativos.
• Aplicación.SampleIntegratingApp.dll •
Aplicación.SampleIntegratingApp.xml
Para generar un ensamblado para un diccionario de formularios, use el parámetro /F. Por ejemplo, el
siguiente comando genera el ensamblado de la aplicación para el diccionario de formularios del producto
Field Service (con ID de diccionario 949).
• Aplicación.FieldService.ModifiedForms.dll •
Aplicación.FieldService.ModifiedForms.xml
Consulte Formularios modificados en la página 71 para obtener detalles sobre cómo crear un ensamblado de aplicación
para el diccionario de formularios (Forms.dic) utilizado por Microsoft Dynamics GP.
Después de crear y usar un archivo de clave de nombre seguro, guárdelo en un lugar seguro. Tendrá que
usarlo cada vez que compile o reconstruya ensamblajes de aplicaciones.
ESCUADRÓN DE PROGRAMADORES 35
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
Por ejemplo, el siguiente comando creará un ensamblado de aplicación para la aplicación de integración de
muestra, pero usará el nombre "Desarrollar" en lugar del nombre del producto en el archivo de inicio.
Anulación del nombre del diccionario principal al que se hace referencia Al generar
ensamblados de aplicaciones para diccionarios que se integran con Microsoft Dynamics GP,
el Generador de ensamblados de diccionarios debe poder hacer referencia al ensamblado
de aplicaciones para el diccionario principal (normalmente Application.Dynamics.dll). Si al
ensamblado de la aplicación para el diccionario principal se le ha dado un nombre diferente,
puede usar el parámetro /NM para especificar el nuevo nombre para que se pueda encontrar
el ensamblado de la aplicación.
Producir un ensamblado de aplicación para diccionarios grandes es un proceso que consume muchos
recursos. El Generador de ensamblados de diccionario utilizará una gran cantidad de memoria (a menudo
más de 1 gigabyte) y un tiempo de procesador considerable al producir un ensamblado de aplicaciones.
Para optimizar el proceso, haga lo siguiente:
• Utilice el mejor hardware que tenga disponible para generar el ensamblaje de la aplicación.
• Desactive temporalmente las tareas de procesamiento en segundo plano, como el análisis de virus.
36 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
• Adición de referencias
• Espacio de
nombres • Clase de
diccionario • Acceso a recursos
adicionales • Variables para recursos de diccionario
Agregar referencias
Para acceder a los recursos de un diccionario específico, un proyecto debe contener una referencia
al ensamblado de la aplicación para ese diccionario. Cuando crea un nuevo proyecto de Visual
Studio Tools para Microsoft Dynamics GP, automáticamente contendrá una referencia al ensamblado
de la aplicación Application.Dynamics.dll. Esto proporciona acceso a los recursos del diccionario
Dynamics.dic. Para acceder a recursos en otros diccionarios, agregue referencias a los ensamblados
de aplicación para ellos.
Por ejemplo, para acceder a los recursos de la aplicación "Aplicación de integración de muestra"
instalada con Microsoft Dynamics GP, el proyecto debe contener una referencia al ensamblado de
la aplicación Application.SampleIntegratingApp.dll. La siguiente ilustración muestra esta referencia
para un proyecto de C#.
Esta referencia
proporciona acceso a los
recursos del
diccionario correspondiente.
ESCUADRÓN DE PROGRAMADORES 37
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
espacio de nombres
Microsoft.Dexterity.Aplicaciones
Para facilitar el acceso a los recursos, este espacio de nombres se incluye en la plantilla del
proyecto de C# con la declaración de uso . En la plantilla de proyecto de Visual Basic, se incluye
mediante la instrucción Imports . Hacer referencia al espacio de nombres le evita tener que
calificar completamente las referencias a los recursos del diccionario.
Clase de diccionario
Se accede a los recursos de un diccionario a través de una sola clase que está disponible después
de agregar la referencia al ensamblado de la aplicación del diccionario. La clase tiene el mismo
nombre que aparece en el ensamblado de la aplicación. Por ejemplo, la clase para acceder a los
recursos del diccionario de Dynamics se llama Dynamics. De manera similar, la clase utilizada
para acceder a los recursos de la aplicación de integración de ejemplo se denomina
SampleIntegratingApp. Este es el mismo nombre que aparece en el ensamblado de la aplicación,
Application.SampleIntegratingApp.dll.
Se accede a los cinco tipos de recursos primarios en un diccionario a través de las propiedades
de la clase. Estos tipos de recursos son:
• Formularios
• Globales •
Procedimientos •
Funciones •
Tablas
Para acceder a un recurso de un tipo específico, comience escribiendo el nombre de la clase del
diccionario y luego la propiedad del tipo de recurso. IntelliSense en Visual Studio presentará una
lista del tipo específico de recursos disponibles en el diccionario. Por ejemplo, la siguiente
ilustración muestra los recursos de formularios en la aplicación principal de Dynamics.
Cuando haya seleccionado un recurso del tipo específico, verá una lista de las propiedades,
métodos y eventos disponibles para ese recurso. La siguiente ilustración muestra algunas de las
propiedades, métodos y eventos del formulario AboutBox en el diccionario de Dynamics.
38 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 7 ACCESO A LOS RECURSOS DEL DICCIONARIO
• Ventanas •
Comandos •
Procedimientos a nivel de
formulario • Funciones a nivel
de formulario • Búferes de tabla a nivel de formulario
Como ejemplo, la siguiente declaración de C# abre la ventana Mantenimiento del cliente. Observe cómo
se accede a la ventana a través del objeto de formulario.
Dynamics.Forms.RmCustomerMaintenance.RmCustomerMaintenance.Open();
• Campos •
Ventanas de desplazamiento
Por ejemplo, la siguiente declaración de C# establece el valor del campo Comentario 1 en la ventana
Mantenimiento de proveedores.
Dynamics.Forms.PmVendorMaintenance.PmVendorMaintenance.Comment1.Value
= "Un vendedor preferido";
Aprenderá más sobre los detalles sobre el uso de cada tipo de recurso en la Parte 3, Referencia de
recursos.
Microsoft.Dexterity.Applications.DynamicsDictionary
Para hacer referencia a recursos para la aplicación de integración de muestra, usaría este espacio de
nombres:
Microsoft.Dexterity.Applications.SampleIntegratingAppDictionary;
Después de crear la variable, puede asignar su valor y luego usarlo en su código. Por ejemplo, el siguiente
código C# crea una variable para el formulario Mantenimiento de proveedores en Microsoft Dynamics GP.
Asigna el formulario a la variable y luego lo usa para abrir el formulario.
PmVendorMaintenanceForm VendorMaintenanceForm;
VendorMaintenanceForm = Dynamics.Forms.PmVendorMaintenance;
ProveedorMantenimientoForm.Open();
ESCUADRÓN DE PROGRAMADORES 39
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
// Acceder a los campos de la ventana requiere menos código cuando se usa la variable
CustMaintWindow.Comment1.Value = "Comentario 1";
Dynamics.Forms.RmCustomerMaintenance.RmCustomerMaintenance.Comment2.Value =
"Comentario 2";
40 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
Capítulo 8: Eventos
Las aplicaciones que se integran con Microsoft Dynamics GP a menudo necesitan recibir notificaciones
cuando ocurren eventos específicos en el sistema. Esta parte de la documentación describe cómo
registrarse para recibir notificaciones cuando ocurran eventos en el sistema. También describe cómo
escribir controladores de eventos que puedan responder a los eventos. La información se divide en las
siguientes secciones:
• Registro de eventos •
Respuesta a eventos •
Cancelación del registro de eventos
Registro de eventos
Su aplicación integradora debe registrar todos los eventos de los que debe ser notificado en el sistema.
Los registros de eventos se agregan al método Initialize() , ubicado en el código de la plantilla que se
agrega automáticamente cuando creó su proyecto de Visual Studio Tools para Microsoft Dynamics GP.
Los recursos para los que puede registrar eventos, como formularios, ventanas o campos, cada uno
enumera los eventos que ponen a disposición. Por ejemplo, un formulario tiene los siguientes eventos
disponibles:
Consulte cada tipo de recurso descrito en la Parte 3, Referencia de recursos, para ver la lista de
eventos que están disponibles para ese recurso.
Para registrar un evento, busque el recurso para el que desea registrar el evento. Elija el evento que
desee y luego especifique el método del controlador de eventos. El controlador de eventos es el método
que contiene el código que se ejecuta en respuesta al evento.
C#
Visual Studio lo ayudará cuando registre un evento en código C#. Comience por hacer referencia al
recurso para el que desea registrar un evento. Agregue el operador += y Visual Studio mostrará
IntelliSense para indicar que completará el controlador de eventos. Simplemente presione la tecla TAB
para agregar el registro del controlador de eventos.
ESCUADRÓN DE PROGRAMADORES 41
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
Después de agregar el registro del controlador de eventos, Visual Studio ofrecerá agregar el método
del controlador de eventos para el nuevo evento. Vuelva a presionar la tecla TAB para agregar el
método del controlador de eventos. Cuando haya terminado, el evento completado tendrá un aspecto
similar al siguiente:
Dynamics.Forms.RmCustomerMaintenance.OpenAfterOriginal += nuevo
Controlador de eventos (RmCustomerMaintenance_OpenAfterOriginal);
}
AddHandler Dynamics.Forms.RmCustomerMaintenance.OpenAfterOriginal, _
Dirección de RMCustMaintAfterOpen
Finalizar sub
En el segundo paso, se agrega el método del controlador de eventos. Los parámetros de este método
deben coincidir con los requeridos por el evento. IntelliSense para el evento muestra los parámetros
que debe tener el controlador de eventos.
El siguiente ejemplo muestra el método del controlador de eventos agregado para el evento creado en
el ejemplo anterior.
MsgBox("No implementado")
Finalizar sub
42 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 8 EVENTOS
Respondiendo a eventos
El método del controlador de eventos contiene el código que se ejecuta en respuesta al evento.
Este código puede realizar cualquier acción necesaria para su aplicación de integración. Por
ejemplo, el siguiente código C# es el controlador de eventos que se ejecuta en respuesta al cambio
del valor del campo Número de documento de ventas en la ventana Entrada de transacción de
ventas. Si el formulario de Estimación de flete está abierto, se establecen los controles en el formulario.
CalcularFreightForm.textBoxDocumentNumber.Text =
SOEntryWindow.SopNumber.Value;
EstimarFreightForm.textBoxFreightEstimado.Clear();
EstimarFormaCarga.textBoxTotalWeight.Clear();
}
}
// Establecer el valor de retorno para desactivar siempre el autocompletado para el usuario de DYNSA
if ( p . inParam1 == " DYNSA " )
{
e.resultado = falso;
}
}
Los argumentos de evento para eventos de diálogo modal permiten el acceso a los botones y
mensajes que se muestran en el diálogo modal. Por ejemplo, el siguiente código de Visual Basic es
el controlador de eventos para el evento BeforeModalDialog de la ventana Entrada de transacción
de ventas. Muestra cómo se utilizan los argumentos de evento para examinar el texto del mensaje
que muestra el cuadro de diálogo modal y cómo se utilizan para responder al cuadro de diálogo.
Terminara si
Finalizar sub
ESCUADRÓN DE PROGRAMADORES 43
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
Por ejemplo, el siguiente ejemplo de Visual Basic es el controlador de eventos para el evento
BeforeOpen del formulario Mantenimiento del cliente. El método del controlador de eventos
examina al usuario actual que inició sesión en el sistema. Si es el usuario “sa”, se muestra un
mensaje y no se abre la ventana. Observe cómo se utilizan los argumentos del evento para
cancelar el evento.
'Mostrar el mensaje
MsgBox("No acceda a esta ventana como administrador")
Terminara si
Finalizar sub
• Eventos de
procedimiento • Eventos
de función • Eventos de diálogo modal
Los otros tipos de eventos no se pueden dar de baja. Si intenta anular su registro, se lanzará una
excepción.
C#
El siguiente ejemplo de C# muestra cómo cancelaría el registro de un evento
AfterModalDialog. El método denominado IvItemMaintenance_AfterModalDialog se había
registrado como controlador de eventos para el evento de diálogo modal.
ItemMaintenanceForm.IvItemMaintenance.AfterModalDialog = nuevo
EventHandler<AfterModalDialogEventArgs>(IvItemMaintenance_AfterModalDialog);
44 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 8 EVENTOS
Visual Basic El
siguiente ejemplo de Visual Basic muestra cómo cancelaría el registro del evento
InvokeAfterOriginal para el procedimiento AddSuccessfulLoginRecord. El método
denominado AddSuccessfulLogin se había registrado como controlador de eventos
para el evento de procedimiento.
RemoveHandler Dynamics.Procedures.AddSuccessfulLoginRecord.InvokeAfterOriginal, _
Dirección de AddSuccessfulLogin
ESCUADRÓN DE PROGRAMADORES 45
Machine Translated by Google
46 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
ESCUADRÓN DE PROGRAMADORES 47
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
IntelliSense El
IntelliSense disponible en Visual Studio será útil al enumerar qué tablas están disponibles,
así como qué campos están disponibles en esas tablas.
Búferes de tabla
Un búfer de tabla proporciona acceso a una fila de una tabla específica. La información en el
búfer de la tabla proviene de la tabla o de un script que se haya ejecutado. Su código interactuará
con el búfer de la tabla cuando realice operaciones en la tabla. Hay dos tipos de búferes de
tablas: globales y de nivel de formulario.
Se crea un búfer de tabla global cuando se accede directamente a una tabla a través de la lista
global de tablas. Se accede a los búferes de tablas globales a través de la clase de diccionario.
Esta clase tiene una propiedad Tables que brinda acceso a la colección de tablas definidas en el
diccionario. Un búfer de tabla global no está asociado con ningún formulario específico. Esto
hace que los búferes de tablas globales sean útiles en situaciones en las que una integración de
Visual Studio Tools debe leer o escribir en una tabla de Dynamics GP, pero no interactúa con la
interfaz de usuario.
De forma predeterminada, un búfer de tabla global para una tabla se comparte con todos los
demás complementos de Visual Studio Tools que acceden a esa misma tabla. Si desea que su
integración cree un búfer de tabla global que no se comparte, use el método Clone() al crear la
instancia del búfer de tabla global.
Se crea un búfer de tabla a nivel de formulario cuando se adjunta una tabla a un formulario en
Microsoft Dynamics GP. Hay un búfer de tabla para cada tabla adjunta al formulario.
Cada búfer de tabla a nivel de formulario es compartido por el código que forma parte del
formulario, así como por cualquier código fuera del formulario que acceda a la tabla a través de
ese formulario. La propiedad Tablas del formulario permite el acceso a los búferes de las tablas
adjuntas al formulario. Debido a que son compartidos, las integraciones de Visual Studio Tools
no suelen usar los búferes de tablas de nivel de formulario para leer o escribir directamente en
las tablas. En su lugar, se examinan los búferes de la tabla a nivel de formulario para encontrar
qué datos ha leído o está escribiendo la ventana de Dynamics GP en la tabla específica.
48 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 9 TRABAJO CON TABLAS
Forma
Dinámica GP
Ventana
Tablas de Dynamics GP
Cuando el código de su aplicación de integración haya terminado de trabajar con un búfer de tabla global,
debe cerrarse usando el método Close() para la tabla. Si no se cierra un búfer de tabla global, se producirá
el error "Se está ejecutando un proceso en segundo plano: se canceló la salida" cuando el usuario intente
salir de Microsoft Dynamics GP.
Para los búferes de tabla a nivel de formulario, el búfer de tabla se cerrará cuando se cierre el formulario.
Rara vez es necesario cerrar explícitamente un búfer de tabla a nivel de formulario con el método Close() .
El siguiente ejemplo de C# muestra cómo se accede a una tabla a través de un búfer de tabla global. Se
recupera la primera fila de la tabla (la tabla Maestro de clientes de RM) y se muestra el número de cliente.
Observe cómo se cierra el búfer de la tabla al final del ejemplo.
RmCustomerMstrTable CustomerMasterTable;
CustomerMasterTable = Dynamics.Tables.RmCustomerMstr;
ESCUADRÓN DE PROGRAMADORES 49
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
Llaves
Una clave es un campo o combinación de campos en una tabla que se usa para ordenar y ubicar
filas específicas en la tabla. Por lo general, el valor del campo o campos clave es único para cada
fila de una tabla, por lo que se puede ubicar una fila específica. Las claves que no identifican de
forma única una fila específica se usan para hacer referencia a un rango de filas en la tabla.
Las claves para una tabla se identifican por número, comenzando con el valor 1. Cuando especifique
la clave que desea usar para una tabla, proporcionará el número entero correspondiente. La ventana
Descripciones de tablas en Microsoft Dynamics GP enumera las claves para cada tabla y los
segmentos clave (campos) que contiene cada clave.
Utilizará las claves para una tabla cuando recupere una fila específica de la tabla.
Esto se describe en la siguiente sección, Recuperación de una fila. También utilizará claves cuando
desee realizar operaciones en un rango de filas en la tabla. Aprenderá más sobre esto en Rangos
en la página 55.
El siguiente ejemplo de C# recupera la fila del cliente American Electrical Contractor de la tabla
RM_Customer_MSTR. Se utiliza la segunda clave de la tabla RM_Customer_MSTR. Esta clave
contiene un componente, el nombre del cliente. La persona de contacto del cliente recuperado se
muestra en un cuadro de diálogo.
50 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 9 TRABAJO CON TABLAS
// Recuperar la fila
err = CustomerMasterTable.Get();
si (err == TableError.NoError)
{
MessageBox.Show(CustomerMasterTable.ContactPerson.Value);
}
demás
Para guardar una nueva fila en una tabla, configure los campos de la tabla con los valores que
desea guardar. Luego use el método Save() para guardar la nueva fila en la tabla. El siguiente
ejemplo de C# agrega una nueva fila a la tabla GL_Account_Category_MSTR. Establece los
valores para los campos de la tabla y luego guarda la nueva fila.
GlAccountCategoryMstrTable CategoryMasterTable;
CategoryMasterTable = Dynamics.Tables.GlAccountCategoryMstr;
CategoryMasterTable.AccountCategoryNumber.Value = (corto)49;
CategoryMasterTable.AccountCategoryDescription.Value = "Participación en los beneficios";
err = CategoryMasterTable.Save();
si (err == TableError.Duplicate)
{
//Cerrar la tabla
CategoryMasterTable.Close();
ESCUADRÓN DE PROGRAMADORES 51
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
si (err == TableError.NoError)
{
si (err != TableError.NoError)
{
" +
MessageBox.Show("Ocurrió un error al actualizar la fila:
err.ToString());
}
}
demás
//Cerrar la tabla
TablaMaestraCliente.Cerrar();
52 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 9 TRABAJO CON TABLAS
si (err == TableError.NoError)
{
si (err != TableError.NoError)
{
" +
MessageBox.Show("Se produjo un error al eliminar la fila:
err.ToString());
}
}
//Cerrar la tabla
ItemMasterTable.Close();
ESCUADRÓN DE PROGRAMADORES 53
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
Se devuelve un código de error de cada una de las operaciones de tabla que se pueden realizar.
Los posibles códigos de error están contenidos en la enumeración TableError . Muchos de los errores
incluidos en la enumeración no se producirán en las versiones publicadas de Microsoft Dynamics GP. La
siguiente tabla describe los valores de error que probablemente encuentre su integración de Visual
Studio Tools:
Constante Descripción
Cambió La fila que se está guardando fue modificada por otro usuario.
Base de datosPermisoViolación El usuario actual no tiene privilegios de seguridad para acceder a la tabla.
Número de clave no válido La tabla no tiene una clave con el número especificado.
sin bloqueo Se realizó una operación como Remove() , pero no se bloqueó ninguna fila.
Por lo general, su código realizará una de las siguientes acciones, o ambas, después de cada operación de tabla:
• Verifique el valor NoError, lo que indica que la operación de la tabla fue exitosa. Si la operación fue
exitosa, el siguiente paso de procesamiento puede continuar.
Si ocurre un error inesperado después de realizar una operación de tabla, siempre es una buena idea
mostrar los detalles del error al usuario. Incluya información como la tabla, la operación que se está
realizando y el error que se produjo.
Cuando ocurre un error de operación de tabla, su código no seguirá la ruta de código típica. Asegúrese
de que su código cierre todas las tablas a las que haya accedido. De lo contrario, el usuario no podrá
salir de Microsoft Dynamics GP.
54 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 9 TRABAJO CON TABLAS
Rangos
Cuando se trabaja con tablas, suele ser eficaz limitar la cantidad de información a la
que se accede. Puede hacer esto configurando un rango para la tabla. Un rango se
basa en una clave para la tabla y le permite acceder a una parte específica de las filas
de la tabla. El rango seleccionado se tratará como una tabla completa. Por ejemplo,
llamar al método GetFirst() devuelve la primera fila del rango. Llamar al método
GetLast() devuelve la última fila del rango, y así sucesivamente.
Utiliza los métodos RangeStart() y RangeEnd() para especificar el rango de una tabla.
Puede especificar un rango por tabla y el rango está asociado con una clave específica.
El rango se usará solo cuando se acceda a la tabla usando la tecla con la que está
asociado el rango. Para borrar el rango especificado para una tabla, use el método
RangeClear() .
si (err == TableError.NoError)
{
" +
MessageBox.Show("Primer cliente:
CustomerMasterTable.CustomerName.Value);
}
demás
{
" +
MessageBox.Show("Se produjo un error al recuperar la fila:
err.ToString());
}
ESCUADRÓN DE PROGRAMADORES 55
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
err = CustomerMasterTable.GetLast();
si (err == TableError.NoError)
{
" +
MessageBox.Show("Último cliente:
CustomerMasterTable.CustomerName.Value);
demás
{
" +
MessageBox.Show("Se produjo un error al recuperar la fila:
err.ToString());
//Cerrar la tabla
TablaMaestraCliente.Cerrar();
Por ejemplo, el siguiente código de C# crea un rango para la tabla IV_Item_MSTR que incluye
solo elementos de la clase COMPONENTS. El rango se crea utilizando la clave 3 para la tabla
Maestro de artículos. Esta clave tiene dos segmentos: Código de clase de artículo y Número
de artículo.
Para establecer el comienzo del rango, se utiliza el método Clear() para establecer los campos
en el búfer de la tabla IV_Item_MSTR al valor mínimo. El campo Código de clase de artículo en
el búfer de la tabla se establece en "COMPONENTES". El método RangeStart() especificó que
este es el comienzo del rango.
Para establecer el final del rango, se usa el método Fill() para establecer los campos en el búfer
de la tabla IV_Item_MSTR al valor máximo. El campo Código de clase de artículo en el búfer
de la tabla se establece en "COMPONENTES". El método RangeEnd() especifica que este es
el final del rango.
Los valores clave para el rango se muestran en la siguiente ilustración. El rango incluirá filas
donde el valor del Código de clase de artículo es "COMPONENTE" y el Número de artículo
puede ser cualquier valor.
56 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
err = ItemMasterTable.GetFirst();
while(err == TableError.NoError)
{
// Agregar el elemento a la lista
" " +
itemList.AppendLine(ItemMasterTable.ItemNumber +
ItemMasterTable.ItemDescription);
//Cerrar la tabla
ItemMasterTable.Close();
ESCUADRÓN DE PROGRAMADORES 57
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
RmCustomerMstrSumTable CustomerMasterSummaryTable;
CustomerMasterSummaryTable = Dynamics.Tables.RmCustomerMstrSum;
RmCustomerMstrAddrTable CustomerMasterAddressTable;
CustomerMasterAddressTable = Dynamics.Tables.RmCustomerMstrAddr;
err = CustomerMasterSummaryTable.Remove();
}
//Cerrar la tabla
CustomerMasterSummaryTable.Close();
TablaMaestraCliente.Clave = 1;
CustomerMasterTable.CustomerNumber.Value = "STPATRIC0001";
err = CustomerMasterTable.Change();
si (err == TableError.NoError)
{
err = CustomerMasterTable.Remove();
}
//Cerrar la tabla
TablaMaestraCliente.Cerrar();
//Cerrar la tabla
CustomerMasterAddressTable.Close();
58 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 9 TRABAJO CON TABLAS
Bloqueo de filas
Una fila debe estar bloqueada para eliminarla o guardar los cambios realizados en ella. Se aplica un bloqueo
cuando se lee una fila de una tabla. Se pueden utilizar dos tipos de bloqueo: pasivo y activo.
El método Get() se usa solo para leer una fila. Nunca bloquea la fila.
No todas las tablas de Microsoft Dynamics GP permiten el bloqueo activo. Si intenta bloquear activamente una
fila en una tabla que no la admite, se devolverá un error NotSupported.
Liberación de bloqueos
Cualquiera de las siguientes acciones libera un bloqueo de fila:
• Usando el método Save() o el método Remove() , sin importar si el método fue exitoso.
Si una fila está actualmente bloqueada en un búfer de tabla e intenta bloquear otra fila, recibirá un error de
DoubleLock que indica que una fila ya estaba bloqueada.
Procesamiento multiusuario
Microsoft Dynamics GP admite que varios usuarios accedan a la misma tabla al mismo tiempo. Esto se logra
mediante Optimistic Concurrency Control (OCC), una forma de bloqueo de registros que permite que varios
usuarios trabajen en las mismas tablas y accedan a las mismas filas con restricciones mínimas, mientras ayuda
a garantizar la integridad de los datos.
Para permitir que varios usuarios utilicen correctamente Microsoft Dynamics GP mientras las integraciones de
Visual Studio Tools acceden a los datos, debe elegir el tipo de bloqueo utilizado. También debe manejar
cualquier condición de error que ocurra como resultado de que varios usuarios trabajen con la misma fila en
una tabla.
ESCUADRÓN DE PROGRAMADORES 59
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
La siguiente tabla enumera los diversos escenarios de bloqueo que pueden ocurrir. Los eventos enumerados
suceden en orden de izquierda a derecha. Por ejemplo, en la primera fila, el usuario A bloquea pasivamente una
fila, luego el usuario B bloquea pasivamente la misma fila. El usuario A elimina la fila, luego el usuario B cambia el
contenido de la fila y la guarda. Se guardarán los cambios realizados por el usuario B.
1 Bloquea pasivamente un Bloquea Elimina la fila. Cambia el Se guardarán los cambios realizados por el
fila. pasivamente la misma fila. contenido de la fila y usuario B.
guarda los
cambios.
4 Bloquea pasivamente un Bloquea Cambia un campo Cambia el mismo campo El usuario B obtendrá un error que indica
fila. pasivamente la misma fila.y guarda la fila. e intenta guardar la fila. que la fila cambió. Los cambios del usuario B
no se guardarán.
5 Bloquea pasivamente un Bloquea Elimina la fila. Intenta eliminar la fila. El usuario B obtendrá un error que indica
fila. pasivamente la misma fila. que falta la fila.
6 Bloquea activamente un Bloquea Mantiene el bloqueo Intenta eliminar la fila o El usuario B obtendrá un error de fila bloqueada.
fila. pasivamente la misma fila.activo. cambiar un campo y La fila no se eliminará o los cambios no
guardar el se guardarán.
fila.
7 Bloquea activamente un Bloquea Elimina la fila. Cambia la fila y la Si el usuario B cambió la fila y guardó,
fila. pasivamente la misma fila.
El bloqueo activo se guarda o elimina la los cambios se guardarán.
libera. fila. Si el Usuario B intenta eliminar la fila, el
Usuario B obtendrá un error que indica que
falta la fila.
8 Bloquea activamente un Bloquea Realiza cambios y Cambia la fila y la Si el Usuario B cambió el mismo campo que
fila. pasivamente la misma fila.guarda la fila. guarda o elimina la el Usuario A, el Usuario B recibirá un
El bloqueo activo se fila. error que indica que la fila cambió. Los
libera. cambios del usuario B no se guardarán.
Si el usuario B cambió diferentes campos,
los cambios se guardarán.
Si el usuario B eliminó la fila, la fila se
eliminará.
9 Bloquea pasivamente un Bloquea activamente el Intenta eliminar la fila o Mantiene el bloqueo El usuario A obtendrá un error de fila bloqueada,
fila. misma fila. cambiar un campo y activo. aunque el bloqueo activo del usuario B llegó
guardar el más tarde que el bloqueo del usuario A.
fila.
Los escenarios 1 a 3 no producen ningún error. Para ser compatible con múltiples usuarios, su aplicación debe
poder manejar los escenarios 4 a 10, alertando a los usuarios de que ocurrió un error y permitiéndoles responder
adecuadamente.
Utilice el valor de error devuelto por las distintas operaciones de la tabla, como Guardar() o Eliminar(), para atrapar
los errores, de modo que su código pueda tratar los errores que se produzcan. Los siguientes ejemplos muestran
cómo detectar errores multiusuario al leer, guardar y eliminar registros.
No debe buscar condiciones de error multiusuario en tablas que contienen campos de texto. Los campos de texto
son aquellos que almacenan texto de hasta 32.000 caracteres. Los códigos de error multiusuario no se devuelven
correctamente para las tablas que contienen campos de texto.
60 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 9 TRABAJO CON TABLAS
Ejemplo 1 El
siguiente ejemplo de C# lee y bloquea activamente la primera fila de la tabla RM_Sales_WORK.
Utiliza el valor devuelto por el método ChangeFirst() para manejar el error de uso compartido
resultante de que la fila está bloqueada activamente por otro
usuario.
//Cerrar la tabla
TablaTrabajoVentas.Close();
Ejemplo 2 El
siguiente ejemplo de C# lee la primera fila de la tabla RM_Customer_MSTR, cambia la ID
del vendedor e intenta guardar la fila modificada. El valor de retorno del método Save() se
usa para manejar un error que resulta de que otro usuario cambió o bloqueó activamente la
fila.
err = CustomerMasterTable.ChangeFirst();
ESCUADRÓN DE PROGRAMADORES 61
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
TablaMaestraCliente.Change();
// Reescribe el valor
si (err != TableError.NoError)
MessageBox.Show("Esta fila está bloqueada activamente por otro usuario. Los cambios se
no ser salvo.");
}
si no (err != TableError.NoError)
{
// Ocurrió algún otro error en la tabla
" +
MessageBox.Show("Ocurrió un error al actualizar el cliente:
err.ToString());
}
//Cerrar la tabla
TablaMaestraCliente.Cerrar();
Ejemplo 3 La
siguiente secuencia de comandos lee la última fila de la tabla
GL_Account_Category_MSTR e intenta eliminarla. El valor de error devuelto por
el método Remove() se usa para manejar un error que resulta de que la fila está
bloqueada activamente o ya la eliminó otro usuario.
GlAccountCategoryMstrTable AccountCategoryMasterTable;
AccountCategoryMasterTable = Dynamics.Tables.GlAccountCategoryMstr;
AccountCategoryMasterTable.Release();
err = AccountCategoryMasterTable.ChangeLast();
si (err == TableError.NoError)
{
// La fila fue leída y puede ser eliminada
err = AccountCategoryMasterTable.Remove();
si (err == TableError.Sharing)
{
62 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 9 TRABAJO CON TABLAS
}
si no (err == TableError.NotFound)
{
// Ocurrió algún otro error en la tabla
" +
MessageBox.Show("Se produjo un error al eliminar la fila:
err.ToString());
}
}
demás
{
// Ocurrió algún otro error en la tabla
" +
MessageBox.Show("Se produjo un error al recuperar la fila:
err.ToString());
}
//Cerrar la tabla
AccountCategoryMasterTable.Close();
ESCUADRÓN DE PROGRAMADORES 63
Machine Translated by Google
64 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
• Configuración de información de
ensamblado • Creación de una
integración • Implementación de una integración
Es importante configurar la información del ensamblado para que el ensamblado que cree para la integración de
Visual Studio Tools para Microsoft Dynamics GP esté correctamente identificado y versionado. Asegúrese de
configurar los siguientes elementos:
• Título •
Descripción •
Compañía • Mayor,
menor y números de compilación
La siguiente parte de este archivo muestra los números de versión, compilación y revisión que deben configurarse.
// Revisión
//
// Puede especificar todos los valores o predeterminar los números de revisión y compilación
// usando el '*' Como se muestra abajo:
Establezca la
configuración de la
solución en Depurar o Liberar.
2. Cree la solución.
Elija Generar solución en el menú Generar.
66 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 10 CONSTRUCCIÓN Y DESPLIEGUE
• Cualquier ensamblaje de aplicación adicional que haya generado y que sea específico para su
integración.
ESCUADRÓN DE PROGRAMADORES 67
Machine Translated by Google
68 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
• Preparación para la
depuración • Examen de la
aplicación • Deshabilitación de eventos
Localice el proceso
Dynamics.exe y
selecciónelo en la lista.
Haga clic en Adjuntar para adjuntar al proceso. El control volverá a Visual Studio.
ESCUADRÓN DE PROGRAMADORES 69
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
Examinando la aplicación
Una vez que su aplicación de integración se haya detenido en un punto de interrupción, puede usar las
herramientas de Visual Studio para examinar su código. Haz lo siguiente:
3. Examine su código.
Cuando Visual Studio encuentra un punto de interrupción, se convertirá en la aplicación
activa. Utilice las herramientas de Visual Studio para examinar su código.
4. Finalice la depuración.
Cuando haya terminado de depurar su aplicación de integración, elija Detener depuración
en el menú Depurar en Visual Studio.
Deshabilitar eventos
En algunos casos, es posible que desee deshabilitar los eventos de los complementos de
Visual Studio Tools para confirmar si están provocando algún comportamiento específico en la
aplicación de Microsoft Dynamics GP. Para deshabilitar eventos, use la ventana Estado de
personalización en Microsoft Dynamics GP. Para abrir esta ventana, apunte a Personalizar en
el menú Herramientas y luego elija Estado de personalización. Seleccione el producto Microsoft
Dynamics GP y luego haga clic en Deshabilitar. Asegúrese de habilitar los eventos después de
haber completado sus pruebas.
70 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
• Formas modificadas
• Formas alternativas
• Directrices
formularios modificados
Los formularios modificados contienen modificaciones que se han realizado con el modificador. Para
acceder a estas modificaciones desde su proyecto Visual Studio Tools para Microsoft Dynamics GP,
complete el siguiente procedimiento:
Esta referencia al
ensamblado de la aplicación
proporciona acceso a los
formularios modificados para la aplicación.
DinámicaModificado
ESCUADRÓN DE PROGRAMADORES 71
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
El siguiente código C# establece el valor de un nuevo campo en la ventana Límite de crédito del
formulario Mantenimiento del cliente. El nuevo campo es un campo local, se agrega con el
modificador y se denomina "Prueba".
DynamicsModified.Forms.RmCustomerMaintenance.RmCreditLimit.LocalTest.Value =
"Campo Modificado";
Al acceder a los recursos que están definidos en el diccionario principal de una aplicación, acceda
a ellos a través de la clase del diccionario principal, en lugar de a través de la clase "Modificada" de
la aplicación.
Formas alternativas
Los formularios alternativos son formularios del diccionario principal de Dynamics que un
desarrollador externo ha modificado y se almacenan en un diccionario de terceros. Se accede a los
recursos nuevos y modificados para el formulario alternativo a través del ensamblado de la
aplicación de la aplicación de terceros. Para acceder a formularios alternativos desde su proyecto
Visual Studio Tools para Microsoft Dynamics GP, complete el siguiente procedimiento:
Esta referencia a la
El ensamblaje de la aplicación proporciona
acceso a los formularios alternativos.
para la aplicación
SampleIntegratingApp
72 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 12 FORMAS MODIFICADAS Y ALTERNATIVAS
SampleIntegratingApp.Forms.PmVendorMaintenance.PmVendorMaintenance.
LocalTest.Value = "Campo alternativo";
Pautas
Si planea usar Visual Studio Tools para Microsoft Dynamics GP para desarrollar una integración para
distribución general, le recomendamos que limite las referencias a recursos en formas modificadas o
alternativas. Debido a la configuración de seguridad, es posible que un usuario específico no tenga
acceso a la versión modificada o alternativa de un formulario, lo que posiblemente provoque errores en
su integración. Si distribuye una integración que accede a formas modificadas o alternativas, asegúrese
de que su código maneje adecuadamente los casos en los que estos recursos no estén disponibles.
Por ejemplo, cuando establece o recupera el valor de un campo, use un bloque try...catch para encerrar
las declaraciones. Esto permite que su código detecte cualquier excepción que se genere porque no se
puede acceder al campo. El siguiente ejemplo de C# muestra cómo se puede configurar un campo en
la ventana para una versión alternativa del formulario de mantenimiento de proveedores dentro de un
bloque try...catch .
intentar
SampleIntegratingApp.Forms.PmVendorMaintenance.PmVendorMaintenance.
LocalStatus.Value = "Preferido";
}
ESCUADRÓN DE PROGRAMADORES 73
Machine Translated by Google
74 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
En Visual Studio Tools, los formularios que crea que heredan de DexUIForm se pueden integrar en
el sistema de macros en Microsoft Dynamics GP. El soporte para el sistema de macros no es
automático. Para admitir el sistema de macros, hará lo siguiente:
• Debe anular el método PlayMacroItem() en la clase base DexUIForm y agregar código para admitir
la reproducción de sus comandos de macro.
• Si su formulario de Visual Studio Tools realiza llamadas asincrónicas a otros procesos que el
sistema de macros deberá esperar, deberá anular el método IsAsynchEventPending() .
Grabación de macros
En su formulario de Visual Studio Tools, identifique los lugares en los que el usuario puede realizar
acciones. Las acciones incluyen cosas como hacer clic en botones, agregar texto a campos de texto
o mover el foco. En los eventos que se ejecutan debido a estas acciones del usuario, agregará
código que llame al método RecordMacroItem() para registrar una cadena de texto y un comentario
opcional que identifique y describa la acción. Por ejemplo, el siguiente código C# registra un
comando de macro para la casilla de verificación Energy Star:
Las cadenas de texto que se pasan al método RecordMacroItem() se escriben en la macro como
instrucciones de macro ShellCommand .
El método RecordMacroItem() registra valores solo cuando se está grabando una macro.
Sintaxis de la macro La
cadena de texto y el comentario opcional grabados en la macro son la única información disponible
para el complemento de Visual Studio Tools cuando se reproduce la macro. Estas cadenas de texto
deben contener suficiente información para que su código determine la acción que se debe realizar.
No hay una sintaxis predefinida para las cadenas de texto registradas. Debe definir las cadenas de
texto para que su complemento pueda analizarlas y, luego, el complemento pueda realizar las
acciones indicadas. La compatibilidad con macros en el ejemplo de Environmental Details Visual
Studio Tools es un buen punto de partida. La sintaxis de sus declaraciones de macro es similar al
lenguaje de macros estándar de Microsoft Dynamics GP.
ESCUADRÓN DE PROGRAMADORES 75
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
Ubicación El lugar
donde coloca las llamadas RecordMacroItem() en su código puede afectar la forma en que se
escriben los datos en la macro. Es posible que se requiera algo de experimentación para encontrar
qué evento de un control es más apropiado para registrar una acción de macro. Por ejemplo, al
grabar el texto ingresado en un control de cuadro de texto, el evento Validating es el lugar más
apropiado para la llamada RecordMacroItem() . El siguiente ejemplo de C# muestra el evento
Validating para el cuadro de texto YearlyEnergyCost en el ejemplo Environmental Details.
La siguiente tabla enumera el evento en el que se debe colocar el código de grabación de macro
para los controles comunes.
Control Evento
Caja de texto Validando
Reproducción de macros
Argumentos de evento
Los siguientes argumentos de evento se pasan al método PlayMacroItem() :
Manejado Este es un parámetro booleano que indica si se ha realizado la acción para la declaración
de macro. Debe verificar el valor de este parámetro al comienzo de su método PlayMacroItem() . Si
su valor es verdadero, la declaración de macro ya se ha manejado, por lo que su código no debería
realizar ninguna acción. Si determina que su código debe realizar la acción para la declaración de
macro, establezca el parámetro Handled en verdadero cuando se complete la acción. Esto le dice a
otro código que la instrucción macro ya ha sido procesada.
MacroText Este parámetro de cadena contiene la cadena de macro que fue escrita por el método
RecordMacroItem() cuando se grabó la macro. Necesitará analizar esta cadena para determinar si
su complemento debe realizar la acción de macro.
76 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 13 IMPLEMENTACIÓN DEL SOPORTE DE MACRO
Partido m;
si (m.Éxito)
si (m.Grupos.Cuenta >= 2)
textBoxYearlyEnergyCost.Focus();
textBoxYearlyEnergyCost.Text = m.Groups[1].Value;
e.Manejado = verdadero;
si (m.Éxito)
si (m.Grupos.Cuenta >= 2)
NotasCuadroTexto.Focus();
textBoxNotes.Text = m.Grupos[1].Valor;
e.Manejado = verdadero;
si (m.Éxito)
si (m.Grupos.Cuenta >= 2)
if (m.Grupos[1].Valor == "EnergyStar")
checkBoxEnergyStar.Focus();
checkBoxEnergyStar.Checked = !checkBoxEnergyStar.Checked;
e.Manejado = verdadero;
ESCUADRÓN DE PROGRAMADORES 77
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
checkBoxReciclable.Focus();
checkBoxRecyclable.Checked = !checkBoxReciclable.Checked;
e.Manejado = verdadero;
}
// boton cerrar
if (m.Grupos[1].Valor == "BotónCerrar")
{
botónCerrar.Focus();
botónCerrar.PerformClick();
e.Manejado = verdadero;
}
}
}
}
// El comando macro no era nuestro, así que deja que la clase base lo procese.
base.PlayMacroItem(e);
}
conseguir
78 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
Las ventanas de búsqueda en Microsoft Dynamics GP son formularios separados. El diccionario principal de
Dynamics contiene búsquedas con funciones de búsqueda básicas. Las ventanas de búsqueda que ve el usuario
en Microsoft Dynamics GP son en realidad versiones alternativas de los formularios y están definidas en el
diccionario SmartList. Esto significa que su código de Visual Studio Tools hará referencia a las búsquedas del
diccionario SmartList.
Los siguientes pasos describen el funcionamiento básico de una búsqueda de Visual Studio
Integración de herramientas:
Normalmente, cada búsqueda utilizada por una integración de Visual Studio Tools se rastrea mediante una
variable estática definida en la clase GPAddIn. La variable debe establecerse cuando se abre la búsqueda y
borrarse cuando la búsqueda devuelve un valor.
Cuando el usuario hace clic en el botón Seleccionar en la búsqueda, el controlador de eventos devuelve el
identificador del elemento seleccionado para el evento ClickBeforeOriginal. Este controlador de eventos
también borra la variable estática que rastrea que la integración de Visual Studio Tools abrió la búsqueda.
ESCUADRÓN DE PROGRAMADORES 79
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
Búsquedas disponibles
Se han utilizado varios patrones diferentes para codificar los formularios de búsqueda en Microsoft Dynamics
GP. Cada patrón requiere una técnica específica para usar la búsqueda. Para saber qué búsquedas están
disponibles y cómo llamarlas, consulte el documento titulado "Llamada de formularios de búsqueda desde
Dexterity" en el SDK de Microsoft Dynamics GP. El vínculo de este documento se encuentra en el grupo
Fundamentos de la sección Procedimientos y funciones del archivo de ayuda del SDK de Microsoft Dynamics
GP.
El ejemplo de búsquedas, descrito en el Capítulo 29, "Búsquedas", demuestra cómo usar varios formularios
de búsqueda comunes en una integración de Visual Studio Tools.
En algunos casos, Visual Studio Tools no puede acceder a todos los recursos necesarios para usar el
formulario de búsqueda. Por ejemplo, algunos formularios de búsqueda se abren llamando a procedimientos
que tienen parámetros de referencia. Dado que Visual Studio Tools no puede llamar a procedimientos con
parámetros de referencia, estos formularios de búsqueda no se pueden usar con integraciones de Visual
Studio Tools.
ejemplo de búsqueda
El siguiente ejemplo muestra cómo usar el formulario de búsqueda Clientes y prospectos en Microsoft
Dynamics GP para recuperar números de clientes para una integración de Visual Studio Tools.
• Se establece el indicador que indica que la integración de Visual Studio Tools abrió la búsqueda.
80 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 14 USO DE BUSQUEDAS
SmartList.Forms.CustomerLookup;
string númeroCliente = Formulario de Búsqueda de Cliente. Búsqueda de Cliente.
CustomerLookupScroll.CustomerNumber.Value;
ESCUADRÓN DE PROGRAMADORES 81
Machine Translated by Google
PARTE 2 DESARROLLANDO INTEGRACIONES
82 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
RE
DE
RE
PA
3:
Machine Translated by Google
• El Capítulo 17, “Desplazamiento de ventanas”, describe los recursos de las ventanas de desplazamiento.
84 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
• Acceder a formularios •
Métodos de formulario •
Propiedades de formulario
• Eventos de formulario
Acceso a formularios
Se accede a los formularios de un diccionario de aplicación a través de la clase de diccionario. Esta clase
tiene una propiedad Forms que brinda acceso a la colección de formularios en el diccionario. La clase de
diccionario para el diccionario de la aplicación se encuentra en el siguiente espacio de nombres:
Microsoft.Dexterity.Aplicaciones
Por ejemplo, para acceder a la colección de formularios en el diccionario de Dynamics, use la siguiente
sintaxis:
Microsoft.Dexterity.Applications.Dynamics.Forms
Microsoft.Dexterity.Applications.Dynamics.Forms.SopEntry
Métodos de formulario
• AddMenuHandler() • Cerrar()
• Dispose() •
Abrir()
AñadirManejadorDeMenú()
El método AddMenuHandler() agrega un elemento de menú al menú "Adicional" que aparece en las
ventanas de Microsoft Dynamics GP. El elemento del menú estará disponible cuando el formulario esté
abierto. Este método toma tres parámetros:
EventHandler : la función que se ejecutará cuando se elija el elemento del menú en Microsoft Dynamics
GP.
MenuItemName : una cadena que contiene el texto que se mostrará para el elemento del menú.
AcceleratorKey : una cadena que contiene un solo carácter que se utilizará como tecla aceleradora para el
elemento del menú. Asegúrese de que esta tecla aceleradora no entre en conflicto con ninguna tecla
aceleradora existente. Si no desea una tecla aceleradora, use la cadena vacía.
ESCUADRÓN DE PROGRAMADORES 85
Machine Translated by Google
PARTE 3 REFERENCIA DE RECURSOS
El siguiente ejemplo de C# muestra cómo se agrega un controlador de menú para el elemento de menú "Estimar
flete" al formulario SopEntry en Microsoft Dynamics GP:
Dynamics.Forms.SOPEntry.AddMenuHandler(OpenEstimateFreight,
"Estimar Flete", "F");
Este código es el controlador de eventos para el elemento del menú. Tenga en cuenta que toma dos argumentos
como controladores de eventos estándar.
if (EstimateFreightForm == nulo)
{
if (EstimateFreightForm.Created == false)
{
El siguiente ejemplo de Visual Basic muestra cómo se agrega el mismo controlador de menú para el elemento de
menú "Estimar flete" al formulario SopEntry en Microsoft Dynamics GP.
Este código es el controlador de eventos para el elemento de menú. Tenga en cuenta que también toma dos
Shared Sub OpenEstimateFreight (ByVal remitente como objeto, ByVal y como EventArgs)
Si el formulario de flete estimado no es nada, entonces
Intentar
Demás
Terminara si
86 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 15 FORMAS
Cerca()
El método Close() cierra el formulario.
Disponer()
El método Dispose() libera la memoria utilizada para el formulario cuando ya no se necesita.
Abierto()
El método Open() intenta abrir el formulario.
Propiedades de formulario
• Comandos •
Funciones •
IsOpen •
IsChanged •
Procedimientos
Comandos La propiedad
Comandos proporciona acceso a la lista de comandos definidos por el formulario. Consulte el Capítulo 21,
"Comandos", para obtener más información sobre el uso de comandos en su aplicación.
Funciones La
propiedad Funciones proporciona acceso a la lista de funciones de nivel de formulario definidas por el
formulario. Consulte el Capítulo 24, “Funciones”, para obtener más información acerca de las funciones.
IsChanged La
propiedad IsChanged tiene el valor verdadero si el indicador de cambio para el formulario está establecido
y falso si no lo está. El indicador de cambio se establece automáticamente en verdadero cuando cambia
cualquier valor de campo del formulario.
IsOpen La
propiedad IsOpen tiene el valor verdadero si el formulario está abierto y falso si no lo está.
Procedimientos La
propiedad Procedimientos proporciona acceso a la lista de procedimientos de nivel de formulario definidos
por el formulario. Consulte el Capítulo 23, "Procedimientos", para obtener más información sobre el uso de
procedimientos.
Tablas La
propiedad Tablas proporciona acceso a la lista de tablas que se adjuntan al formulario. Consulte el Capítulo
9, "Trabajar con tablas", y el Capítulo 19, "Tablas", para obtener más información sobre el uso de las tablas
adjuntas a los formularios.
ESCUADRÓN DE PROGRAMADORES 87
Machine Translated by Google
PARTE 3 REFERENCIA DE RECURSOS
Eventos de formulario
CerrarAntesOriginal
Este evento ocurre cuando se cierra el formulario, antes de que se ejecute el evento de cierre del formulario. Este evento
puede ser cancelado.
CerrarDespuésOriginal
Este evento ocurre cuando se cierra el formulario, después de ejecutar el evento de cierre del formulario.
88 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
• Acceso a ventanas •
Métodos de ventana •
Propiedades de ventana •
Eventos de ventana
Acceso a ventanas
Se accede a las ventanas de un diccionario de aplicación como propiedades del formulario en el que
están contenidas. Por ejemplo, la ventana Entrada de transacción de ventas (SopEntry) es parte del
formulario SopEntry. Para acceder a él, usaría la siguiente sintaxis:
Dinámica.Formas.SopEntry.SopEntry
IntelliSense en Visual Studio le indicará a qué formulario y ventana de Microsoft Dynamics GP hace
referencia la expresión.
Métodos de ventana
• Cerrar() •
Abrir() •
PullFocus()
Cerca()
El método Close() cierra la ventana.
Abierto()
El método Open() intenta abrir la ventana.
Foco de extracción ()
El método PullFocus() eliminará el foco de la ventana actual. No se enfocará ningún elemento en la
ventana. Se ejecutarán todos los eventos de "validación" o "salida" pendientes para el campo actualmente
enfocado. Utilice este método en situaciones en las que desea que se ejecuten todas las acciones
pendientes antes de que su aplicación de integración realice su procesamiento.
Propiedades de la ventana
• EstáCambiado •
EstáAbierto
IsChanged La
propiedad IsChanged tiene el valor verdadero si el indicador de cambio para el formulario está establecido
y falso si no lo está. El indicador de cambio se establece automáticamente en verdadero cuando cambia
cualquier valor de campo de la ventana.
IsOpen La
propiedad IsOpen tiene el valor verdadero si la ventana está abierta y falso si no lo está.
ESCUADRÓN DE PROGRAMADORES 89
Machine Translated by Google
PARTE 3 REFERENCIA DE RECURSOS
Eventos de ventana
AbrirDespuésOriginal
Este evento ocurre cuando se abre la ventana, pero después de que el evento de apertura de la ventana es
correr.
El evento Activar debe usarse con precaución. No debería realizar ninguna acción que pueda hacer que
aparezcan cuadros de diálogo porque la aplicación puede suspenderse en un bucle sin fin.
ActivarDespuésOriginal
Este evento ocurre cada vez que la ventana se activa, después de que se ejecuta el evento de activación
de la ventana.
CerrarAntesOriginal
Este evento ocurre cuando se cierra la ventana, pero antes de que se ejecute el evento de cierre de la
ventana. Este evento puede ser cancelado.
CerrarDespuésOriginal
Este evento ocurre cuando la ventana está cerrada, pero después de que se cierra el evento de la ventana.
correr.
90 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 16 VENTANAS
DialogType Indica el tipo de diálogo modal que se muestra. La enumeración DialogType define
los siguientes tipos disponibles:
Tipo Descripción
Preguntar Un cuadro de diálogo modal generado por los comandos de script de error,
advertencia o ask() .
Mensaje Contiene el texto que se muestra en el cuadro de diálogo modal. Establecer el valor
de esta propiedad en el evento BeforeModalDialog le permite cambiar el texto que se muestra
en el cuadro de diálogo modal. Normalmente, el valor de este parámetro se examina para
averiguar qué mensaje se mostrará al usuario.
Button1Text Contiene el texto que se muestra en el botón 1 del cuadro de diálogo modal.
Establecer el valor de esta propiedad en el evento BeforeModalDialog le permite cambiar el
texto que se muestra en el botón.
Button2Text Contiene el texto que se muestra en el botón 2 del cuadro de diálogo modal.
Establecer el valor de esta propiedad en el evento BeforeModalDialog le permite cambiar el
texto que se muestra en el botón.
Button3Text Contiene el texto que se muestra en el botón 3 del cuadro de diálogo modal.
Para los cuadros de diálogo getstring() , esta es la cadena editable en el cuadro de diálogo.
Establecer el valor de esta propiedad en el evento BeforeModalDialog le permite cambiar el
texto que se muestra en el botón o el campo editable.
De acuerdo
Se hace clic en el botón Aceptar del cuadro de diálogo modal getstring() .
Cancelar Se hace clic en el botón Cancelar del cuadro de diálogo modal getstring() .
ESCUADRÓN DE PROGRAMADORES 91
Machine Translated by Google
PARTE 3 REFERENCIA DE RECURSOS
Finalizar sub
Terminara si
Finalizar sub
ItemMaintenanceForm.IvItemMaintenance.AfterModalDialog +=
nuevo controlador de eventos<AfterModalDialogEventArgs>
(IvItemMaintenance_AfterModalDialog);
}
92 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 16 VENTANAS
if (e.Response == DialogResponse.Button1)
{
// Eliminar los detalles ambientales del elemento actual.
DataAccessHelper.DeleteEnvironmentalDetails();
}
}
}
}
ESCUADRÓN DE PROGRAMADORES 93
Machine Translated by Google
94 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
Se accede a las ventanas de desplazamiento de un diccionario de aplicación como propiedades de la ventana en la que
están contenidas. Por ejemplo, se accede a la ventana de desplazamiento de desplazamiento de línea en la ventana
Entrada de transacción de ventas de Microsoft Dynamics GP mediante la siguiente sintaxis:
Dynamics.Forms.SopEntry.SopEntry.LineScroll
IntelliSense en Visual Studio le dirá a qué ventana de desplazamiento en Microsoft Dynamics GP se refiere la expresión.
ESCUADRÓN DE PROGRAMADORES 95
Machine Translated by Google
PARTE 3 REFERENCIA DE RECURSOS
Para averiguar qué datos se agregarán a la fila actual de la ventana de desplazamiento, examine la fila
actual del búfer de tabla de nivel de formulario para la tabla vinculada a la ventana de desplazamiento.
Al usar este evento, no puede examinar los campos de la ventana de desplazamiento para determinar
qué fila se está agregando. Los valores de los campos de la ventana aún no se habrán establecido.
Dynamics.Forms.CustomerLookup.CustomerLookup.CustomerLookupScroll.
LineFillBeforeOriginal += nuevo System.ComponentModel.CancelEventHandler
(CustomerLookupScroll_LineFillBeforeOriginal);
}
El siguiente es el código C# que se ejecuta en respuesta a este evento. Permite visualizar únicamente
los clientes del territorio de venta “TERRITORIO 2”. La tabla RmCustomerMstr está vinculada a la
ventana de desplazamiento, por lo que los valores de la ventana de desplazamiento provienen de esta
tabla. Observe cómo el código accede a la fila actual del búfer de tabla de nivel de formulario para la
tabla RmCustomerMstr para averiguar qué fila se agrega a la ventana de desplazamiento. Se examina el
campo SalesTerritory en la fila actual de la tabla. Si no es “TERRITORIO 2”, el evento se cancela. Esto
evita que la fila se muestre en la ventana de desplazamiento.
if(Dynamics.Forms.CustomerLookup.Tables.RmCustomerMstr.SalesTerritory.
Valor != "TERRITORIO 2")
{
96 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
CAPÍTULO 17 VENTANAS DESPLAZABLES
ESCUADRÓN DE PROGRAMADORES 97
Machine Translated by Google
98 ESCUADRÓN DE PROGRAMADORES
Machine Translated by Google
Se accede a los campos de Windows para un diccionario de aplicación como propiedades de la ventana o de
la ventana de desplazamiento en la que están contenidos. Por ejemplo, el campo Número SOP (SopNumber)
está disponible en la ventana Entrada de transacciones de ventas (SopEntry). Para acceder a él, usaría la
siguiente sintaxis:
Dynamics.Forms.SopEntry.SopEntry.SopNumber
Como otro ejemplo, el campo QTY To Backorder (QtyToBackOrder) está disponible en la ventana de
desplazamiento Line Scroll (LineScroll) de la ventana Sales Transaction Entry (SopEntry). Para acceder a
este campo, usaría la siguiente sintaxis:
Dynamics.Forms.SopEntry.SopEntry.LineScroll.QtyToBackOrder
IntelliSense en Visual Studio le dirá a qué campo de Microsoft Dynamics GP se refiere la expresión.
Algunos campos en las ventanas se denominan campos locales porque se usan solo dentro de un formulario
específico. Por ejemplo, la ventana Entrada de transacción de ventas (SopEntry) contiene un campo local
denominado (L) BillTo Dirección 1. La (L) en el nombre es la forma estándar en que se identifican los campos
locales en Microsoft Dynamics GP. En un proyecto de Visual Studio Tools para Microsoft Dynamics GP, los
nombres de estos campos tienen el prefijo "Local" para indicar que son campos locales. Por ejemplo, para
acceder al campo local BillTo Address 1, usaría la siguiente sintaxis:
Dinámica.Formas.SopEntry.SopEntry.LocalBillToAddress1
• Limpiar() •
Deshabilitar() •
Habilitar()
•
Rellenar() •
Foco() • ForceValidate() •
Ocultar() •
Bloquear() •
EjecutarValidar() •
Mostrar() •
Desbloquear()
ESCUADRÓN DE PROGRAMADORES 99
Machine Translated by Google
PARTE 3 REFERENCIA DE RECURSOS
Claro()
El método Clear() establece el campo en su valor borrado. La siguiente tabla enumera el valor borrado
para los tipos de datos estándar:
Divisa 0
Entero 0
Largo 0
Desactivar()
El método Disable() hace que el campo aparezca en un estado deshabilitado y evita que el usuario realice
cambios en el campo.
Permitir()
El método Enable() permite que un campo previamente deshabilitado reciba la entrada del usuario.
Llenar()
El método Fill() establece el campo en su valor de relleno. La siguiente tabla enumera el valor completo
para los tipos de datos estándar:
Divisa 99999999999999.99999
Entero 32,767
Largo 2.147.483.647
Tiempo 23:59:59
Enfocar()
El método Focus() mueve el foco al campo.
Forzar Validación ()
El método ForceValidate() controla si el evento de validación ocurrirá cuando el enfoque abandone el
campo. Si ocurre el evento de validación, se ejecutará cualquier código de validación para el campo. Este
método toma un parámetro booleano. Proporcionar el valor verdadero obliga a que ocurra el evento de
validación. Al proporcionar el valor falso, se borra cualquier llamada anterior para forzar que ocurra el
evento de validación.
Esconder()
El método Hide() hace que el campo se vuelva invisible e inaccesible para el usuario.
El método Lock() hace que un campo se vuelva inaccesible para el usuario. La apariencia del campo no
cambiará.
EjecutarValidar()
El método RunValidate() hace que cualquier código de validación para el campo de la ventana sea
correr.
Espectáculo()
El método Show() hace que un campo previamente oculto se vuelva visible y accesible para el usuario.
Desbloquear()
El método Unlock() hace que un campo previamente bloqueado sea accesible para el
usuario.
• EstáVacío •
EstáLleno •
Valor
IsEmpty La
propiedad IsEmpty devuelve el valor verdadero cuando el valor del campo está vacío para el tipo de campo
específico. La siguiente tabla enumera el valor vacío para los tipos de datos estándar:
Divisa 0
Entero 0
Largo 0
IsFilled La
propiedad IsFilled devuelve el valor verdadero cuando el valor del campo se establece en el valor máximo
para el tipo de campo específico. La siguiente tabla enumera el valor completo para los tipos de datos
estándar:
Divisa 99999999999999.99999
Entero 32,767
Largo 2.147.483.647
Valor La
propiedad Valor se utiliza para establecer o recuperar el valor del campo. IntelliSense en Visual Studio le
dirá qué tipo de valor se usa para el campo.
• Cambiar •
Introducir antes del original •
Introducir después del original •
Dejar antes del original • Dejar
después del original • Validar
antes del original • Validar después
del original
Cambiar Este
evento ocurre cuando cambia el valor del campo, por ejemplo, cuando lo establece el
usuario o lo cambia otro código en Microsoft Dynamics GP.
ClickAfterOriginal
Este evento ocurre cuando el usuario hace clic en un botón, pero después de que el evento de clic del botón es
correr.
ClickBeforeOriginal
Este evento ocurre cuando el usuario hace clic en un botón, pero antes de que se ejecute el evento de clic del
botón. Este evento puede ser cancelado.
IngresarAntesOriginal
Este evento ocurre cuando el foco se mueve al campo, pero antes de que se ejecute el evento de entrada del
campo. Este evento puede ser cancelado.
EnterAfterOriginal
Este evento ocurre cuando el foco se mueve al campo, pero después de que se ejecuta el evento de entrada del
campo.
DejarAntesOriginal
Este evento ocurre cuando el foco se mueve del campo, pero antes de que se ejecute el evento de abandono del
campo. Este evento puede ser cancelado.
LeaveAfterOriginal
Este evento ocurre cuando el foco se mueve del campo, pero después de que se ejecuta el evento de abandono
del campo.
ValidateBeforeOriginal
Este evento ocurre cuando el foco se va a mover del campo y el campo se ha configurado para ser validado. Un
campo se validará cuando se haya cambiado su valor o se haya forzado la validación, como con el método
ForceValidate() . Este evento ocurre antes del evento de validación del campo. Se puede cancelar.
ValidateAfterOriginal
Este evento ocurre cuando el foco se va a mover del campo y el campo se ha configurado para ser validado. Este
evento ocurre después del evento de validación del campo.
• Acceder a tablas •
Métodos de tabla •
Propiedades de tabla
Microsoft.Dexterity.Aplicaciones
Microsoft.Dexterity.Applications.Dynamics.Tables
Dynamics.Tables.RmCustomerMstr
IntelliSense en Visual Studio le dirá a qué tabla de Microsoft Dynamics GP hace referencia la
expresión.
De forma predeterminada, un búfer de tabla global para una tabla se comparte con todos los
demás complementos de Visual Studio Tools que acceden a esa misma tabla. Si desea que su
integración cree un búfer de tabla global que no se comparte, use el método Clone() al crear la
instancia del búfer de tabla global.
Dynamics.Forms.SopEntry.Tables
IntelliSense en Visual Studio le dirá a qué tabla de nivel de formulario en Microsoft Dynamics GP se
refiere la expresión.
Métodos de tabla
• Cambiar() •
CambiarPrimero() •
CambiarÚltimo() •
CambiarAnterior() • Borrar()
• Clonar() •
Cerrar()
•
Rellenar()
• Obtener() •
ObtenerPrimero
() • ObtenerÚltimo()
• ObtenerSiguiente() •
ObtenerAnterior() •
BorrarRango () •
FinalizarRango ( ) •
EliminarRango() •
IniciarRango() •
Liberar() •
Eliminar ( ) • Guardar( )
Cambiar()
El método Change() recupera una fila de la tabla y bloquea la fila de forma pasiva o activa, lo que permite
realizar cambios en ella. La fila recuperada está determinada por la clave especificada para la tabla y
los valores que se especificaron para los segmentos clave.
El método Change() tiene un parámetro:
ActiveLock : un booleano opcional. El valor verdadero especifica que se aplicará un bloqueo activo a la
fila. El valor falso (el valor predeterminado) especifica que se aplicará un bloqueo pasivo.
CambiarPrimero()
El método ChangeFirst() recupera la primera fila de la tabla y bloquea la fila de forma pasiva o activa, lo
que permite realizar cambios en ella. La fila recuperada está determinada por la clave especificada para
la tabla. El método ChangeFirst() tiene un parámetro:
ActiveLock : un booleano opcional. El valor verdadero especifica que se aplicará un bloqueo activo a la
fila. El valor falso (el valor predeterminado) especifica que se aplicará un bloqueo pasivo.
CambiarÚltimo()
El método ChangeLast() recupera la última fila de la tabla y bloquea la fila de forma pasiva o activa,
lo que permite realizar cambios en ella. La fila recuperada está determinada por la clave especificada
para la tabla. El método ChangeLast() tiene un parámetro:
ActiveLock : un booleano opcional. El valor verdadero especifica que se aplicará un bloqueo activo a
la fila. El valor falso (el valor predeterminado) especifica que se aplicará un bloqueo pasivo.
CambiarSiguiente()
El método ChangeNext() recupera la siguiente fila de la tabla y bloquea la fila de forma pasiva o
activa, lo que permite realizar cambios en ella. La fila recuperada está determinada por la clave
especificada para la tabla y los valores de los campos clave para la fila actualmente en el búfer de la
tabla. El método ChangeNext() tiene un parámetro:
ActiveLock : un booleano opcional. El valor verdadero especifica que se aplicará un bloqueo activo a
la fila. El valor falso (el valor predeterminado) especifica que se aplicará un bloqueo pasivo.
CambiarAnterior()
El método ChangePrevious() recupera la fila anterior de la tabla y bloquea la fila de forma pasiva o
activa, lo que permite realizar cambios en ella. La fila recuperada está determinada por la clave
especificada para la tabla y los valores de los campos clave para la fila actualmente en el búfer de la
tabla. El método ChangePrevious() tiene un parámetro:
ActiveLock : un booleano opcional. El valor verdadero especifica que se aplicará un bloqueo activo a
la fila. El valor falso (el valor predeterminado) especifica que se aplicará un bloqueo pasivo.
Claro()
El método Clear() establece todos los campos en el búfer de la tabla a sus valores borrados.
La siguiente tabla enumera el valor borrado para los tipos de datos estándar:
Divisa 0
Entero 0
Largo 0
Clon()
El método Clone() crea una nueva instancia de un búfer de tabla global para una tabla. Esta nueva
instancia de búfer de tabla no se comparte, por lo que otros complementos de Visual Studio Tools no
pueden acceder a ella. El método Clone() no tiene efecto cuando se utilizan búferes de tabla a nivel
de formulario.
Cerca()
El método Close() cierra el búfer de la tabla.
Llenar()
El método Fill() establece todos los campos en el búfer de la tabla a sus valores máximos.
La siguiente tabla enumera el valor completo para los tipos de datos estándar:
Divisa 99999999999999.99999
Entero 32,767
Largo 2.147.483.647
Tiempo 23:59:59
Conseguir()
El método Get() recupera una fila de la tabla. No se aplica ningún bloqueo a la fila. La fila recuperada
está determinada por la clave especificada para la tabla y los valores que se especificaron para los
segmentos clave.
ObtenerPrimero()
El método GetFirst() recupera la primera fila de la tabla. No se aplica ningún bloqueo a la fila. La fila
recuperada está determinada por la clave especificada para la tabla.
Obtener ultimo()
El método GetLast() recupera la última fila de la tabla. No se aplica ningún bloqueo a la fila. La fila
recuperada está determinada por la clave especificada para la tabla.
ObtenerSiguiente()
El método GetNext() recupera la siguiente fila de la tabla. No se aplica ningún bloqueo a la fila. La fila
recuperada está determinada por la clave especificada para la tabla y los valores de los campos clave
para la fila actualmente en el búfer de la tabla.
ObtenerAnterior()
El método GetPrevious() recupera la fila anterior de la tabla. No se aplica ningún bloqueo a la fila. La
fila recuperada está determinada por la clave especificada para la tabla y los valores de los campos
clave para la fila actualmente en el búfer de la tabla.
RangoBorrar()
El método RangeClear() elimina el rango que se especificó para la tabla.
FinRango()
El método RangeEnd() especifica los valores actuales de los segmentos clave en el búfer de la tabla
como el final del rango de filas en la tabla. La propiedad Key especifica qué clave se usará para el
rango.
RangoEliminar()
El método RangeRemove() intenta eliminar todas las filas del rango actual de la tabla.
RangoInicio()
El método RangeStart() especifica los valores actuales de los segmentos clave en el búfer de la tabla
como el comienzo del rango de filas en la tabla. La propiedad Key especifica qué clave se usará para
el rango.
Liberar()
El método Release() libera cualquier bloqueo pasivo o activo para una fila en el búfer de la
tabla. Los valores de fila permanecen en el búfer de la tabla.
Eliminar()
El método Remove() elimina la fila actual en el búfer de la tabla de la tabla. La fila debe estar
bloqueada de forma pasiva o activa antes de que se pueda eliminar.
Ahorrar()
El método Save() guarda los valores actualmente en el búfer de la tabla en la tabla. Si la fila
está bloqueada en el búfer de la tabla, se actualizará. Si ninguna fila de la tabla está bloqueada,
se agregará una nueva fila.
Propiedades de la tabla
• Clave
Clave
La propiedad Clave se utiliza para establecer o recuperar la clave que el búfer de la tabla está
utilizando actualmente para acceder a la tabla. Las claves para una tabla se identifican por
número, comenzando con el valor 1. Cuando especifique la clave que desea usar para una
tabla, proporcionará el número entero correspondiente. La ventana Descripciones de tablas en
Microsoft Dynamics GP enumera las claves para cada tabla y los segmentos clave (campos)
que contiene cada clave.
Se accede a los campos de tabla para un diccionario de aplicación como propiedades de la tabla en la que están
contenidos. Por ejemplo, el campo Número de artículo (ItemNumber) está disponible en la tabla Maestro de artículos
de inventario (IvItemMstr). Para acceder a él, usaría la siguiente sintaxis:
Dynamics.Tables.IvItemMstr.ItemNumber
IntelliSense en Visual Studio le dirá a qué campo de Microsoft Dynamics GP se refiere la expresión.
• Limpiar()
• Llenar()
Claro()
El método Clear() establece el campo en su valor borrado. La siguiente tabla enumera el valor borrado para los
tipos de datos estándar:
Divisa 0
Entero 0
Largo 0
Llenar()
El método Fill() establece el campo en su valor de relleno. La siguiente tabla enumera el valor completo para los
tipos de datos estándar:
Divisa 99999999999999.99999
Entero 32,767
Largo 2.147.483.647
Tiempo 23:59:59
• EstáVacío •
EstáLleno •
Valor
IsEmpty La
propiedad IsEmpty devuelve el valor verdadero cuando el valor del campo está vacío para el tipo de campo
específico. La siguiente tabla enumera el valor vacío para los tipos de datos estándar:
Divisa 0
Entero 0
Largo 0
IsFilled La
propiedad IsFilled devuelve el valor verdadero cuando el valor del campo se establece en el valor máximo
para el tipo de campo específico. La siguiente tabla enumera el valor completo para los tipos de datos estándar:
Divisa 99999999999999.99999
Entero 32,767
Largo 2.147.483.647
Valor La
propiedad Valor se utiliza para establecer o recuperar el valor del campo. IntelliSense en Visual Studio le dirá
qué tipo de valor se usa para el campo.
• Tipos de comandos •
Comandos de acceso • Métodos
de comandos
Tipos de comandos
Un comando puede ser de uno de los siguientes tipos:
Script Un comando de script ejecuta el código de script que se define para él.
Lista de comandos Un comando de lista de comandos es un contenedor para otros comandos. Una lista de
comandos se puede utilizar como menú, submenú o barra de herramientas.
Dynamics.Forms.CommandSystem.Commands.SmartList
IntelliSense en Visual Studio le dirá a qué comando en Microsoft Dynamics GP se refiere la expresión.
Métodos de comando
• Marcar() •
Deshabilitar() •
Habilitar ( ) •
Ocultar() •
Ejecutar() •
Mostrar() •
Desmarcar()
Controlar()
El método Check() hace que el comando aparezca marcado si se muestra en un menú o en una barra de
herramientas.
Desactivar()
El método Disable() hace que el comando aparezca deshabilitado si se muestra en un menú o en una barra de
herramientas. Una vez deshabilitado, el comando no se puede ejecutar.
Permitir()
El método Enable() hace que un comando previamente deshabilitado se habilite. Aparecerá
habilitado si se muestra en un menú o en una barra de herramientas.
Esconder()
El método Hide() hace que un comando se oculte en cualquier menú o barra de herramientas en el
que aparezca. El comando todavía se puede ejecutar.
Correr()
El método Run() realiza la acción del comando. Para los comandos de formulario, abre el formulario
correspondiente. Para los comandos de secuencia de comandos, ejecuta el código de secuencia
de comandos adjunto al comando.
Espectáculo()
El método Show() hace que un comando previamente oculto se muestre en cualquier menú o barra
de herramientas en el que aparezca.
Desmarcar()
El método Uncheck() hace que el comando aparezca sin marcar si se muestra en un menú o en
una barra de herramientas.
• Acceder a globales •
Propiedades globales
Acceso a globales
Se accede a los valores globales para un diccionario de aplicación a través de la clase de diccionario.
Esta clase tiene una propiedad Globals que brinda acceso a la colección de globales en el diccionario.
La clase de diccionario para el diccionario de la aplicación se encuentra en el siguiente espacio de
nombres:
Microsoft.Dexterity.Aplicaciones
Por ejemplo, para acceder a la colección de globales en el diccionario de Dynamics, use la siguiente
sintaxis:
Microsoft.Dexterity.Applications.Dynamics.Globals
Para acceder a un valor global específico, como el ID del usuario actual (UserId), utilice la siguiente
sintaxis:
Microsoft.Dexterity.Applications.Dynamics.Globals.UserId
Propiedades globales
Los globales tienen las siguientes propiedades disponibles:
• EstáVacío •
EstáLleno •
Valor
IsEmpty La
propiedad IsEmpty devuelve el valor verdadero cuando el valor del campo está vacío para el tipo de
campo específico. La siguiente tabla enumera el valor vacío para los tipos de datos estándar:
Divisa 0
Entero 0
Largo 0
IsFilled La
propiedad IsFilled devuelve el valor verdadero cuando el valor del campo se establece en el
valor máximo para el tipo de campo específico. La siguiente tabla enumera el valor completo
para los tipos de datos estándar:
Divisa 99999999999999.99999
Entero 32,767
Largo 2.147.483.647
Valor La
propiedad Valor se utiliza para recuperar el valor del global. IntelliSense en Visual Studio le
dirá qué tipo de valor se usa para el campo. Los valores globales no se pueden establecer
desde un proyecto de Visual Studio Tools para Microsoft Dynamics GP.
Microsoft.Dexterity.Aplicaciones
Por ejemplo, para acceder a la colección de procedimientos globales en el diccionario de Dynamics, use
la siguiente sintaxis:
Microsoft.Dexterity.Applications.Dynamics.Procedures
Dynamics.Procedures.GetNextFormNoteToOpen
IntelliSense en Visual Studio le dirá a qué procedimiento global en Microsoft Dynamics GP se refiere la
expresión.
Dynamics.Forms.SopEntry.Procedures
IntelliSense en Visual Studio le dirá a qué procedimiento de nivel de formulario en Microsoft Dynamics GP
se refiere la expresión.
Métodos de procedimiento
• Invocar()
Invocar()
El método Invoke() se utiliza para ejecutar el procedimiento especificado. Los parámetros para este método
dependerán del procedimiento que se esté ejecutando. La siguiente tabla enumera los tipos de parámetros para
los procedimientos:
Tipo Descripción
en Los parámetros de tipo "in" se usan solo para pasar valores al procedimiento.
afuera Los parámetros de tipo "out" se usan solo para pasar valores fuera del procedimiento.
En fuera Los parámetros de tipo "inout" se utilizan para pasar valores al procedimiento y para pasar
valores fuera del procedimiento.
IntelliSense en Visual Studio le indicará el tipo de cada parámetro para un procedimiento. También le dirá el tipo
de datos de cada parámetro, como decimal o cadena.
Puede consultar el SDK de Microsoft Dynamics GP para obtener detalles sobre los procedimientos disponibles
para invocar. Algunos procedimientos en Microsoft Dynamics GP tienen definidos parámetros opcionales. Visual
Studio Tools no admite parámetros opcionales. Debe proporcionar todos los parámetros para un procedimiento
cuando lo invoca desde Visual Studio Tools.
Eventos de procedimiento
Dynamics.Procedures.AddSuccessfulLoginRecord.InvokeAfterOriginal +=
nuevo AddSuccessfulLoginRecordProcedure.InvokeEventHandler(
AddSuccessfulLoginRecord_InvokeAfterOriginal);
• Los argumentos de evento pasados al controlador de eventos para los eventos de procedimiento se enumerarán
los parámetros disponibles y sus tipos de datos.
• La sección Parámetros para Microsoft Dynamics GP del SDK de Microsoft Dynamics GP contiene una lista
completa de los parámetros para los procedimientos en Microsoft Dynamics GP y varios diccionarios de
integración. Los documentos de parámetros en esta sección del SDK también enumeran los nombres
de los parámetros, lo que puede ser útil para determinar cómo se usan los parámetros.
Le recomendamos que evite cambiar los valores de los parámetros en los procedimientos de Microsoft
Dynamics GP. Cambiar los valores de los parámetros puede alterar significativamente el funcionamiento de
Microsoft Dynamics GP.
Procedimientos invocables
Con esta versión de Visual Studio Tools para Microsoft Dynamics GP, no se pueden invocar todos los
procedimientos. No podrán invocarse procedimientos con las siguientes características:
Si esta versión de Visual Studio Tools no puede ejecutar un procedimiento, no se incluirá en las listas
de procedimientos que muestra IntelliSense en Visual Studio.
Microsoft.Dexterity.Aplicaciones
Por ejemplo, para acceder a la colección de funciones globales en el diccionario de Dynamics, use
la siguiente sintaxis:
Microsoft.Dexterity.Applications.Dynamics.Functions
Dynamics.Functions.GetCurrentDirectory
IntelliSense en Visual Studio le dirá a qué función global en Microsoft Dynamics GP se refiere la
expresión.
Dynamics.Forms.SopEntry.Functions
IntelliSense en Visual Studio le dirá a qué función de nivel de formulario en Microsoft Dynamics GP
se refiere la expresión.
métodos de función
Las funciones proporcionan el siguiente método:
• Invocar()
Invocar()
El método Invoke() se utiliza para ejecutar la función especificada. Los parámetros para este método
dependerán del procedimiento que se esté ejecutando. La siguiente tabla enumera los tipos de parámetros
para las funciones:
Tipo Descripción
en Los parámetros de tipo "in" se usan solo para pasar valores a la función.
afuera Los parámetros de tipo "out" se usan solo para pasar valores fuera de la función.
En fuera Los parámetros de tipo "inout" se utilizan para pasar valores a la función y para pasar
valores fuera de la función.
El método Invoke() tendrá un valor de retorno al que se devolverá el valor de retorno de la función.
IntelliSense en Visual Studio le indicará el tipo de cada parámetro y el valor de retorno de una función.
También le dirá el tipo de datos de cada parámetro y el valor devuelto, como decimal o cadena.
cadena directorioActual;
directorioActual = Dynamics.Functions.GetCurrentDirectory.Invoke();
Puede consultar el SDK de Microsoft Dynamics GP para obtener detalles sobre las funciones disponibles
para invocar. Algunas funciones en Microsoft Dynamics GP tienen parámetros opcionales definidos. Visual
Studio Tools no admite parámetros opcionales. Debe proporcionar todos los parámetros para una función
cuando la invoca desde Visual Studio Tools.
Eventos de función
Las funciones proporcionan los siguientes eventos:
UserDefaultsForm.Functions.GetAutoComplete.InvokeAfterOriginal +=
nuevo SyUserDefaultsForm.GetAutoCompleteFunction.InvokeEventHandler(
GetAutoComplete_InvokeAfterOriginal);
// Establecer el valor de retorno para desactivar siempre el autocompletado para el usuario de DYNSA
if ( p . inParam1 == " DYNSA " )
{
e.resultado = falso;
}
}
Cuando invoque una función o use eventos de función, deberá trabajar con los parámetros y
devolver el valor de la función.
• Al invocar una función, IntelliSense enumera los parámetros y el valor devuelto, junto con sus
tipos de datos.
• Los argumentos de eventos que se pasan al controlador de eventos para eventos de función
enumerarán los parámetros disponibles y el valor devuelto, junto con sus tipos de datos.
• La sección Parámetros para Microsoft Dynamics GP del SDK de Microsoft Dynamics GP contiene
una lista completa de los parámetros y valores devueltos para las funciones en Microsoft
Dynamics GP y varios diccionarios de integración. Los documentos de parámetros en esta
sección del SDK también enumeran los nombres de los parámetros y valores devueltos, lo
que puede ser útil para determinar cómo se usan los parámetros y el valor devuelto.
Le recomendamos que evite cambiar los parámetros y los valores devueltos en las funciones de
Microsoft Dynamics GP. Cambiar el parámetro y los valores devueltos puede alterar significativamente
el funcionamiento de Microsoft Dynamics GP.
Funciones invocables
Con esta versión de Visual Studio Tools para Microsoft Dynamics GP, no se pueden invocar todas las
funciones. No se pueden invocar funciones con las siguientes características:
• Si un campo compuesto utilizado como parámetro de función contiene un valor de referencia, esa
función no se puede invocar.
Si una función no se puede ejecutar con esta versión de Visual Studio Tools, no se incluirá en las listas
de funciones que muestra IntelliSense en Visual Studio.
• Tipos de compuestos
• Acceso a compuestos •
Métodos de campos compuestos
• Propiedades de campos
compuestos • Eventos de campos compuestos
Tipos compuestos
Cuando accede a recursos compuestos desde un diccionario, cada compuesto tendrá varios tipos definidos
para él. Cada tipo se usa en situaciones específicas en Microsoft Dynamics GP. La siguiente tabla describe
los tipos compuestos.
En la mayoría de los casos, IntelliSense le dirá qué tipo de compuesto se requiere para una situación
específica.
Acceso a compuestos
Los compuestos se pueden mostrar como campos en las ventanas y se accede a ellos como propiedades de
la ventana o de la ventana de desplazamiento en la que están contenidos. Los compuestos también se
pueden usar para crear variables que se pasan como parámetros para procedimientos y funciones.
Dynamics.Forms.GlAccountMaintenance.GlAccountMaintenance.AccountNumberCs
Variables En
algunos casos, es posible que desee recuperar el valor de un compuesto y usarlo como
una variable en su integración con Visual Studio Tools. Puede crear una instancia del
compuesto y luego establecer el valor de la variable compuesta.
Parámetros Puede
crear variables compuestas y pasarlas como parámetros para procedimientos y
funciones. Se debe utilizar como parámetro una variable basada en el tipo compuesto
de "solo lectura". Para crear una variable compuesta de "solo lectura", primero debe
crear una variable basada en el tipo compuesto de "datos".
Microsoft.Dexterity.Applications.DynamicsDictionary.AccountNumberComposite
Datos accountNumberData = new AccountNumberCompositeData();
NúmeroDeCuentaDatos[0] = "000";
NúmeroDeCuentaDatos[1] = "1100";
NúmeroDeCuentaDatos[2] = "00";
numeroDeCuentaDatos[3] = "";
Componentes Para
acceder a los componentes individuales de la mayoría de los compuestos, puede
utilizar las propiedades del compuesto. El compuesto tendrá una propiedad para
cada componente del compuesto.
• Limpiar() •
Deshabilitar() •
Habilitar()
•
Rellenar() •
Foco() • ForceValidate()
• Ocultar() •
Bloquear() •
EjecutarValidar() •
Mostrar() •
Desbloquear()
Claro()
El método Clear() establece cada componente del compuesto en su valor borrado. La siguiente tabla
enumera el valor borrado para los tipos de datos estándar:
Divisa 0
Entero 0
Largo 0
Desactivar()
El método Disable() hace que el campo compuesto aparezca en un estado deshabilitado y evita que el
usuario realice cambios en el campo.
Permitir()
El método Enable() permite que un campo compuesto previamente deshabilitado reciba la entrada del
usuario.
Llenar()
El método Fill() establece cada componente del compuesto en su valor de relleno. La siguiente tabla
enumera el valor completo para los tipos de datos estándar:
Divisa 99999999999999.99999
Entero 32,767
Largo 2.147.483.647
Enfocar()
El método Focus() mueve el foco al campo compuesto.
Forzar Validación ()
El método ForceValidate() controla si el evento de validación ocurrirá cuando el enfoque abandone el
campo compuesto. Si ocurre el evento de validación, se ejecutará cualquier código de validación para el
campo compuesto. Este método toma un parámetro booleano.
Proporcionar el valor verdadero obliga a que ocurra el evento de validación. Al proporcionar el valor falso,
se borra cualquier llamada anterior para forzar que ocurra el evento de validación.
Esconder()
El método Hide() hace que el campo compuesto se vuelva invisible e inaccesible para el usuario.
El método Lock() hace que un campo compuesto se vuelva inaccesible para el usuario. La apariencia del
campo no cambiará.
EjecutarValidar()
El método RunValidate() hace que cualquier código de validación para el campo compuesto sea
correr.
Espectáculo()
El método Show() hace que un campo compuesto previamente oculto se vuelva visible y accesible para el
usuario.
Desbloquear()
El método Unlock() hace que un campo compuesto previamente bloqueado se vuelva accesible para el
usuario.
• EstáVacío •
EstáLleno •
Longitud •
Valor
IsEmpty La
propiedad IsEmpty devuelve el valor verdadero cuando el valor del campo compuesto está vacío para el
tipo de campo específico. La siguiente tabla enumera el valor vacío para los tipos de datos estándar:
Divisa 0
Entero 0
Largo 0
IsFilled La
propiedad IsFilled devuelve el valor verdadero cuando el valor del campo compuesto se establece en el
valor máximo para el tipo de campo específico. La siguiente tabla enumera el valor completo para los
tipos de datos estándar:
Divisa 99999999999999.99999
Entero 32,767
Largo 2.147.483.647
Longitud La
propiedad Longitud se utiliza para recuperar el número de componentes en el campo
compuesto.
Valor La
propiedad Valor se utiliza para establecer o recuperar el valor del campo compuesto. IntelliSense en
Visual Studio le dirá qué tipo de valor se usa para el campo.
• Cambiar •
Introducir antes del original •
Introducir después del original
• Dejar antes del original • Dejar
después del original • Validar
antes del original • Validar después
del original
Los compuestos del tipo "con eventos" proporcionan estos eventos para el compuesto como un solo campo.
Los compuestos del tipo “con eventos completos” suministran estos eventos para el compuesto como un solo
campo, y también para cada uno de los componentes del compuesto.
Cambio Este
evento ocurre cuando cambia el valor del compuesto o componente, como cuando lo establece
el usuario o lo cambia otro código en Microsoft Dynamics GP.
PAR
EJE
INT
DE
4:
Machine Translated by Google
• El Capítulo 26, “Valor predeterminado de campo”, describe un ejemplo que usa eventos para valores de
campo predeterminados en Microsoft Dynamics GP.
• El Capítulo 27, "Estimación del flete", describe un ejemplo que estima el flete
importes para documentos de ventas en Microsoft Dynamics GP.
• El Capítulo 28, "Detalles ambientales ", describe un ejemplo que almacena información detallada ambiental
adicional para elementos en Microsoft Dynamics GP.
• El Capítulo 29, "Búsquedas", describe un ejemplo que muestra cómo se implementan seis búsquedas
comunes para una integración de Visual Studio Tools.
La siguiente tabla indica qué funciones de Visual Studio Tools para Microsoft Dynamics GP se implementan
en cada muestra.
Eventos de campo X X X X
Eventos de formulario X X
Acceso a procedimientos/funciones X
Acceso a la mesa X X
Integración DUOS X
Integración de notas X
búsquedas X
Ayuda en linea X
• Información
general • Ejecución de la aplicación de
ejemplo • Cómo se utilizó Visual Studio Tools
Descripción general
Esta aplicación de muestra se integra con la ventana de mantenimiento del cliente en Microsoft
Dynamics GP. Automáticamente establece valores predeterminados para los campos Ciudad y
Estado cuando el usuario proporciona un código postal conocido.
Esta muestra utiliza un conjunto fijo de códigos postales y los valores de ciudad y estado
correspondientes. Una aplicación real usaría un conjunto más extenso.
• Aplicación.Dinámica •
Microsoft.Dexterity.Bridge
5. Genere la aplicación.
En el menú Generar, elija Generar solución. Si no hay errores de compilación, se compilará el
ensamblado para la aplicación Field Defaulter.
02109 58104
53151 58474
55111 60605
56560 85012
58078 95014
58102 98052
58103
Esta aplicación de ejemplo utiliza las funciones de acceso a recursos y eventos de Visual Studio
Tools para Microsoft Dynamics GP.
Recursos accedidos
El ejemplo de Field Defaulter utiliza los siguientes recursos en el diccionario de Dynamics:
Formularios
• RmCustomerMantenimiento
ventanas
• RmCustomerMantenimiento
Eventos
El ejemplo Field Defaulter registra el siguiente evento en Microsoft Dynamics GP:
• Un evento de cambio para el campo Código postal en la ventana Mantenimiento del cliente, que
se usa para buscar el valor ingresado. Si se puede encontrar la ciudad y el estado para el valor
del código postal ingresado, su valor se establece automáticamente en la ventana.
• Información
general • Ejecución de la aplicación de
ejemplo • Cómo se utilizó Visual Studio Tools
Descripción general
Esta aplicación de muestra se integra con la ventana Entrada de transacciones de ventas en Microsoft
Dynamics GP. Recupera información sobre el peso de envío de los artículos en el documento de
ventas actual, calcula un peso de envío estimado para todos los artículos y luego estima el costo del
flete. El valor estimado del flete se coloca en el campo Flete de la ventana Entrada de transacción de
ventas.
La ventana Estimar
flete estima el flete para el
documento de ventas
actual.
Este ejemplo utiliza un conjunto fijo de métodos de envío y tarifas de envío. Una aplicación real usaría
una tabla de tarifas más extensa y posiblemente un servicio web para acceder a las tarifas de flete.
El ejemplo de Estimar flete usa las capacidades de acceso a tablas de Visual Studio Tools para
acceder a datos en Microsoft Dynamics GP.
• Aplicación.Dinámica •
Microsoft.Dexterity.Bridge •
Microsoft.Dexterity.Shell
5. Genere la aplicación.
En el menú Generar, elija Generar solución. Si no hay errores de compilación, se compilará el
ensamblado para la aplicación de estimación de flete.
Esta aplicación de ejemplo usa varias funciones de Visual Studio Tools para Microsoft Dynamics GP
para implementar esta integración.
Interfaz de usuario El
WinForm especial disponible para los complementos de Dynamics GP se usó al crear la ventana
Estimar flete. También se utilizaron los botones e imágenes personalizados.
El ejemplo ilustra la técnica que se puede utilizar para implementar notas a nivel de ventana y el
enlace de ayuda en línea.
Recursos accedidos
El ejemplo de Estimar flete usa muchos recursos en el diccionario de Dynamics:
Formularios
• SOPEntry •
FormNote1 •
FormNote2 •
FormNote3 •
FormNote4 •
FormNote5
Windows •
SOPEntrada
Procedimientos globales
• CheckForNote •
CheckNoteIdString •
ObtenerNextFormNoteToOpen
Mesas
Se accede a los datos de las siguientes tablas para calcular el flete estimado para el documento de ventas actual:
Eventos
El ejemplo de Estimar flete registra los siguientes eventos en Microsoft Dynamics
médico de cabecera:
• Un evento de controlador de menú para el formulario Entrada de transacción de ventas, que se utiliza para abrir el
Ventana Estimar flete.
• Un evento de cierre de formulario en el formulario Entrada de transacción de ventas, que se usa para indicar cuándo
la ventana Entrada de transacciones de ventas se ha cerrado.
• Un evento de observación para el campo Número SOP en la ventana Entrada de transacción de ventas, que se
utiliza para mantener actualizada la ventana Estimar flete con el documento de ventas actual.
• Un evento de entrada para el campo Flete en la ventana Entrada de transacción de ventas, que se usa para
preguntar al usuario si desea estimar el monto del flete si no se ha proporcionado un valor.
• Varios eventos de cierre de formulario para los diversos formularios de "Nota" en Microsoft Dynamics GP,
utilizados para mantener actualizado el botón Nota en la ventana Estimar flete.
• Información
general • Ejecución de la aplicación de
ejemplo • Cómo se utilizó Visual Studio Tools
Descripción general
La ventana Detalles
ambientales rastrea la
información ambiental para
el artículo de inventario actual.
Esta muestra también implementa la compatibilidad con el sistema de macros, lo que permite grabar
y reproducir macros para esta ventana.
• Aplicación.Dinámica •
Microsoft.Dexterity.Bridge •
Microsoft.Dexterity.Shell
5. Genere la aplicación.
En el menú Generar, elija Generar solución. Si no hay errores de compilación, se compilará
el ensamblado para la aplicación Detalles ambientales.
9. Muestre un elemento.
Puede mostrar un elemento existente o crear uno nuevo.
Esta aplicación de ejemplo usa varias funciones de Visual Studio Tools para Microsoft Dynamics
GP para implementar esta integración.
Interfaz de usuario El
WinForm especial disponible para los complementos de Dynamics GP se usó al crear la ventana
Detalles ambientales.
Recursos accedidos
El ejemplo de Estimar flete usa muchos recursos en el diccionario de Dynamics:
Formularios
• IvItemMaintenanceForm
ventanas
• IvVentana de mantenimiento de elementos
Mesas
Los datos para la integración se almacenan en la siguiente tabla:
• SyUserObjectStoreTable (DUOS)
Esta es la misma tabla utilizada por VBA para almacenar datos. La clase DUOSHelper del ejemplo de detalles
ambientales contiene métodos que se utilizan para escribir, recuperar y eliminar filas de la tabla DUOS.
Eventos
El ejemplo de detalles ambientales registra los siguientes eventos en Microsoft
Dinámica GP:
• Un evento de controlador de menú para el formulario Mantenimiento de artículos, que se utiliza para mostrar el
Formulario de detalles ambientales.
• Un evento de apertura de formulario en el formulario Mantenimiento de artículos, utilizado para crear una
instancia del formulario Detalles ambientales.
• Un evento de cierre de formulario en el formulario Mantenimiento de artículos, que se utiliza para indicar
cuándo se ha cerrado la ventana Mantenimiento de artículos. Este evento cierra el formulario Detalles
ambientales y lo elimina de la memoria.
• Un evento de cambio para el campo Número de artículo en la ventana Mantenimiento de artículos, que se usa
para mantener actualizada la ventana Detalles ambientales con el artículo actual que se muestra.
• Un evento de cambio para el campo Descripción del elemento en la ventana Mantenimiento del elemento, que
se utiliza para mantener actualizada la ventana Detalles ambientales con el elemento actual que se muestra.
• Un evento de cambio para el campo Guardar registro en la ventana Mantenimiento de elementos, que se
utiliza para guardar los detalles ambientales cuando el usuario guarda el elemento.
• Un evento de diálogo modal posterior para la ventana Mantenimiento de elementos, que se utiliza para
recuperar la respuesta cuando el usuario confirma si eliminará el elemento actual. Si el usuario elige
eliminar el elemento actual, también se elimina la información de detalles ambientales correspondiente.
• Información
general • Ejecución de la aplicación de
ejemplo • Cómo se utilizó Visual Studio Tools
Descripción general
Esta aplicación de ejemplo demuestra cómo implementar formularios de búsqueda comunes en una
integración de Visual Studio Tools. Consulte el Capítulo 14, "Uso de búsquedas", para obtener
detalles sobre cómo implementar búsquedas.
• Número de cliente • ID de
proveedor •
Número de artículo •
Número de cuenta del LM •
Número de documento SOP •
Número de documento POP
.
• Aplicación.Dinámica •
Aplicación.SmartList •
Microsoft.Dexterity.Bridge •
Microsoft.Dexterity.Shell
5. Genere la aplicación.
En el menú Generar, elija Generar solución. Si no hay errores de compilación, se compilará el
ensamblado para la aplicación Lookups.
Esta aplicación de ejemplo utiliza las funciones básicas de Visual Studio Tools para Microsoft
Dynamics GP.
Interfaz de usuario El
WinForm especial disponible para los complementos de Dynamics GP se utilizó al crear la ventana
de búsquedas.
Recursos accedidos
El ejemplo de búsquedas utiliza los siguientes recursos en los diccionarios Dynamics y SmartList:
Formularios
• AboutBox •
Compuestos •
AccountNumberCompositeData
Eventos
El ejemplo de búsquedas registra los siguientes eventos en Microsoft Dynamics GP:
• Un evento de controlador de menú para el formulario AboutBox, que se utiliza para abrir las búsquedas
ventana.
• Un evento de clic para el campo SelectButton en cada una de las ventanas de búsqueda, para notificar
a la muestra de búsquedas que el usuario hizo clic en el botón Seleccionar.
Búfer Un
formularios modificados
área de almacenamiento temporal en la memoria de
Formularios en la aplicación de Microsoft Dynamics GP
una computadora. El tiempo de ejecución de
que contienen modificaciones realizadas con el Modificador.
Microsoft Dynamics GP utiliza varios tipos de búfer,
como búfer de tabla y búfer de ventana.
Una banda dibujada en la parte superior de una ventana Un método de bloqueo que permite a otros usuarios
de Microsoft Dynamics GP. Los controles como los botones acceder y realizar cambios en la fila.
Microsoft.Dexterity.Bridge.dll que proporciona acceso campo del grupo de campos que componen una
a eventos en Microsoft Dynamics GP, así como a clave para una tabla.
los recursos en los diccionarios de la aplicación. Área de estado
Un área en la parte inferior de una ventana de Microsoft
en un diccionario de aplicación. La clase está disponible navegación, los botones de notas y los botones de ayuda
Diccionario de formas
El diccionario en una instalación de Microsoft Dynamics
GP que contiene los formularios modificados para una
aplicación. Cada diccionario de aplicación puede tener un
diccionario de formularios.
Campos globales
Un tipo de campo que se puede usar en cualquier
formulario o tabla en Microsoft Dynamics GP.
acceder 73 usando try. ..atrapar con método de campo de ventana 100 32 referencia de control 29
12 instalando 7 32 cuadros de
ClickBeforeOriginal, evento de campo de ventana
convención de 102 texto 31 convenciones, en la documentación 3
nomenclatura 33 Ventana Estado de personalización 70
Clonar(), método de tabla 105
reemplazando Close()
D
el nombre 36 referencias a 37 método de formulario
haciendo referencia al 87 método de tabla 105 DAG.exe, consulte Dictionary Assembly Generator
ensamblado principal Depuración,
método de ventana 89
de la aplicación 36 enviado con Visual configuración de la solución 66 depuración
Evento de formulario
Studio Tools 12 CloseAfterOriginal adjunta a un
firmando 35 qué usar 33 arquitectura, para Visual 88 evento de ventana 90 proceso 69 capítulo 6970 examen
para acceder a los recursos del diccionario excepciones 73 parámetros opcionales 120 tipos
38 manejo de formas modificadas y alternativas 73 de parámetros 120
recursos de diccionario parámetros para 121
accediendo 37 referencia de recursos 119
nombres para acceder 38, 39 variable para 131 ejemplo de integración 131 GetFirst(), método de tabla 106
39 trabajar con 84 uso de Visual Studio Tools 132 campos GetLast(), método de tabla 106
globales GetNext(), método de tabla 106
detalles ambientales 115 descritos 115 búferes de de campo compuesto 126 método de
campo de ventana 100
137 ejecución tablas de nivel de
137 integración de muestra 137 formulario que acceden
uso de Visual Studio Tools 138 a 103 I
Implementación del soporte de macros, capítulo
errores, para operaciones de tabla 54 descritos 48, 103 formularios que
7578
Descripción general de acceden a través
Estimar flete 133 del código 85 Método Initialize(), para registrar eventos
41
ejecución 133 capítulo 85 88
instalación
integración de muestra 133 uso eventos para 88
de Visual Studio Tools 134 métodos para 85 propiedades capítulo 710
SDK de herramientas de Visual Studio 7
argumentos de eventos, al reproducir macros 76 eventos para 87 referencia de
Conceptos básicos de integración, capítulo 1113
recursos 85 formularios diccionarios
Ejemplos de integración, partes 130143
cancelar eventos 44 capítulo ensamblados de aplicaciones para 33
ensamblados integraciones
4145 deshabilitar
construyendo
70 argumentos de aplicaciones para 71 definidos 145 ensamblados de aplicaciones de generación para
35 66 depurando 69
de eventos 43 descripción
general 41 función, eventos para 120 implementando
67 configurando información de ensamblado 65
registrarse 41 Funciones, propiedad de formulario 87
funciones IntelliSense, tabla de información en 48
registrarse con código C# 41
Archivos XML de IntelliSense
registrarse con código Visual Basic 42 responder a cambiar valores de parámetros 122 cambiar
descritos 12
43 valores de retorno 122
generando 34
propiedad bloqueo
O
Open()
de formulario IsOpen bloqueo activo 59
método de formulario
87 propiedad de ventana 89 escenarios multiusuario 59
87 método de ventana 89
bloqueo pasivo 59
k liberación de bloqueos
Evento de formulario
OpenAfterOriginal
Clave, propiedad de tabla 107 59 filas 59
88 evento de ventana 90
claves búsquedas
definidas 145 disponibles para usar en Visual Studio OpenBeforeOriginal
para tablas 50 formulario evento
88 ventana evento 90
segmentos para 50 Herramientas
control de concurrencia optimista, descrito
80 ejemplo 80
L 59
operación de 79 utilizando ventanas de búsqueda existentes 79
controles de optimización, generación de ensamblado de
Integración de muestra
etiquetas aplicaciones 36
de búsquedas 141
descritos 32 campo
descripción
vinculado 32
general 141
archivo de inicio Parámetros P
ejecución 141 uso de Visual Studio Tools 142
para funciones 121
definido 145 utilizado por Dictionary Assembly
Generador 35 M para procedimientos 117
Evento de campo parámetros opcionales 116, 120
macro admite
compuesto LeaveAfterOriginal 128 bloqueos pasivos
procesos asincrónicos 78 para
evento de campo de ventana 102 definidos 145
formularios de Visual Studio Tools 75
descritos 59
LeaveBeforeOriginal evento sintaxis de macros 75
de campo compuesto 128 evento descripción liberación 59
de campo de ventana 102 Método PlayMacroItem(), anulando 76 requisitos
general 75 reproducción
Longitud, propiedad de campo compuesto 127 previos, para usar Visual Studio Tools para
de macros 76 grabación de
símbolo de bombilla 3 Microsoft Dynamics GP 2 PrintAfterOriginal,
macros 75 diccionario
LineChangeAfterOriginal, desplazamiento evento de ventana 90 PrintBeforeOriginal, evento
principal generación de ensamblado de aplicaciones para
evento de ventana 97 35 de ventana 90 Procedimientos, propiedad de
LineChangeBeforeOriginal, evento de ventana de formulario 87 procedimientos que
reemplazando el nombre del ensamblado
desplazamiento 97 de la cambian
LineDeleteAfterOriginal, desplazamiento valores de parámetros 117 capítulo
aplicación 36 notas
evento de ventana 97 115118 eventos
al margen 3 menús, agregando al menú Adicional 85
para 116
LineDeleteBeforeOriginal, desplazamiento Eventos de Microsoft Dynamics
evento de ventana 97 GP en 41 tablas procedimientos invocables 118
LineEnterAfterOriginal, evento de ventana de 47 parámetros de aprendizaje 117
desplazamiento 96 métodos para 115
Microsoft Dynamics GP SDK instalando
LineEnterBeforeOriginal, desplazamiento parámetros opcionales 116 tipos
información de
evento de ventana 96 2 tablas en 48 de parámetros 116
LineFillAfterOriginal, evento de ventana de parámetros para 117
Formas modificadas y alternativas, capítulo
desplazamiento 96 referencia de recursos 115
7173
LineFillBeforeOriginal, evento de ventana de formularios proceso, adjunto a Dynamics.exe para depuración
desplazamiento 95 69 ID de producto ,
modificados accediendo con el código 71
definido 145
soporte de productos, para proyectos de Visual Studio integraciones de muestra (continuación) tablas (continuación)
Tools para Microsoft Dynamics GP 3 Estimar flete 133 Field en Microsoft Dynamics GP 47 claves
agregando Defaulter 131 instalar 7 para 50
un formulario de Dynamics GP a 25 creando Búsquedas 141 aprender sobre 47
para Visual Studio Tools 12 Save(), método métodos para 104
tablas accediendo a través de código 48, 103 propiedad de campo compuesto de valor 127
a formularios modificados 71
arquitectura 11
capacidades 11
componentes instalados 9
creación de interfaz de usuario 25
componentes de desarrollo 12 requisitos
previos 2 proyectos,
creación de 12 componentes
de tiempo de ejecución 11
Instalación SDK 7 soporte
técnico 3
símbolo de advertencia
3 campos de
para 99 propiedades
para 101 referencia de
recurso 99
para 89 propiedades
para 89 referencia de recurso 89
WinForms
agregando controles a 27
agregando a un proyecto 25
capítulo 2527
propiedades para 26
Trabajar con tablas, capítulo 4763
X
Archivos XML, para IntelliSense 12