Métodos de formulario

Completado

Los formularios son elementos principales del desarrollo de finanzas y operaciones. Muchos formularios estándar ya están disponibles en la aplicación.

No obstante, también puede crear formularios nuevos. Cada formulario consta de métodos de formulario, que se pueden clasificar como métodos estándar o personalizados. Los métodos estándar deben tener una llamada super() para implementar el método principal. Los métodos estándar y personalizados están disponibles con todos los formularios estándar y personalizados. Puede ampliar los métodos de formulario existentes e incluir código mediante la cadena de mando.

Métodos de formulario estándar

En las siguientes secciones se explican los métodos de formulario estándar de la plataforma de desarrollo de aplicaciones de finanzas y operaciones.

init()

El método init() es un método estándar al que se llama cuando se abre un formulario. Este método ayuda a inicializar el formulario y se ejecuta después del método de constructor new(). El método init() es responsable de crear la interfaz de tiempo de ejecución del formulario. Principalmente, usará este método cuando necesite:

  • Inicializar las variables de nivel de formulario.
  • Obtener parámetros de args().
  • Inicializar una consulta de origen de datos.
  • Establecer las propiedades de los controles que no dependen del registro.

Ejemplo

Tiene un formulario personalizado con una tabla denominada TrainingMaster. La tabla tiene un campo de tipo de enumeración denominado TrainingType con dos valores: En línea y Presencial. El formulario debe abrirse con aquellos registros en los que TrainingType sea En línea.

El patrón del código es el siguiente:

public void init()
{
        super();
        TrainingMaster_ds.query().dataSourceName("TrainingMaster")
        .addRange(fieldNum(TrainingMaster,TrainingType))
        .value(enum2Str(TrainingType::Online));
}

Nota

Deben realizarse modificaciones en el origen de datos solo después de la llamada super(), ya que la inicialización básica tiene lugar ahí.

close()

El método close() es un método estándar al que se llama cuando se cierra un formulario. La llamada super() en este método cierra el formulario, administra las actualizaciones de la base de datos y establece el método closed() en true. Puede usar los métodos closeCancel() o closeOK() para iniciar el método close(). Además, puede utilizar el método close() para borrar forzosamente los valores de alguna variable o para desasignar una clase. Asegúrese de completar estas acciones antes de la llamada super(). Con frecuencia, se llaman a las clases NumberSequence desde el método close() para facilitar una operación de cancelación.

closeCancel()

El método closeCancel() es un método estándar al que se llama cuando se cancela un formulario. La llamada super() en este método actualiza el valor booleano de closedCancel() y se asegura de que no se guarden las modificaciones en el formulario.

closeOK()

El método closeOK() es un método estándar al que se llama cuando se cierra un formulario. Para ello, es necesario seleccionar el botón Aceptar. La llamada super() en este método actualiza el valor booleano de closedOK() y llama al método close().

run()

El método run() es un método estándar al que se llama inmediatamente después del método init(). La llamada super() en este método hace que la ventana de formulario aparezca en la pantalla y realiza un búsqueda en la base de datos de los datos que se mostrarán en el formulario.

Entre las razones típicas para anular este método se incluyen:

  • La activación o desactivación de algunos campos.
  • La modificación de la consulta.

Métodos de origen de datos de formulario estándar

En las siguientes secciones se explican los métodos de origen de datos de formulario estándar de la plataforma de desarrollo de aplicaciones de finanzas y operaciones.

init()

El método init() es un método estándar de un origen de datos de formulario al que se llama cuando se abre un formulario después de la implementación del método init() de formulario. Este método ayuda a crear una consulta de origen de datos basada en las propiedades de dicho origen.

Ejemplo

Tiene un formulario personalizado con una tabla denominada TrainingMaster. La tabla tiene un campo de tipo de enumeración denominado TrainingType con dos valores: En línea y Presencial. El formulario debe abrirse con aquellos registros en los que TrainingType sea En línea.

El patrón del código debería ser el siguiente:

[DataSource]
class TrainingMaster
    {

        public void init()
        {
            super();
            this.query().dataSourceName("TrainingMaster")
            .addRange(fieldNum(TrainingMaster,TrainingType))
            .value(enum2Str(TrainingType::Online));
        }
    }

active()

El método active() es un método estándar de un origen de datos de formulario al que se llama cuando un usuario navega a un registro nuevo.

Ejemplo

Tiene un formulario personalizado con una tabla denominada TrainingMaster. La tabla tiene un campo denominado Ubicación y un campo de tipo de enumeración denominado TrainingType con dos valores: En línea y Presencial. Mientras navega por los registros, el campo Ubicación no podrá modificarse si TrainingType es En línea. De lo contrario, el campo Ubicación podrá editarse.

El patrón del código debería ser el siguiente:

[DataSource]
class TrainingMaster
    {
        public int active()
        {
            int ret;
        
            ret = super();
            TrainingMaster_ds.object(fieldNum(TrainingMaster, 
            Venue)).allowEdit(TrainingMaster.TrainingType == TrainingType::Classroom);
        
            return ret;
        }
    }

validateWrite()

El método validateWrite() es un método estándar de un origen de datos de formulario al que se llama cuando un usuario intenta guardar un registro para determinar si los datos son válidos y están listos para escribirse.

Ejemplo

Tiene un formulario personalizado con una tabla denominada TrainingMaster. La tabla tiene un campo de fecha denominado TrainingDate. No se deben permitir datos de formación retroactivos.

El siguiente patrón de código puede ser una forma de lograr este resultado:

[DataSource]
class TrainingMaster
    {
        public boolean validateWrite()
        {
            boolean ret;
        
            ret = super() && (TrainingMaster.TrainingDate >= today());
        
            return ret;
        }
    }

Nota

No quiere dejar que se produzca un error en el método validateWrite() sin un mensaje indicando el motivo. Un procedimiento recomendado sería generar un error con un mensaje específico en lugar de usar el retorno booleano de la instrucción if.

validateDelete()

El método validateDelete() es un método estándar de un origen de datos de formulario al que se llama cuando un usuario intenta eliminar un registro, es decir, para confirmar la eliminación.

Ejemplo

Tiene un formulario personalizado con una tabla denominada TrainingMaster. La tabla tiene un campo de fecha denominado TrainingDate. No se deben eliminar datos de formación retroactivos.

El siguiente patrón de código puede ser una forma de lograr este resultado:

[DataSource]
class TrainingMaster
    {
        public boolean validateDelete()
        {
            boolean ret;
        
            ret = super() && (TrainingMaster.TrainingDate >= today());
        
            return ret;
        }
    }

Nota

Debería generar un error con un mensaje en lugar de dejar que se produzca un error de forma silenciosa en el método validateDelete().

executeQuery()

El método executeQuery() es un método estándar de un origen de datos de formulario que ejecuta la consulta del origen de datos y muestra los registros recuperados. Puede aplicar un filtro en el origen de datos que usa una consulta mediante el reemplazo de executeQuery(). La principal diferencia entre este método y el método init() es que el método init() se ejecuta una vez durante la apertura del formulario, mientras que el método executeQuery() se ejecuta cada vez que se actualiza el formulario.

Ejemplo

Tiene un formulario personalizado con una tabla denominada TrainingMaster. La tabla tiene un campo de tipo de enumeración denominado TrainingType con dos valores: En línea y Presencial. Los datos del formulario solo deben filtrarse con la opción TrainingType establecida en En línea.

[DataSource]
class TrainingMaster
    {
        public void executeQuery()
        {
            QueryBuildDataSource  queryBuildDataSource;
 
            queryBuildDataSource = 
               this.query().dataSourceTable(tablenum(TrainingMaster));
            queryBuildDataSource.clearRanges();
            queryBuildDataSource.addRange(fieldnum(TrainingMaster, 
               TrainingType)).value(enum2Str(TrainingType::Online));

            super();
        }
    }

initValue()

El método initValue() es un método estándar de un origen de datos de formulario. Mientras inserta un nuevo registro, initValue() puede ayudarlo a inicializar los valores de los campos. Se llama a este método cuando se crea un nuevo registro.

Ejemplo

Tiene un formulario personalizado con una tabla denominada TrainingMaster. La tabla tiene un campo de fecha denominado TrainingDate. Durante la creación de un nuevo registro, el campo TrainingDate debe inicializarse con la fecha de hoy.

El patrón del código puede ser el siguiente:

[DataSource]
class TrainingMaster
    {
        public void initValue()
        {
            super();
            TrainingMaster.TrainingDate = today();
        }
    }

write()

El método write() es un método estándar de un origen de datos de formulario. Se llama a este método cuando se modifica un registro y cuando ha intentado guardarlo seleccionando el botón Guardar o navegando fuera del registro.

Ejemplo

Tiene un formulario personalizado con una tabla denominada TrainingMaster. La tabla tiene un campo real denominado Precio que indica el precio total del instructor. También incluye un campo entero denominado NoofDays que indica la duración de la formación. Además, la tabla tiene un campo denominado TrainerID que crea una clave extranjera con la opción TrainerTable. La opción TrainerTable tiene un campo real denominado Tarifa, que captura la tarifa diaria de los instructores.

Después de haber guardado el registro en la tabla TrainingMaster, el campo Precio de la tabla TrainerMaster debe actualizarse con la multiplicación de NoofDays y Tarifa de la opción TrainerTable.

El patrón de codificación es el siguiente:

[DataSource]
class TrainingMaster
    {
        public void write()
        {
            TrainingMaster.Price = TrainerTable::find(TrainingMaster.TrainerID).Rate * TrainingMaster.NoofDays;
            super();
        }
    }

delete()

El método delete() es un método estándar de un origen de datos de formulario. Se llama a este método cuando se elimina un registro.

Ejemplo

Tiene un formulario personalizado con una tabla denominada TrainingMaster. La tabla tiene un campo denominado TrainerID, que tiene una relación de clave extranjera con la opción TrainerTable. La opción TrainerTable tiene un campo denominado TrainingCount. El requisito es reducir el número de TrainingCount en uno si se elimina un registro de la tabla TrainingMaster.

El patrón del código puede ser el siguiente:

public void delete()
        {
            TrainerTable    trainerTable;
            ttsbegin;
            trainerTable = TrainerTable::find(TrainingMaster.TrainerID, true);
            trainerTable.TrainingCount = trainerTable.TrainingCount - 1;
            trainerTable.update();
            ttscommit;
            super();
            
        }

Métodos de campo de origen de datos de formulario estándar

En las siguientes secciones se explican los métodos de campo de origen de datos de formulario estándar de la plataforma de desarrollo de aplicaciones de finanzas y operaciones.

modified()

El método modified() es un método estándar en el campo del origen de datos de formulario. Se llama a este método cuando se modifica el valor de un determinado campo.

Ejemplo

Tiene un formulario personalizado con una tabla denominada TrainingMaster. La tabla tiene un campo denominado Ubicación y un campo de tipo de enumeración denominado TrainingType con dos valores: En línea y Presencial. Si se selecciona la opción En línea en TrainingType, el campo Ubicación debe quedar en blanco.

El patrón del código puede ser el siguiente:

[DataSource]
class TrainingMaster
    {
        [DataField]
        class TrainingType 
        {
            public void modified()
            {
                super();
                if(TrainingMaster.TrainingType == TrainingType::Online)
                    TrainingMaster.Venue = "";
            }
        }
    }

validate()

El método validate() es un método estándar en el campo del origen de datos de formulario. Se llama a este método cuando se introduce un valor en un determinado campo, y se anula si se necesita una validación de campo adicional.

Ejemplo

Tiene un formulario personalizado con una tabla denominada TrainingMaster. La tabla tiene un campo denominado Participantes, en el que no se permite introducir un número superior a 20.

El patrón del código puede ser el siguiente:

[DataSource]
class TrainingMaster
    {
        [DataField]
        class Participants 
        {
            public boolean validate()
            {
                boolean ret;
                ret = super() && (TrainingMaster.Participants <= 20);
                return ret;
            }
        }
    }

Asegúrese de indicar un motivo para los errores que se generan, tal y como se muestra en el siguiente ejemplo de código:

[DataSource]
class TrainingMaster
    {
        [DataField]
        class Participants 
        {
            public boolean validate()
            {
                boolean ret;
                if (TrainingMaster.Participants > 20)
                {
                    throw error("Maximum 20 participants");
                    return false;
                }
                ret = super();
                return ret;
            }
        }
    }

lookup()

El método lookup() es un método estándar en el campo del origen de datos de formulario. Se llama a este método cuando se intenta realizar una operación de búsqueda en un campo de origen de datos. Si los datos que se muestran en el formulario de búsqueda se deben personalizar con algún filtro, el método lookup() debería anularse.

Ejemplo

Tiene un formulario personalizado con una tabla denominada TrainingMaster. La tabla tiene un campo denominado TrainerID que crea una clave extranjera con la opción TrainerTable. TrainerTable tiene un campo de enumeración denominado Tipo de instructor con dos valores: Técnico y Funcional. La búsqueda en el campo TrainerID solo debe mostrar instructores técnicos.

El patrón del código puede ser el siguiente:

[DataSource]
class TrainingMaster
    {
        [DataField]
        class TrainerID 
        {
            public void lookup(FormControl _formControl, str _filterStr)
            {
                SysTableLookup sysTableLookup = 
                   SysTableLookup::newParameters(tableNum(TrainerTable),_formControl);
                
                Query query = new Query();
                QueryBuildDataSource qbds;
                qbds= query.addDataSource(tableNum(TrainerTable));
                qbds.addRange(fieldNum(TrainerTable, 
                     TrainerType)).value(enum2Str(TrainerType::Technical));

                sysTableLookup.addLookupfield(fieldNum(TrainerTable,TrainerID));
                sysTableLookup.addLookupfield(fieldNum(TrainerTable,TrainerName));

                sysTableLookup.parmQuery(query);
                sysTableLookup.performFormLookup();
            }
        }
    }

Extensión de un método de formulario

La cadena de mando es una opción que le ayuda a mejorar la funcionalidad de un método de formulario. Esta opción es aplicable tanto a métodos estándar como a métodos personalizados del formulario.

Puede usar el siguiente patrón de código si necesita extender el método init() del formulario:

[ExtensionOf(formStr(Currency))]
final class CurrencyForm_Extension
{
    public void init()
    {
        //code
        next init();
        //code
    }
}

Extensión de un método de origen de datos de formulario

La cadena de mando es una opción que le ayuda a mejorar la funcionalidad de un método de origen de datos de formulario. Esta opción es aplicable tanto a métodos estándar como a métodos personalizados del formulario.

Puede usar el siguiente patrón de código si necesita extender el método initValue() del origen de datos de formulario:

[ExtensionOf(FormDataSourceStr(Currency, Currency))]
final class CurrencyFormCurrencyTableDataSource_Extension
{
    public void initValue()
    {
        //code
        next initValue();
        //code
    }
}

Extensión de un método de campo de origen de datos de formulario

La cadena de mando es una opción que le ayuda a mejorar la funcionalidad de un método de campo de origen de datos de formulario. Esta opción es aplicable tanto a métodos estándar como a métodos personalizados del formulario.

Puede usar el siguiente patrón de código si necesita extender el método lookup() de los campos de origen de datos de formulario:

[ExtensionOf(formDataFieldStr(CustTable, CustTable, CustGroup))]
final class CustTableFormDataFieldCustGroup_Extension
{
    public void lookup(FormControl _formControl, str _filterStr)
    {
        //Code
        next lookup(_formControl, _filterStr);
        //Code
    }
}

Extensión de un método de control de formulario

La cadena de mando es una opción que le ayuda a mejorar la funcionalidad de un método de control de formulario. Esta opción es aplicable tanto a métodos estándar como a métodos personalizados del formulario.

Puede usar el siguiente patrón de código si necesita extender el método clicked() del control de botón de formulario:

[ExtensionOf(formControlStr(CustTable, DirPartyEntityAssociationUpdate))]
final class CustTableFormControlDirPartyEntityAssociationUpdate_Extension
{
    public void clicked()
    {
        //code
        next clicked();
        //Code
    }
}