Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... ·...

85
Manual de scripts Velneo V7 7.10

Transcript of Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... ·...

Page 1: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Manual de scriptsVelneo V7 7.10

Page 2: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Scripts

Descripción

Velneo V7 ha integrado en el núcleo de su plataforma la ejecución de scripts. Esto supone una apertura de la plataforma a estándares como EcmaScript

y a otros lenguajes de programación como QML y JavaScript. Esta integración es completa y se puede apreciar en múltiples ámbitos de trabajo como

procesos o fórmulas. Para conseguir esta integración se ha desarrollado un completo API que incluye un conjunto de clases que aportan objetos y

funciones adicionales para facilitar el uso de objetos Velneo V7 y nuevos objetos en estos lenguajes.

Clases

Directorio de scripts

Editor de scripts

Lenguajes

Page 3: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Clases

Page 4: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Clases

Descripción

Para conseguir la integración de Velneo V7 con múltiples lenguajes se ha desarrollado un completo API que incluye un conjunto de clases que aportan

objetos y funciones adicionales para facilitar el uso de objetos V7 y de nuevos objetos en estos lenguajes.

API

El API de Velneo V7 para scripts contempla las siguientes clases:

Lista de clases

Clases de info de V7VProjectInfo

VObjectInfo

VTableInfo

Clases de ventanaVMainWindow

VMdiView

Clases de entorno de ejecuciónVApp

VRoot

Clases de datosVRegister

VRegisterList

VQuery

Clases de discoVDir

VFile

VFileInfo

VTextFile

VXmlWriter

FuncionesFunciones globales

Page 5: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Clase

VProjectInfo

Page 6: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

VProjectInfo

Descripción

Este objeto contiene la información de un proyecto. Tiene funciones para obtener sus propiedades básicas, sus tablas, sus objetos y los proyectos de los

que hereda.

Las funciones de tablas y de objetos que empiezan por “all” nos devuelven todas sus tablas u objetos, incluyendo las de sus proyectos heredados. Las

otras solo las suyas propias.

Funciones

Funciones generales

Funciones de tablas

Funciones de objetos

123456789

1011121314151617181920

// Devuelve el identificador del proyectoString id() // Devuelve el alias del proyectoString alias() // Devuelve el tipo de proyecto (ver enumeraciones)Number type() // Devuelve el nombre del proyectoString name() // Devuelve la versión del proyectoString version() // Devuelve la fecha y hora de último cambio del proyectoDate saved() // Devuelve el número de historia del proyectoNumber history()

123456789

10111213

14151617

// Devuelve el número de tablas del proyecto de datosNumber tableCount() // Devuelve el objeto VTableInfo de una tabla// ‐ szIdPrimeroTabla = Identificador de una tablaVTableInfo tableInfo( String szIdPrimarioTabla ) // Devuelve el objeto VTableInfo de una tabla// ‐ nIndex es el nº ordinal de la tabla en el proyecto de datosVTableInfo tableInfo( Number nIndex ) // Devuelve el número total de tablas de todos los proyectos (incluidos los heredados)Number allTableCount()

// Devuelve el objeto VTableInfo de una tabla// ‐ nIndex es el nº ordinal de la tabla entre todas las tablas de todos los proyectosVTableInfo allTableInfo( Number nIndex )

123456789

101112131415161718192021

// Devuelve el número de objetos de un tipo// Esta función incluye sólo el proyecto en curso// ‐ nObjectType = Tipo de objeto (ver enumeración en la clase ObjectInfo)Number objectCount( Number nObjectType ) // Devuelve un objeto ObjectInfo de un tipo y del número de orden de la lista// Esta función incluye sólo el proyecto en curso// ‐ nObjectType = Tipo de objeto (ver enumeración en la clase ObjectInfo)// ‐ nObjectIndex = Número de orden del objeto en la lista de objetos de ese tipo VObjectInfo objectInfo( Number nObjectType, Number nObjectIndex ) // Devuelve un objeto ObjectInfo del proyecto en curso de un tipo y un identificador// Esta función incluye sólo el proyecto en curso// ‐ nObjectType = Tipo de objeto (ver enumeración en la clase ObjectInfo)// ‐ szIdPrimario = Identificador del objeto VObjectInfo objectInfo( Number nObjectType, String szIdPrimario ) // Devuelve el número de objetos de un determinado tipo// Esta función incluye objetos de todos los proyectos (incluidos los heredados)// ‐ nObjectType = Tipo de objeto (ver enumeración en la clase ObjectInfo)Number allObjectCount( Number nObjectType )

Page 7: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Funciones de herencia

Enumeraciones

Enum de tipos de proyectos

Ejemplos

Ejemplo de funciones generales

Ejemplo de funciones de objetos y de herencia

21222324252627

Number allObjectCount( Number nObjectType ) // Devuelve un objeto ObjectInfo de un tipo y un identificador// Esta función incluye objetos de todos los proyectos (incluidos los heredados)// ‐ nObjectType = Tipo de objeto (ver enumeración en la clase ObjectInfo)// ‐ nObjectIndex = Número de orden del objeto en la lista de objetos de ese tipoVObjectInfo allObjectInfo( Number nObjectType, Number nObjectIndex )

123456

// Devuelve el número de proyectos heredados del proyecto en cursoNumber legacyProjectCount() // Devuelve un objeto VProjectInfo// ‐ nIndex = Número de orden del proyecto en la lista de proyectos heredadosVProjectInfo legacyProjectInfo( Number nIndex )

12

TypeDat = 0 Proyecto de datosTypeApp = 1 Proyecto de aplicación

123456789

101112131415161718192021222324252627282930313233

////////////////////////////////////////////////////////////// Mostrar los datos del proyecto en curso var proyecto = theApp.mainProjectInfo();var info = proyecto_datos( proyecto );alert( "El proyecto principal tiene la siguiente información: \n\n" + "Id = " + info[0] + "\n" + "Alias = " + info[1] + "\n" + "Tipo = " + info[2] + "\n" + "Nombre = " + info[3] + "\n" + "Versión = " + info[4] + "\n" + "Ultimo cambio = " + info[5] + "\n" + "Nº historia = " + info[6] ); ////////////////////////////////////////////////////////////// Almacenar datos generales de un proyecto// proyecto = Proyecto del que se extraerá la información function proyecto_datos( proyecto ) var datos = new Array(); datos[0] = proyecto.id(); datos[1] = proyecto.alias(); datos[2] = proyecto.type(); datos[3] = proyecto.name(); datos[4] = proyecto.version(); datos[5] = proyecto.saved(); datos[6] = proyecto.history(); return( datos );

123456789

101112131415161718

////////////////////////////////////////////////////////////// Mostrar los datos de los proyectos heredados var proyecto = theApp.mainProjectInfo();var msg = "";var resultado = proyectos_info( proyecto );alert( msg, "Información de herencia" ); ////////////////////////////////////////////////////////////// Almacenar datos generales de un proyecto// proyecto = Proyecto del que se extraerá la información function proyectos_info( proyecto ) // Se compone el mensaje final a mostrar msg += "Proyecto heredado: " + proyecto.name() + " (" + proyecto.alias() + ")" + "\n" + "Nº tablas: " + proyecto.objectCount( VObjectInfo.TypeTable) + "; " + "\n" +

Page 8: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

1920212223242526272829303132

"Nº tablas estáticas: " + proyecto.objectCount( VObjectInfo.TypeStaticTable) + "; " + "\n" + "Nº esquemas: " + proyecto.objectCount( VObjectInfo.TypeScheme) + "\n\n"; alert ( proyecto.name() ); // Se analiza si el proyecto tiene otros proyectos heredados var num_pry_heredados = proyecto.legacyProjectCount(); // Por cada proyecto heredado se ejecuta la función de forma reentrante hasta procesar todos los proyectos for ( var x=0; x<num_pry_heredados; x++ ) var proyecto_heredado = proyecto.legacyProjectInfo( x ); resultado = proyectos_info( proyecto_heredado );

Page 9: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Clase

VObjectInfo

Page 10: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

VObjectInfo

Descripción

Los objetos de esta clase contienen la informacion de la estructura de un objeto V7.

Se pueden ver sus propiedades, tanto los datos que contienen como información de su nombre, tipo, tabla asociada (si tiene), tipo de objeto

referenciado, etc. Para obtener el valor que contiene una propiedad primero debemos mirar el tipo de dato para usar la funcion adecuada. Por ejemplo

si el tipo de dato es Uint16 usar la funcion propertyDataToInt( nProp )

También se pueden obtener otros VObjectInfo de sus subobjetos y de los objetos referenciados por sus propiedades.

Funciones

Funciones generales

Funciones de entrada

Funciones de salida

Funciones de subobjetos

Enumeraciones

123456789

10111213141516171819

// Devuelve el identificador de un objeto. Por ejemplo, "AUTOEXEC"String id() // Devuelve el identificador con referencia de un objeto. Por ejemplo, "VJS_APP/AUTOEXEC"String idRef() // Devuelve el nombre o descripción del objeto// Si no le pasamos parámetros devuelvo el nombre del idioma en curso// Si le resolvemos el idioma o el idioma y país nos devuelve del nombre para ese idioma y país// ‐ nLenguaje = Código Qt del idioma// ‐ nPais = Código Qt del paísString name()String name( int nLenguaje, int nPais = 0 ) // Devuelve el código de tipo de objeto. Ver enum de tipos de objejosNumber type() // Devuelve true si el objeto es una vista de datosBoolean isDataView()

12345

// Devuelve el tipo de entrada. Ver enum de tipos de entrada/salidaNumber inputType() // Devuelve el objeto VTableInfo correspondiente a la tabla de entradaVTableInfo inputTable()

1

2345

// Devuelve el tipo de salida. Ver enum de tipos de entrada/salida

Number outputType() // Devuelve el objeto VTableInfo correspondiente a la tabla de salidaVTableInfo outputTable()

123456789

10111213

// Devuelve el número de subobjetos de un objeto de un tipo// ‐ nSubType = Ver enum de tipos de objetosNumber subObjectCount( Number nSubType ) // Devuelve un objeto VObjectInfo de un subobjeto de un tipo y un identificador// nSubType = Ver enum de tipos de objetos// ‐ szIdSubObject = Identificador del subobjetoVObjectInfo subObjectInfo( Number nSubType, String szIdSubObject ) // Devuelve un objeto VObjectInfo de un subobjeto de un tipo y un número de orden del subobjeto// ‐ nSubType = Ver enum de tipos de objetos// ‐ szIdSubObject = Número de orden del subobjeto en la listaVObjectInfo subObjectInfo( Number nSubType, Number nSubObject )

Page 11: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Enum de tipo de entrada/salida

Enum de tipos de objeto

Ejemplos

Ejemplo de información del objeto de la vista en curso

123

IONone = 0 NingunoIORecord = 1 FichaIOList = 2 Lista

123456789

101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475

TypeTable = 00 TablaTypeField = 01 CampoTypeIndex = 02 IndiceTypeIndexPart = 03 ParteIndiceTypePluralBind = 04 Enlace pluralTypeUpdate = 05 ActualizaciónTypeUpdateComponent = 06 Componente de actualizaciónTypeVariable = 09 VariableTypeStaticTable = 10 Tabla estáticaTypeStaticTableItem = 11 Ítem de tabla estáticaTypeTrigger = 12 TriggerTypePicture = 13 DibujoTypeGrid = 14 RejillaTypeGridCol = 15 Columna de rejillaTypeTree = 16 ÁrbolTypeCasillero = 17 CasilleroTypeForm = 18 FormularioTypeControl = 19 Control de formularioTypeSubcontrol = 20 Subcontrol de formularioTypeMultiView = 21 MultiVistaTypeLogicPrinter = 22 Impresora lógicaTypeReport = 23 InformeTypeReportSection = 24 Sección de informeTypeReportControl = 25 Control de informeTypeReportGrouping = 26 Agrupamiento de informeTypeReportCalcution = 27 Cálculo de informeTypeQuery = 28 BúsquedaTypeQueryComponent = 29 Componente de búsquedaTypeFilterGlass = 30 LupaTypeFinder = 31 LocalizadorTypeFinderIndex = 32 Indice del localizadorTypeBasket = 33 CestaTypeProcess = 34 ProcesoTypeFunction = 35 FunciónTypeEventConnection = 37 Conexión de eventoTypeEventSlot = 38 Manejador de eventoTypeInstruction = 39 Instrucción de procesoTypeDll = 40 DllTypeAction = 41 AcciónTypeMenu = 42 MenúTypeToolbar = 43 ToolbarTypeActionLauncher = 44 Lanzador de acciónTypeListPipe = 45 Tubo de listaTypeRecordPipe = 46 Tubo de fichaTypeTcpProtocol = 47 Protocolo TCPTypeConstant = 51 ConstanteTypeFrame = 52 MarcoTypeDock = 53 DockTypeFormBlock = 54 Bloc de formulariosTypeDrop = 55 DropTypeQueue = 56 Cola de procesosTypeScheme = 57 EsquemaTypeSchemeItem = 58 Item de esquemaTypeDllFunction = 60 Función DllTypeInsertion = 61 Insertar enTypeSerialPort = 62 Dispositivo serieTypeDllFunctionParam = 63 Parámetro de función DllTypeAttachedFile = 64 Fichero adjuntoTypeSvgImage = 65 SVGTypeSvgControl = 66 Control SVGTypeSubindexator = 67 SubindexadorTypeIntercomunicator = 68 Intercomunicador del TCPTypeStyleCondition = 69 Condición de estiloTypeViewFlow = 70 ViewFlowTypeListAlternator = 71 Alternador de listaTypeComboView = 72 ComboViewTypeListView = 73 ListViewTypeQmlList = 74 Lista QMLTypeUserRole = 75 UserRole de QMLTypeAuxModel = 76 AuxModel de lista QMLTypeAdvancedGrid = 77 RejillaTypeAdvancedGridCol = 78 Columna de rejillaTypeAdvancedGridBand = 79 Banda de cabecera de rejillaTypeQmlForm = 80 Formulario QMLTypeNone = ‐1 No definido

Page 12: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

123456789

10111213141516171819202122232425262728293031

////////////////////////////////////////////////////////////// Información del objeto de la vista en curso // Se coge el root (objeto) de la vista en cursovar root = theMainWindow.currentView().root(); // Se crea el objeto VObjectInfo de la vista en cursoobj = root.objectInfo(); // Se muestra la información del objetomsg = "El objeto en curso tiene la siguiente información:" + "\n\n" + "Id: " + obj.id() + "\n" + "IdRef: " + obj.idRef() + "\n" + "Name: " + obj.name() + "\n" + "Tipo: " + obj.type() + "\n" + "¿Es vista de datos? " + obj.isDataView() + "\n"; // Si tiene tabla asociada se añade al mensajeif ( obj.inputTable().name() != "" ) msg += "\n" + "Tabla asociada: " + obj.inputTable().name() + "\n"; // Si tiene tabla destino se añade al mensajeif ( obj.outputTable().name() != "" ) msg += "\n" + "Tabla destino: " + obj.outputTable().name() + "\n"; // Si es una rejilla se muestra el número de columnasif ( obj.type() == VObjectInfo.TypeGrid ) msg += "\n" + "Es una rejilla y tiene " + obj.subObjectCount( 15 ) + " columnas"; // Mostrar la informaciónalert( msg );

Page 13: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Clase

VTableInfo

Page 14: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

VTableInfo

Descripción

Los objetos de esta clase contienen la información de la estructura de una tabla. Tiene funciones generales de la tabla, como ver su Id o su tipo, y

funciones para obtener información de sus subobjetos: campos, índices y enlaces plurales. También nos permite obtener otros VTablaInfo de las tablas

enlazadas como maestros o enlaces plurales.

Funciones

Funciones de tabla

Funciones de campos

123456789

1011121314151617181920212223242526272829303132333435

// Devuelve el identificador (Id) de la tablaString id() // Devuelve el idRef (Alias_Aplicación/Id_Tabla) de la tablaString idRef() // Devuelve el nombre plural de la tablaString name() // Devuelve el nombre plural de la tabla en el idioma configurado// Si no se especifican valores asume el idioma en curso// El código de país es opcional// ‐ nLenguage = Código del idioma (Ver tabla de idiomas en documentación de Qt)// ‐ nPais = Código del país (Ver tabla de idiomas en documentación de Qt)String name( Number nLenguage, Number nPais = 0 ) // Devuelve el nombre singular de la tablaString singleName() // Devuelve el nombre singular de la tabla en el idioma configurado// Si no se especifican valores asume el idioma en curso// El código de país es opcional// ‐ nLenguage = Código del idioma (Ver tabla de idiomas en documentación de Qt)// ‐ nPais = Código del país (Ver tabla de idiomas en documentación de Qt)String singleName( Number nLenguage, Number nPais = 0 ) // Devuelve el código de tipo de tabla// Ver enum de tipos de tablasNumber type() // Devuelve true si la tabla reside en memoriaBoolean isInMemory() // Devuelve la longitud en bytes del registro de la tablaNumber registerLength()

123456789

10111213141516171819202122232425262728293031

// Devuelve el número de campos del registro de la tablaNumber fieldCount() // Devuelve el identificador (Id) del campo// ‐ nCampo = Número de campo, el primero es el 0String fieldId( Number nCampo ) // Nombre del campo// ‐ nCampo = Número de campo, el primero es el 0String fieldName( Number nCampo ) // Devuelve el tipo de campo// Ver enum de tipos de campo// ‐ nCampo = Número de campo, el primero es el 0Number fieldType( Number nCampo ) // Devuelve el tipo de objeto de un campo objeto// Ver enum de tipos de campos objeto// ‐ nCampo = Número de campo, el primero es el 0Number fieldObjectType( Number nCampo ) // Devuelve el tamaño en bytes de los caracteres que admite el buffer del campo// Por ejemplo un campo Alfa40 de 2 bytes tiene un buffer 3 caracteres// ‐ nCampo = Número de campo, el primero es el 0Number fieldBufferLen( Number nCampo ) // Devuelve el nº de decimales de un campo numérico// ‐ nCampo = Número de campo, el primero es el 0Number fieldDecimals( Number nCampo ) // Devuelve true si el campo numérico es con signo

Page 15: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Funciones de índices

Funciones de enlaces plurales

Funciones de localizadores por Id

31323334353637383940414243444546474849505152535455565758596061

// Devuelve true si el campo numérico es con signo// ‐ nCampo = Número de campo, el primero es el 0Boolean fieldIsSigned( Number nCampo ) // Devuelve el valor mínimo de un campo numérico// ‐ nCampo = Número de campo, el primero es el 0Number fieldMinimumValue( Number nCampo ) // Devuelve el valor máximo de un campo numérico// ‐ nCampo = Número de campo, el primero es el 0Number fieldMaximumValue( Number nCampo ) // Devuelve el tipo de enlace del campo// Ver enum de tipos de enlaces de campo// ‐ nCampo = Número de campo, el primero es el 0Number fieldBindType( Number nCampo ) // Devuelve el identificador (Id) de la tabla enlazada// ‐ nCampo = Número de campo, el primero es el 0String fieldBoundedTableId( Number nCampo ) // Devuelve un objeto de la clase VTableInfo de la tabla enlazadaVTableInfo fieldBoundedTableInfo( Number nPlural ) // Devuelve el identificar (Id) del campo padre de una tala submaestra// ‐ nCampo = Número de campo, el primero es el 0String fieldParentFieldId( Number nCampo ) // Devuelve el número de campo del campo padre de una tala submaestra// ‐ nCampo = Número de campo, el primero es el 0Number fieldParentFieldNumber( Number nCampo )

123456789

1011121314

// Devuelve el número de índices de la tablaNumber indexCount() // Devuelve el identificador del índice// ‐ nIndex = Número de orden del índice, el primer valor es el 0String indexId( Number nIndex ) // Devuelve el nombre del índice// ‐ nIndex = Número de orden del índice, el primer valor es el 0String indexName( Number nIndex ) // Devuelve el identificador del índice// ‐ nIndex = Número de orden del índice, el primer valor es el 0Number indexType( Number nIndex )

123456789

1011121314151617181920212223242526

// Devuelve el número de enlaces plurales de la tablaNumber pluralCount() // Devuelve el identificador (Id) del plural// ‐ nPlural = Número de orden del plural, el primero valor es el 0String pluralId( Number nPlural ) // Devuelve el nombre del plural// ‐ nPlural = Número de orden del plural, el primero valor es el 0String pluralName( Number nPlural ) // Devuelve el identificador (Id) de la tabla enlazada (maestra)// ‐ nPlural = Número de orden del plural, el primero valor es el 0String pluralBoundedTableId( Number nPlural ) // Devuelve un objeto de la clase VTableInfo de la tabla enlazada (maestra)// ‐ nPlural = Número de orden del plural, el primero valor es el 0VTableInfo pluralBoundedTableInfo( Number nPlural ) // Devuelve el identificador (Id) del índice de la tabla enlazada (maestra)// ‐ nPlural = Número de orden del plural, el primero valor es el 0String pluralBoundedIndexId( Number nPlural ) // Devuelve un objeto de la clase VObjectInfo del índice de la tabla enlazada (maestra)// ‐ nPlural = Número de orden del plural, el primero valor es el 0VObjectInfo pluralBoundedIndexInfo( Number nPlural )

12345678

// Devuelve el número de campo de un identificador// ‐ szIdPrimarioCampo = Identificador del campoNumber findField( String szIDPrimarioCampo ) // Devuelve el número del índice de un identificador// ‐ szIdPrimarioIndice = Identificador del índiceNumber findIndex( String szIDPrimarioIndice )

Page 16: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Enumeraciones

Enum de tipos de tablas

Enum de tipos de campo

Enum de tipos de campos objeto

Enum de tipos de enlaces de campo (bindType)

Enum de tipos de índices

Ejemplos

Ejemplo de eliminación de todos los plurales de un registro de la tabla de entidades

91011

// Devuelve el número del enlace plural de un identificador// ‐ szIdPrimarioIndice = Identificador del enlace pluralNumber findPlural( String szIDPrimarioHist )

1234

TypeMaster = 0 MaestraTypeHistorical = 1 HistóricaTypeMasterSub = 2 SubmaestraTypeMasterTree = 3 Arbolada

123456789

1011121314151617

FieldTypeAlpha256 = 00 Alfa 256FieldTypeAlpha128 = 01 Alfa 128FieldTypeAlpha64 = 02 Alfa 64FieldTypeAlpha40 = 03 Alfa 40FieldTypeAlphaLatin1 = 04 Alfa Latin1FieldTypeAlphaUtf16 = 05 Alfa Utf16FieldTypeNumeric = 06 NuméricoFieldTypeDate = 07 FechaFieldTypeTime = 08 HoraFieldTypeDateTime = 09 Tiempo (fecha y hora)FieldTypeBool = 10 BooleanoFieldTypeObject = 11 ObjetoFieldTypeFormulaNumeric = 12 Fórmula numéricaFieldTypeFormulaAlfa = 13 Fórmula alfabéticaFieldTypeFormulaDate = 14 Fórmula fechaFieldTypeFormulaDateTime = 15 Fórmula tiempo (fecha y hora)FieldTypeVirtualBind = 18 Puntero virtual

12345

ObjectTypePicture = 0 ImagenObjectTypeText = 1 TextoObjectTypeRichText = 2 RichText (texto enriquecido)ObjectTypeBinary = 3 BinarioObjectTypeFormula = 4 Fórmula dinámica

12345678

BindTypeNone = 0 NingunoBindTypeMaster = 1 Tabla maestraBindTypeStatic = 2 Tabla estáticaBindTypeIndirectReal = 3 Indirecto realBindTypeIndirectVirtual = 4 Indirecto virtualBindTypeSingularPluralPos = 5 Singular de plural por posiciónBindTypeSingularPluralIndex = 6 Singular de plural por índiceBindTypeAdjacentSibling = 7 Hermano contiguo

12345

IndexTypeSingleKey = 0 Clave unicaIndexTypeWords = 1 PalabrasIndexTypeMultiKey = 2 Multiples clavesIndexTypeAcceptRepeat = 3 Acepta repetidasIndexTypeWordParts = 4 Trozos de palabras

123456789

101112

////////////////////////////////////////////////////////////// Eliminar todos los plurales de la tabla entidades de vbase // Confirmar la eliminación de los plurales de la entidadesif ( confirm( "¿Desea eliminar todos los datos históricos de " + theRegisterIn.fieldToString( "NAME" ) + "?", // Se crea la transacción theRoot.beginTrans( "Eliminación de los plurales de " + theRegisterIn.fieldToString( "NAME" ) ); // Se analiza la tabla de entidades para recorrer sus plurales ti = theRegisterIn.tableInfo(); numPlurales = ti.pluralCount();

Page 17: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

13141516171819202122232425262728293031323334353637383940414243

numTotalReg = 0; for ( x=0; x<numPlurales; ++x ) // Obtenemos el Id del plural pluralId = ti.pluralId( x ); // Cargamos la lista de registro por ese plural listaPlurales = theRegisterIn.loadPlurals( pluralId ); numReg = listaPlurales.size() if ( numReg > 0 ) // Si la lista de plurales tiene registros se eliminan numTotalReg += numReg; for ( y=0; y<numReg; ++y ) // Cogemos el registro plural regPlural = listaPlurales.readLockingAt( y ); regPlural.deleteRegister(); // Se finaliza la transacción theRoot.commitTrans(); alert( "Se han eliminado " + numTotalReg + " registros en " + numPlurales + " plurales" );

Page 18: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Clase

VMainWindow

Page 19: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

VMainWindow

Descripción

Este objeto nos da acceso a las funciones de manejo de la ventana principal de la aplicación. Está disponible en procesos de scripts ejecutados en primer

plano.

Funciones

Funciones generales

123456789

101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

// Devuelve el título de la ventanaString title() // Cambia el título de la ventana// ‐ szTitle = Texto del nuevo título de la ventanavoid setTitle( String szTitle ) // Devuelve la hoja de estilo (CSS) que se está aplicando a la ventanaString styleSheet() // Cambia la hoja de estilo (CSS) que se aplicará a la ventana// ‐ szCssText = Texto con el CSS a aplicarvoid setStyleSheet( String szCssText ) // Devuelve true si la ventana es visibleBoolean isVisible() // Devuelve true si la ventana está a pantalla completaBoolean isFullScreen() // Devuelve true si la ventana está maximizadaBoolean isMaximized() // Devuelve true si la ventana está minimizadaBoolean isMinimized() // Muestra la ventanavoid show() // Oculta la ventanavoid hide() // Visualiza la ventana en modo a pantalla completavoid showFullScreen() // Visualiza la ventana en modo maximizadavoid showMaximized() // Visualiza la ventana en modo minimizadavoid showMinimized() // Visualiza la ventana en modo normalvoid showNormal() // Devuelve la posición x de la ventana (esquina superior izquierda)Number x() // Devuelve la posición y de la ventana (esquina superior izquierda)Number y() // Devuelve el ancho en píxels de la ventanaNumber width() // Devuelve el alto en píxels de la ventanaNumber height() // Mueve la ventana a la posición especificada// ‐ x = Posición horizontal en píxeles// ‐ y = Posición vertical en píxelesvoid move( Number x, Number y ) // Modifica el tamaño de la ventana// ‐ nWidth = Ancho de la ventana en píxels// ‐ nHeight = Alto de la ventana en píxelsvoid resize( Number nWidth, Number nHeight ) // Personaliza los botones y la barra de título de la ventana// ‐ nFlags = Ver enum de personalización de la ventana (flags combinables) void customizeWindowHint( Number nFlags )

Page 20: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Funciones de docks

Funciones de barra de menú

Funciones de acciones

Funciones de barra de estado

Funciones de la vista central

123456789

10111213141516171819202122232425

// Devuelve true si el dock está visible// ‐ szIdPrimarioDock = Identificador del dockBoolean isDockVisible( String szIdPrimarioDock ) // Muestra el dock// ‐ szIdPrimarioDock = Identificador del dockvoid showDock( String szIdPrimarioDock ) // Oculta el dock// ‐ szIdPrimarioDock = Identificador del dockvoid hideDock( String szIdPrimarioDock ) // Devuelve true si el dock está flotante// ‐ szIdPrimarioDock = Identificador del dockBoolean isDockFloating( String szIdPrimarioDock ) // Fija el dock como flotante// ‐ szIdPrimarioDock = Identificador del dock// ‐ bSet = True para activarlo como flotante, false para desactivarlo como flotantevoid setDockFloating( String szIdPrimarioDock, Boolean bSet ) // Modifica las características del dock// ‐ szIdPrimarioDock = Identificador del dock// ‐ nFeatures = Ver enum de features del dock (flags combinables)void setDockFeatures( String szIdPrimarioDock, Number nFeatures )

12345678

// Devuelve true si la barra de menú está visibleBoolean isMenuBarVisible() // Muestra la barra de menúvoid showMenuBar() // Oculta la barra de menúvoid hideMenuBar()

123

// Ejecuta una acción (de cualquier proyecto)// ‐ szIdRefAction = IdRef de una acción (proyecto/identificado), ejemplo: "VJS_APP/VDIR"void runAction( String szIdRefAction )

123456789

1011121314151617181920212223242526

// Devuelve true si la barra de estado está visibleBoolean isStatusBarVisible() // Muestra la barra de estadovoid showStatusBar() // Oculta la barra de estadovoid hideStatusBar() // Devuelve el mensaje que se está mostrando en la barra de estadoString currentMessageStatusBar() // Limpia el mensaje que se está mostrando en la barra de estadovoid clearMessageStatusBar() // Muestra un mensaje en la barra de estado// ‐ szMsg = Mensaje de texto a mostrar en la barra de estado// ‐ nMiliSegsTimeout = Tiempo en milisegundos que estará visible, por defecto 0 = no se oculta el mensajevoid showMessageStatusBar( String szMsg, Number nMiliSegsTimeout = 0 ) // Devuelve true si está visible el grip de cambio de tamaño de la ventanaBoolean isSizeGripEnabledStatusBar() // Habilta o deshabilita el grip de cambio de tamaño de la ventana// ‐ bSet = True para habilitar el grip de la cambio de tamaño, false para deshabilitarvoid setSizeGripEnabledStatusBar( Boolean bSet )

123456789

// Devuelve el modo de interfaz de documento de la ventanaNumber bootMode() // Fijar el modo de interfaz de documento de la ventana// ‐ nMode = Ver enum de modos de interfaz de documento de la ventanavoid setBootMode( Number nMode ) // Devuelve el número de vistas abiertaNumber viewsCount()

Page 21: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Enumeraciones

Enum de modos de interfaz de documento de la ventna

Enum de personalización de ventana (flags combinables)

Enum de features del dock (flags combinables)

Ejemplos

Ejemplo de cómo conseguir tener 1 opción de menú abierta una vez

101112131415161718192021222324252627282930

// Devuelve el número ordinal de la vista en cursoVMdiView currentView() // Hace visible la siguiente vistavoid nextView() // Hace visible la vista previavoid prevView() // Cierra la vista en cursovoid closeCurrentView() // Cierra todas las vistasvoid closeAllViews() // Aplica el interfaz MDI en cascadavoid mdiCascade() // Aplica el interfaz MDI en mosaicovoid mdiTile()

123

TAB = 0MDI = 1SDI = 2

12345

HintTitle = 0x01 Sin títuloHintSystemMenu = 0x02 Sin menú del sistemaHintMinimizeButton = 0x04 Sin botón minimizarHintMaximizeButton = 0x08 Sin botón maximizarHintCloseButton = 0x10 Sin botón cerrar

1234

Cerrable = 0×01Movible = 0×02Flotable = 0×04Barra de titulo vertical = 0×08

123456789

1011121314151617181920212223242526

////////////////////////////////////////////////////////////// Busca una vista con el título y si la encuentra la habilita// Si no la encuentra ejecuta la acción// El proceso recibe 2 parámetros a través de las variables locales// TITULO = Título de la pestaña// ACCION = Acción a ejecutar var numVistas = theMainWindow.viewsCount();var ejecutar = true; for ( i=0; i<numVistas + 1; i++ ) var vista = theMainWindow.currentView() if ( vista.title() == theRoot.varToString( "TITULO" ) ) ejecutar = false; else theMainWindow.nextView(); // Si no se ha encontrado se lanza la acción para abrir la vista y se retorna true (para seguir)if ( ejecutar == true ) theMainWindow.runAction( theRoot.varToString( "ACCION" ) );

Page 22: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Clase

VMdiView

Page 23: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

VMdiView

Descripción

Un objeto de esta clase representa a una de las vistas centrales de la ventana principal. Algunas de las funciones sólo están disponibles cuando el modo

de interfaz de la VMainWindow es MDI.

Se puede coger el VRoot que contiene la vista si no es una vista genérica.

Funciones

Funciones generales

Funciones de información de la ventana

Funciones de manipulación de la ventana

Funciones de la ventana sólo en modo MDI

123

// Devuelve el tipo de vista// Ver enum de tipos de vistas Number type()

123456789

1011121314151617181920

// Devuelve el título de la ventanaString windowTitle() // Devuelve el script CSS que se está aplicando a la vistaString styleSheet() // Devuelve true si la vista no está visibleBoolean isVisible() // Devuelve la posición x de la ventanaNumber x() // Devuelve la posición y de la ventanaNumber y() // Devuelve el ancho en pixels de la ventanaNumber width() // Devuelve el alto en pixels de la ventanaNumber height()

123456

789

1011121314151617181920212223242526

// Cambia el título de la ventana// ‐ szTitle = Texto del título de la ventanavoid setWindowTitle( String szTitle ) // Cambia el script CSS que se aplicará a la vista// ‐ szCSS = Texto del script CSS

void setStyleSheet( String szCSS ) // Hace visible la vistavoid show() // Oculta la vistavoid hide() // Fija el foco en la ventanavoid setFocus() // Cierra la ventanavoid close() // Fuerza el repintado de la ventana salvo que esté oculta o las actualizaciones desactivadasvoid repaint() // Actualiza la ventana// No produce un repintado inmediato para reducir el flickervoid update()

12345

// Mueve la ventana a la posición x, y// ‐ x = Posición horizontal en pixeles de la esquina superior izquierda de la ventana// ‐ y = Posición vertical en pixeles de la esquina superior izquierda de la ventanavoid move( Number x, Number y )

Page 24: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Funciones sólo para vistas de datos

Enumeraciones

Enum de tipos de vistas

Ejemplos

Ejemplo de análisis del contenido de la vista en curso

56789

101112131415161718192021222324252627282930

// Modifica el tamaño de la ventana// ‐ nWidth = Nuevo ancho en pixeles de la ventana// ‐ nHeight = Nuevo alto en pixeles de la ventanavoid resize( Number nWidth, Number nHeight ) // Devuelve true si la ventana está maximizadaBoolean isMaximized() // Devuelve true si la ventana está minimizadaBoolean isMinimized() // Muestra la ventana maximizadavoid showMaximized() // Muestra la ventana minimizadavoid showMinimized() // Muestra la ventana normalvoid showNormal() // Coloca la ventana en la posición más baja de la pila de ventanasvoid lower() // Coloca la ventana en la posición más alta de la pila de ventanasvoid raise()

12

// Devuelve un objeto de la clase VRoot que representa a la vista dentro de la ventanaVRoot root()

123456789

10111213141516

TypeGeneric = 00 GenéricaTypeForm = 01 FormularioTypeGrid = 02 RejillaTypeCasillero = 03 CasilleroTypeTree = 04 ArbolTypeMultiView = 05 MultiVistaTypeMultiViewTree = 06 MultiVista en modo árbolTypeFormBlock = 07 Bloc de formulariosTypeReportPreview = 08 Vista previa de informeTypeViewFlow = 10 ViewFlowTypeListAlternator = 11 Alternador de listaTypeComboView = 12 ComboViewTypeListView = 13 ListViewTypeQmlList = 14 Lista QMLTypeAdvancedGrid = 15 Rejilla avanzadaTypeQmlForm = 16 Formulario QML

123456789

10111213141516171819202122232425262728

////////////////////////////////////////////////////////////// Ejemplo de análisis del contenido de la vista en curso // Se obtiene la vista en cursovar view = theMainWindow.currentView(); if ( view ) // Cogemos el objeto "root" de la vista var root = view.root(); if ( root ) // Cogemos el contenido del root: ficha, lista o ninguno var rootContent = root.content(); if ( rootContent ) if ( root.objectInfo().inputType() == VObjectInfo.IORecord ) // Si el contenido es un registro alert( "Contenido: ficha del registro " + rootContent.fieldToString( "ID" ) + " ‐ " + rootContent.fieldToString( else if ( root.objectInfo().inputType() == VObjectInfo.IOList ) // Si el contenido es una lista alert( "Contenido: lista de " + rootContent.listSize() + " registros de la tabla " + rootContent.tableInfo().name() );

Page 25: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

293031323334353637

else alert( "Contenido ninguno" ); else alert( "No es vista de datos" );else alert( "No hay ninguna vista" );

Page 26: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Clase

VApp

Page 27: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

VApp

Descripción de la clase

Este clase representa a la aplicacion. Dispone de funciones para ver información de sus proyectos, acceso a variables globales, constantes, utilidades de

base de datos, disco, etc.

El objeto theApp

Todos los scripts están conectados a un objeto global y único que representa a la aplicación cuyo nombre es theApp.

Herencia

Hay que tener en cuenta que la aplicación da acceso al proyecto principal con el que se ha arrancado la aplicación y todos sus objetos heredados lo que

permite el acceso y uso de cualquier objeto de la aplicación desde cualquier script.

Funciones

Funciones generales

Funciones de proyectos

123456789

10111213141516171819202122232425

26272829303132333435363738394041424344454647484950

// Devuelve el nombre del navegador en curso (vClient, vWebClient)String exeName() // Emite un pitido a través del altavoz del sistemavoid beep() // Devuelve el código del idioma en cursoNumber currentLanguageCode() // Devuelve el código ISO (639) del idioma en cursoString currentLanguageIsoCode() // Devuelve el nombre del idioma en curso (en inglés)String currentLanguageName() // Devuelve el código de país en cursoNumber currentCountryCode() // Devuelve el código ISO (3166) del país en cursoString currentCountryIsoCode() // Devuelve el nombre del país en cursoString currentCountryName() // Devuelve el caracter de separador decimal en curso (un string de un byte)

String currentDecimalPoint() // Devuelve el código del idioma del sistemaNumber sysLanguageCode() // Devuelve el código ISO (639) del idioma del sistemaString sysLanguageIsoCode() // Devuelve el nombre del idioma del sistema (en inglés)String sysLanguageName() // Devuelve el código de país del sistemaNumber sysCountryCode() // Devuelve el código ISO (3166) del país del sistemaString sysCountryIsoCode() // Devuelve el nombre del país del sistemaString sysCountryName() // Devuelve el caracter de separador decimal del sistema (un string de un byte)String sysDecimalPoint() // Devuelve el nombre de la máquina (host)String sysMachineName()

Page 28: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Funciones de variables globales

Funciones de constantes

Funciones de herramientas de base de datos

Funciones de DOS (Sistema operativo de disco)

123456

// Devuelve el objeto VProjectInfo del proyecto principal en cursoVProjectInfo mainProjectInfo() // Devuelve un objeto VProjectInfo del proyecto con el alias especificado// ‐ szAlias = Alias del proyecto o nombre del fichero en discoVProjectInfo projectInfo( String szAlias )

123456789

10111213141516171819202122

// Devuelve el valor de una variable global de tipo:String globalVarToString( String szIdRefVar ) // AlfabéticaNumber globalVarToDouble( String szIdRefVar ) // Numérica con decimalesNumber globalVarToInt( String szIdRefVar ) // Numérica sin decimalesBoolean globalVarToBool( String szIdRefVar ) // BooleanoDateTime globalVarToDateTime( String szIdRefVar ) // Fecha y tiempoDate globalVarToDate( String szIdRefVar ) // FechaTime globalVarToTime( String szIdRefVar ) // Tiempo (hora) // Devuelve true si la variable global está vacía// Las numéricas se asumen vacías con el valor 0// ‐ szIdRefVar = IdRef de la variable ("ALIASPROYECTO/IDVARIABLE)Boolean IsglobalVarEmpty( String szIdRefVar ) // Asigna el valor a la variable global, según el tipo:void setGlobalVar(String szIdRefVar, String szValor) // Alfabéticavoid setGlobalVar(String szIdRefVar, double dValor) // Numérica con decimalesvoid setGlobalVar(String szIdRefVar, int nValor ) // Numérica enteravoid setGlobalVar(String szIdRefVar, Boolean bValor ) // Booleanavoid setGlobalVar(String szIdRefVar, DateTime dt ) // Fecha y tiempovoid setGlobalVar(String szIdRefVar, Date date ) // Fechavoid setGlobalVar(String szIdRefVar, Time time ) // Tiempo (hora)

12

// Devuelva el contenido de una constanteString constant( String szIdRef )

12345678

// Regenera el área de datos de la tabla indicada en el primer parámetro// Si indicamos true en el 2º parámetro se mostrará la barra de progreso// Esta función lanzada sobre tablas en memoria siempre devuelve falseBoolean regenDataArea( String idRefTabla, Boolean bProgressDialog ) // Regenera los índices de tabla indicada en el primer parámetro// Si indicamos true en el 2º parámetro se mostrará la barra de progresoBoolean regenIndexes( String idRefTabla, Boolean bProgressDialog )

123456789

1011121314151617181920212223242526272829303132333435

// Copia un fichero. Devuelve true si la copia finaliza correctamenteBoolean copyFile( String szFileName, String szNewName ) // Devuelve true si el fichero existe y está legibleBoolean existsFile( String szFileName ) // Elimina un fichero del disco. Devuelve true si finaliza correctamenteBoolean removeFile( String szFileName ) // Renombra un fichero del disco. Devuelve true si finaliza correctamenteBoolean renameFile( String szFileName, String szNewName ) // Crea un enlace simbólico (acceso directo o shortcut) a un fichero o directorioBoolean linkFile( String szFileName, String szLinkName ) // Cambia el path en curso. Devuelve true si el cambio finaliza correctamenteBoolean setCurrentPath( String szPath ) // Devuelve el path de:String currentPath() // Directorio en curso (por defecto donde se ejecuta vClient)String homePath() // Directorio home (por defecto el del usuario)String rootPath() // Directorio raíz (p.e. C:/)String tempPath() // Directorio temporal // Elimina del path los separadores "/" o "\" redundantes y los unifica a "/"String cleanPath( String szPath ) // Carga las unidades de disco del sistema. Devuelve true si finaliza correctamenteBoolean loadDrives() // Devuelve el número de unidades de disco del sistemaNumber drivesCount() // Devuelve un objeto VFileInfo para el unidades del índice cargadoVFileInfo driveAt( Number nIndex )

Page 29: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Ejemplos

Ejemplo de funciones generales

Ejemplo de funciones de variables globales

Ejemplo de funciones de constantes

Ejemplo de funciones de DOS (Sistema operativo de disco)

123456789

10111213141516171819202122232425262728293031

////////////////////////////////////////////////////////////// Ejemplo de funciones generales // Si el componente ejecutado es vClient se emite un pitidoif ( theApp.exeName() == "vClient" ) theApp.beep(); // Se muestra el nombre del componente en ejecuciónalert( "Componente en ejecución: " + theApp.exeName() ); // Mostrar info local en cursoalert( "Información local en curso" + "\n" + "\n" + "Código del idioma = " + theApp.currentLanguageCode() + "\n" + "Código ISO del idioma = " + theApp.currentLanguageIsoCode() + "\n" + "Nombre del idioma = " + theApp.currentLanguageName() + "\n" + "Código del país = " + theApp.currentCountryCode() + "\n" + "Código ISO del país = " + theApp.currentCountryIsoCode() + "\n" + "Nombre del país = " + theApp.currentCountryName() + "\n" + "Separador decimal = " + theApp.currentDecimalPoint() ); // Mostrar info local del sistemaalert( "Información local del sistema" + "\n" + "\n" + "Código del idioma = " + theApp.sysLanguageCode() + "\n" + "Código ISO del idioma = " + theApp.sysLanguageIsoCode() + "\n" + "Nombre del idioma = " + theApp.sysLanguageName() + "\n" + "Código del país = " + theApp.sysCountryCode() + "\n" + "Código ISO del país = " + theApp.sysCountryIsoCode() + "\n" + "Nombre del país = " + theApp.sysCountryName() + "\n" + "Separador decimal = " + theApp.sysDecimalPoint() + "\n" + "Nombre de la máquina = " + theApp.sysMachineName() );

123456789

101112131415161718192021222324

////////////////////////////////////////////////////////////// Ejemplo de funciones de variables globales // Almacenamos los valores en variables globalestheApp.setGlobalVar( "VJS_DAT/VAR_GLO_ALF", "ABC" );theApp.setGlobalVar( "VJS_DAT/VAR_GLO_NUM", 123.45 );theApp.setGlobalVar( "VJS_DAT/VAR_GLO_TMP", "2012/05/03 08:31:18" );theApp.setGlobalVar( "VJS_DAT/VAR_GLO_FCH", "2012/05/04" );theApp.setGlobalVar( "VJS_DAT/VAR_GLO_HOR", "09:53:23" ); // Se comprueba si la variable global alfabética está vacíaalert( "¿Está vacía la variable global alfabética? " + theApp.isGlobalVarEmpty( "VJS_DAT/VAR_GLO_ALF" ) ); // Recuperamos y mostramos el valor de las variables globalesalfabetica = theApp.globalVarToString( "VJS_DAT/VAR_GLO_ALF" );numero_decimal = theApp.globalVarToDouble( "VJS_DAT/VAR_GLO_NUM" );numero_entero = theApp.globalVarToInt( "VJS_DAT/VAR_GLO_NUM" );tiempo = theApp.globalVarToDateTime( "VJS_DAT/VAR_GLO_TMP" );fecha = theApp.globalVarToDate( "VJS_DAT/VAR_GLO_FCH" );hora = theApp.globalVarToTime( "VJS_DAT/VAR_GLO_HOR" );alert( "Valor de las variables globales: \n" + alfabetica + "\n" + numero_decimal + "\n" + numero_entero + "\n" + tiempo + "\n" + fecha + "\n" + hora );

123

////////////////////////////////////////////////////////////// Se muestra un mensaje con el texto de una constantealert( theApp.constant( "VJS_DAT/MSG_ERR_ID" ) );

123456789

101112

////////////////////////////////////////////////////////////// Ejemplos varios de las funciones de disco // Se preparan las variables con los nombres de ficherosfileFrom = "/fichero.txt";fileTo = "/fichero.txt.bck"; // Si existe el fichero destino se eliminaif ( theApp.existsFile( fileTo) ) if ( confirm( "¿Desea eliminar el fichero " + fileTo + "?", "Confirmar" ) )

Page 30: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Ejemplo de funciones de herramientas de base de datos

13141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364

theApp.removeFile( fileTo); // Si existe el fichero se copiaif ( theApp.existsFile( fileFrom ) ) if ( theApp.copyFile( fileFrom, fileTo) ) alert( "Se ha copiado el fichero correctamente", "Notificación" ); // Se crea un acceso directo al fichero origen theApp.linkFile( fileFrom, fileFrom + ".lnk" ); // Se renombra el fichero copiado theApp.renameFile( fileTo, fileTo + "1" ); else alert( "No se ha copiado el fichero correctamente", "Notificación" ); else alert( "No se ha encontrado el fichero " + fileFrom, "Aviso" ); // Cambiamos el directorio en cursoif ( theApp.setCurrentPath( theApp.rootPath() + "/instancias" ) ) alert( "Se ha cambiado el path en curso", "Notificación" ); // Mostrar los path de los directoriosalert( "Estos son los directorios de trabajo:" + "\n" + "En curso: " + theApp.currentPath() + "\n" + "Root: " + theApp.rootPath() + "\n" + "Home: " + theApp.homePath() + "\n" + "Temp: " + theApp.tempPath() ); // Limpieza de un pathalert( theApp.cleanPath( "//instancias\\app\datos//2012", "Senda" ) ); // Revisar las unidades de disco del sistema operativovar drivesNumber =0;var drivesList = "";theApp.loadDrives(); for ( i=0; i drive = theApp.driveAt( i ); drivesNumber++; drivesList += drive.path() + "\n"; alert( "Se han encontrado " + drivesNumber.toString() + " unidades de disco: \n\n" + drivesList );

123456789

101112131415161718192021222324252627282930313233343536373839

////////////////////////////////////////////////////////////// Ejemplo de regeneración del área de datos e índices de todas las tablas // Confirmamos si desea regenerar área de datos, índices o todosvar regenAreaDatos = confirm( "¿Desea regenerar el área de datos de todas las tablas?", "Confirmación" );var regenIndexes = confirm( "¿Desea regenerar los índices de todas las tablas?", "Confirmación" ); // Si hay algo que regenerar se leen todas las tablas de la aplicación incluídas las heredadasif ( regenAreaDatos || regenIndexes ) var msgErrors = ""; var mainProject = theApp.mainProjectInfo(); for( var nIndex=0; nIndex < mainProject.allTableCount(); nIndex++ ) var tableInfo = mainProject.allTableInfo( nIndex ); var table = tableInfo.idRef(); // Sólo se regenera el área de datos de las tablas en disco if ( tableInfo.isInMemory() == false ) if ( !theApp.regenDataArea( table, true )) msgErrors += "Falló la regeneración del área de datos de la tabla " + table + "\n"; // Se regeneran los índices de todas las tablas sean en disco o en memoria if ( !theApp.regenIndexes( table, true )) msgErrors += "Falló la regeneración de índices de la tabla " + table + "\n"; // Mensaje final del resultado de las regeneraciones if (msgErrors.length == 0) alert( "El proceso de regeneración ha finalizado correctamente", "Notificación" ); else

Page 31: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

404142

alert( "Se han producido los siguientes errores: \n" + msgErrors, "¡Atención!" );

Page 32: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Clase

VRoot

Page 33: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

VRoot

Descripción

La clase VRoot representa a un ejecutor de objeto y es creado automáticamente por V7. Dispone de funciones para ver o modificar las variables locales

del objeto y de sistema, obtener información del objeto (API), transacciones, etc.

Veamos algunos ejemplos:

Ejecutamos un proceso JavaScript desde una acción: el objeto theRoot representa el ejecutor del proceso en V7.

Próximas versiones: Tenemos un formulario con un manejador de evento en lenguaje JavaScript: El objeto theRoot del manejador de evento

representa al ejecutor del formulario.

Próximas versiones: Si el objeto V7 es una vista de datos (rejilla, formulario…) estará disponible el objeto dataView que sirve para coger la ventana

que representa el formulario o la vista de datos.

El objeto theRoot

Los scripts están conectados al objeto V7 que los ejecuta. Al ejecutarse el script se crea un objeto que representa al objeto V7 en ejecución, este objeto

se denomina theRoot.

El objeto theRoot representa al objeto en ejecución en curso. Representará a un objeto diferente dependiendo de donde estés, si estás en un proceso

será el proceso y si estás en un evento representa al formulario. También puedes obtener otros objetos root del interfaz.

Funciones

Funciones de API del objeto

Funciones de variables locales

Funciones de variables de sistema

123456789

1011121314151617

// Devuelve un objeto de la clase VObjectInfo que representa al objeto manipulado con la clase VRootVObjectInfo objectInfo() // Devuelve el tipo del objeto manipulado con la clase VRoot// Ver enum de tipos de objeto en la clase VObjectInfoNumber objectType() // Devuelve el nombre del objeto manipulado con la clase VRootString objectName() // Devuelve el tipo de entrada (ninguno, ficha o lista) del objeto manipulado con la clase VRoot// Ver enum de tipos de entrada/salida en la clase VObjectInfoNumber inputType() // Devuelve el tipo de salida (ninguno, ficha o lista) del objeto manipulado con la clase VRoot// Ver enum de tipos de entrada/salida en la clase VObjectInfoNumber outputType()

123456789

10111213141516171819

// Devuelve el valor de una variable local según el tipo// ‐ szId = Identificador de la variable localString varToString( String szId ) // Variable alfabéticadouble varToDouble( String szId ) // Variable numérica (con decimales)Number varToInt( String szId ) // Variable numérica (entero)Boolean varToBool( String szId ) // Variable booleana DateTime varToDateTime( String szId ) // Variable tiempo (fecha y hora)Date varToDate( String szId ) // Variable fechaTime varToTime( String szId ) // Variable hora // Asigna el contenido a una variable local según el tipo// ‐ szId = Identificador de la variable localvoid setVar( String szId, String szValor ) // Variable alfabéticavoid setVar( String szId, double dValor ) // Variable numérica (con decimales)void setVar( String szId, int nValor ) // Variable numérica (entero)void setVar( String szId, Boolean bValor ) // Variable booleanavoid setVar( String szId, QDateTime dt ) // Variable tiempo (fecha y hora)void setVar( String szId, QDate date ) // Variable fechavoid setVar( String szId, QTime time ) // Variable hora

123

// Devuelve el número de registros de la lista del objetoNumber listSize()

Page 34: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Funciones de transacciones

Funciones de vista de datos

Funciones de formulario

Ejemplos

Ejemplo de múltiples transacciones

3456789

1011121314151617181920

// Devuelve la posición del registro actual en la lista de registros del objetoNumber listPos() // Devuelve la página en curso (Informes)Number currentPage() // Devuelve el número de páginas (Informe)Number lastPage() // Devuelve el nombre del usuarioString userName() // Devuelve el path del directorio de caché del clienteString clientCachePath() // Devuelve true si el usuario en vAdmin está configurado como supervisorBoolean isAdministrator()

123456789

101112

1314151617

// Inicia una transacción// Devuelve true si la transacción se ha iniciado satisfactoriamente// ‐ szTitulo = Título de la transacción que se visualiza en el visor de transacción de vAdminBoolean beginTrans( String szTitulo ) // Devuelve true si hay una transacción en cursoBoolean existTrans() // Finaliza una transacción// Devuelve true si la transacción ha finalizado satisfactoriamente// Al finalizar la transacción se dar por válidas todas las operaciones realizadas en la base de datos todas las operaciones// Al finalizar un proceso si hay una transacción abierta se cierra automáticamente como si se hubiese ejecutado esta función

Boolean commitTrans() // Aborta una transacción y deshace todas sus operaciones// Devuelve true si todas las operaciones de la transacción se han deshecho satisfactoriamenteBoolean rollbackTrans()

123456789

1011

// Devuelve VRegister, VRegisterList o Nulo// El objeto que devuelve depende del origen del objeto representado por la clase VRootObject content() // Devuelve el widget del objeto representado por la clase VRoot.// ‐ szIDCompuestoControl = Identificador compuesto (Alias_Proyecto/Id_control)Widget getWidget( String szIDCompuestoControl ); // Devuelve el tipo de vista// Ver el enum de tipos de vista de la clase VMdiViewNumber viewType()

123456789

1011

// Guarda el registro y cierra el formulario// Equivale a pulsar el botón aceptar del formulariovoid accept() // Guarda el registro y mantiene abierto el formulario// Equivale a pulsar el botón aceptar sin cerrar del formulariovoid acceptNoClose() // Cierra el formulario sin guardar el registro// Equivale a pulsar el botón cancelar del formulariovoid cancel()

123456789

10111213

////////////////////////////////////////////////////////////// Ejemplo de múltiples transacciones // Se crea un registro vacío en memoria y se le asigna la tablavar reg = new VRegister( theRoot );reg.setTable( "vbaseUsuariosDat/USR" ); // Se ejecuta un bucle para dar 10 altas en 10 transacciones diferentesfor ( var i=0; i < 10; ++i ) // Se crea una transaccióname if ( theRoot.beginTrans( "Alta de usuario. Transacción " + i ) )

Page 35: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

1314151617181920212223242526

// Se modifican los datos reg.setField( "NAME", "Usuario_" + i ); // Se crea el registro reg.addRegister(); // Se añaden el registro a la lista de salida theRegisterListOut.append( reg ); // Se cierra la transacción theRoot.commitTrans();

Page 36: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Clase

VRegister

Page 37: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

VRegister

Descripción

Los objetos de esta clase representan una ficha de una tabla.

Los register pueden ser creados:

Automaticamente por v7 como VRegisterIn y VRegisterOut al inicio de un script lanzado desde uno o varios objetos V7 con entrada o salida ficha.

Desde otro objeto en javascript como con la funcion readAt de la clase VRegisterList que devuelve un VRegister.

Dispone de funciones para gestionar los contenidos de los campos por identificador simple o compuesto y por número de campo. Además se pueden

ver los contenidos previos de los campos, cuando se leyó la ficha.

Tambien dispone de una funciones para obtener la subclase del tipo VTableInfo que nos da informacion api de la tabla y de sus campos, indices e

historicos para ver las propiedades de estos objetos como por ejemplo el tipo de un campo, su identificador o su numero de decimales.

Para edición tenemos funciones de alta, baja y modificación asi como de control de errores.

Y al más puro estilo v7 las funciones de navegante.

Los objetos theRegisterIn, theRegisterOut y theRegister

Si el proceso JavaScript tiene una tabla asociada de origen ficha el script tendrá conectado un objeto de la clase VRegister denominado theRegisterIn

que se crea automáticamente con el registro de entrada.

Si el proceso tiene asociada una tabla destino de destino ficha el script tendrá conectado un objeto de la clase VRegister denominado theRegisterOut

que se crea automáticamente vacío y que podrá contener el registro de salida.

En las fórmulas que son lanzadas desde un origen de ficha de tabla, como por ejemplo un contenido inicial, el script tendrá conectado un objeto de la

clase VRegister denominado theRegister que se crea automáticamente con el registro que alimenta la fórmula. Desde este objeto podemos ejecutar

funciones de lectura de información pero no de escritura ya que las fórmulas no disponen de esa característica.

Constructor

Funciones

Funciones de inicialización

Funciones de API del objeto

Funciones de contenido de campos por identificador

123

// Devuelve un objeto VRegister inicializado// Debe ejecutarse la función setTable() para asignarle la tablaVRegister( theRoot )

123456

// Asigna la tabla al objeto VRegister creado con el constructor// Devuelve true si ha podido asignar la tabla correctamente// Una vez ejecutada es equivalente a crear una ficha en memoria de la tabla// ‐ szIdRefTable = IdRef de la tabla// ‐ bInitContenidos = Por defecto asume el valor true. Si se indica false no se dispararán los contenidos inicialesBoolean setTable( const QString& szIdRefTable, bool bInitContenidos = true )

12

// Devuelve un objeto VTableInfo de la tabla del registroVTableInfo tableInfo()

12345678

// Devuelve el contenido de un campo en función del tipo// La precisión en JavaScript de los números con decimales es la de tipo "double"// El identificador de campo compuesto permite especificar campos de la tabla y de las enlazadas// ‐ szIDCompuestoCampo = Identificador del campoString fieldToString( String szIDCompuestoCampo ) // Campos alfanuméricosNumber fieldToDouble( String szIDCompuestoCampo ) // Campos numéricos (con decimales)Number fieldToInt( String szIDCompuestoCampo ) // Campos numéricos (enteros)Boolean fieldToBool( String szIDCompuestoCampo ) // Campos booleanos

Page 38: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Funciones de contenido de campos por número de campo

Funciones de contenido old de campos por identificador

Funciones de contenido old de campos por número de campo

Funciones de modificación de campos por identificador

Funciones de modificación de campos por número de campo

9101112131415161718192021

DateTime fieldToDateTime( String szIDCompuestoCampo ) // Campos tiempo (fecha y hora)Date fieldToDate( String szIDCompuestoCampo ) // Campos fechaTime fieldToTime( String szIDCompuestoCampo ) // Campos hora // Devuelve true si el campo está vacío// Un campo numérico está vacío si su valor es 0// Un campo alfabético está vacío si la longitud del contenido es 0// ‐ szIDCompuestoCampo = Identificador del campoBoolean isFieldEmpty( String szIDCompuestoCampo ) // Devuelve true si el contenido del campo ha sido modificado// ‐ szIDCompuestoCampo = Identificador del campoBoolean isFieldModified( String szIDCompuestoCampo )

123456789

1011121314151617181920

// Devuelve el contenido de un campo en función del tipo// La precisión en JavaScript de los números con decimales es la de tipo "double"// ‐ nCampo = Número de campo. El primero campo es el 0String fieldToString( Number nCampo ) // Campos alfabéticosdouble fieldToDouble( Number nCampo ) // Campos numéricos (con decimales)Number fieldToInt( Number nCampo ) // Campos numéricos (enteros)Boolean fieldToBool( Number nCampo ) // Campos booleanosDateTime fieldToDateTime( Number nCampo ) // Campos tiempo (fecha y hora)Date fieldToDate( Number nCampo ) // Campos fechaTime fieldToTime( Number nCampo ) // Campos hora // Devuelve true si el campo está vacío// Un campo numérico está vacío si su valor es 0// Un campo alfabético está vacío si la longitud del contenido es 0// ‐ nCampo = Número de campo. El primero campo es el 0Boolean isFieldEmpty( Number nCampo ) // Devuelve true si el contenido del campo ha sido modificado// ‐ nCampo = Número de campo. El primero campo es el 0Boolean isFieldModified( Number nCampo )

123456789

101112

// Devuelve el contenido anterior a la modificación de un campo en función del tipo// El valor old es diferente al valor del campo si ha sido modificado pero aún se ha guardado la información en disco// La precisión en JavaScript de los números con decimales es la de tipo "double"// El identificador de campo compuesto permite especificar campos de la tabla y de las enlazadas// ‐ szIDCompuestoCampo = Identificador del campoString oldFieldToString( String szIDPrimarioCampo ) // Campos alfabéticosdouble oldFieldToDouble( String szIDPrimarioCampo ) // Campos numéricos (con decimales)Number oldFieldToInt( String szIDPrimarioCampo ) // Campos numéricos (enteros)Boolean oldFieldToBool( String szIDCompuestoCampo ) // Campos booleanos DateTime oldFieldToDateTime( String szIDPrimarioCampo ) // Campos tiempo (fecha y hora)Date oldFieldToDate( String szIDPrimarioCampo ) // Campos fechaTime oldFieldToTime( String szIDPrimarioCampo ) // Campos hora

123456789

1011

// Devuelve el contenido anterior a la modificación de un campo en función del tipo// El valor old es diferente al valor del campo si ha sido modificado pero aún se ha guardado la información en disco// La precisión en JavaScript de los números con decimales es la de tipo "double"// ‐ nCampo = Número de campo. El primero campo es el 0String oldFieldToString( Number nCampo ) // Campos alfabéticosdouble oldFieldToDouble( Number nCampo ) // Campos numéricos (con decimales)Number oldFieldToInt( Number nCampo ) // Campos numéricos (enteros)Boolean oldFieldToBool( Number nCampo ) // Campos booleanosDateTime oldFieldToDateTime( Number nCampo ) // Campos tiempo (fecha y hora)Date oldFieldToDate( Number nCampo ) // Campos fechaTime oldFieldToTime( Number nCampo ) // Campos hora

123456789

10

// Modifica el valor de un campo en función del tipo// La precisión en JavaScript de los números con decimales es la de tipo "double"// ‐ szIDPrimarioCampo = Identificador del campovoid setField( String szIDPrimarioCampo, String szText ) // Campos alfabéticosvoid setField( String szIDPrimarioCampo, double dValor) // Campos numéricos (con decimales)void setField( String szIDPrimarioCampo, int nValor ) // Campos numéricos (enteros)void setField( String szIDPrimarioCampo, Boolean bValor ) // Campos booleanosvoid setField( String szIDPrimarioCampo, DateTime dateTime ) // Campos tiempo (fecha y hora)void setField( String szIDPrimarioCampo, Date date ) // Campos fechavoid setField( String szIDPrimarioCampo, Time time ) // Campos hora

123

// Modifica el valor de un campo en función del tipo// La precisión en JavaScript de los números con decimales es la de tipo "double"// ‐ nCampo = Número de campo. El primero campo es el 0

Page 39: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Funciones de estado

Funciones de operaciones de disco

Funciones de navegante

Funciones de variables locales

Funciones de variables de sistema

456789

10

void setField( Number nCampo, String szText ) // Campos alfabéticosvoid setField( Number nCampo, double dValor) // Campos numéricos (con decimales)void setField( Number nCampo, int nValor ) // Campos numéricos (enteros)void setField( Number nCampo, Boolean bValor ) // Campos booleanosvoid setField( Number nCampo, DateTime dateTime ) // Campos tiempo (fecha y hora)void setField( Number nCampo, Date date ) // Campos fechavoid setField( Number nCampo, Time time ) // Campos hora

12345

// Devuelve true si el registro existeBoolean exist() // Devuelve true si alguno de los campos del registros ha sido modificadoBoolean isModified()

123456789

101112131415161718

// Da del alta el registro en la base de datosBoolean addRegister() // Modifica el registro en la base de datosBoolean modifyRegister() // Elimina el registro en la base de datosBoolean deleteRegister() // Devuelve true si la operación de base de datos ha finalizado satisfactoriamenteBoolean isOK() // Devuelve el número de error producido en la operación de base de datos// Ver enum de errores de operaciones de base de datosNumber errorNumber() // Devuelve el texto del mensaje de errorString errorMessage()

123456789

101112131415

// Devuelve una lista de registros del enlace plural del registro actual// Equivale al comando cargar plurales y a navegar a histórico de uno// ‐ szIDHistorico = Identificador del pluralVRegisterList loadPlurals( String szIDHistorico ) // Devuelve el registro de un campo enlace a maestro// Equivale al comando cargar maestro y a navegar a maestro// ‐ szIDPrimarioCampo = Identificador del campo con enlace a tabla maestraVRegister readMaster( String szIDPrimarioCampo ) // Devuelve el registro de un campo enlace a maestro con bloqueo// Al ser con bloqueo nos permite realizar operaciones de base de datos sobre el registro// Equivale al comando cargar maestro y a navegar a maestro// ‐ szIDPrimarioCampo = Identificador del campo con enlace a tabla maestraVRegister readLockingMaster( String szIDPrimarioCampo )

123456789

10111213141516171819

// Devuelve el valor de una variable local en función del tipo// ‐ szID = Identificador de la variable localString varToString( String szID ) // Variables alfabéticasdouble varToDouble( String szID ) // Variables numéricas (con decimales)Number varToInt( String szID ) // Variables numéricas (enteros)Boolean varToBool( String szID ) // Variables booleanasDateTime varToDateTime( String szID ) // Variables tiempo (fecha y hora)Date varToDate( String szID ) // Variables fechaTime varToTime( String szID ) // Variables hora // Asigna un valor a la variable local según el tipo// ‐ szID = Identificador de la variable localvoid setVar( String szID, String szValor ) // Variable alfabéticavoid setVar( String szID, double dValor ) // Variable numérica (con decimales)void setVar( String szID, int nValor ) // Variable numérica (entero)void setVar( String szID, Boolean bValor ) // Variable booleanavoid setVar( String szID, DateTime dt ) // Variable tiempo (fecha y hora)void setVar( String szID, Date date ) // Variable fechavoid setVar( String szID, Time time ) // Variable hora

123

// Devuelve el tamaño de registros de una listaNumber listSize()

Page 40: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Funciones de ejecución

Enumeraciones

Enum de errores de operaciones de base de datos

Ejemplos

Ejemplo de altas de registros con varias transacciones

456789

1011121314151617181920

// Devuelve la posición del registro en la lista de registrosNumber listPos() // Devuelve el número de la página en curso de un informeNumber currentPage() // Devuelve el número de páginas de un informeNumber lastPage() // Devuelve el nombre del usuario en cursoString userName() // Devuelve el path del directorio de caché de la aplicaciónString clientCachePath() // Devuelve true si el usuario tiene marcado en vAdmin el check SupervisorBoolean isAdministrator()

123

// Ejecuta un proceso V7 o JavaScript// ‐ szIdRefProcess = IdRef del proceso "Alias_proyecto/ID_proceso"Boolean runProcess( String szIdRefProcess )

123456789

10

ErrorNone = 0 OK, sin erroresErrorUnknown = 1 Error de registro desconocidoErrorTransUnknown = 2 Error: No hay transacción en cursoErrorAddReg = 3 Error en altaErrorDeleteReg = 4 Error en bajaErrorModifyReg = 5 Error en modificaciónErrorRead = 6 Error de lecturaErrorReadLocking = 7 Error lectura con bloqueoErrorNullDir = 8 Error dirección de ficha nulaErrorIndexOutOfRange = 9 Error index fuera de rango

123456789

1011121314151617181920212223242526272829303132333435363738394041

////////////////////////////////////////////////////////////// Ejemplo de altas de registros con varias transacciones // Se crea una transacciónif ( theRoot.beginTrans( "Transacción 1 ‐ Crear registros desde vJavaScript" ) ) // Se crea un registro vacío en memoria y se le asigna una tabla var reg = new VRegister( theRoot ); if ( reg.setTable( "vbaseUsuariosDat/USR_GRP" ) ) for ( var i=0; i < 10; ++i ) // Se modifican los datos reg.setField( "NAME", "VJS ‐ Nuevo grupo de usuarios " + i ); // Se crea el registro reg.addRegister(); // Se añaden los registros a la lista de salida theRegisterListOut.append( reg ); // Se cierra la primera transacción theRoot.commitTrans(); // Se crea una transacciónif ( theRoot.beginTrans( "Transacción 2 ‐ Crear registros desde vJavaScript" ) ) // Se crea un registro vacío en memoria y se le asigna una tabla var reg = new VRegister( theRoot ); if ( reg.setTable( "vbaseUsuariosDat/USR_GRP" ) ) for ( var i=0; i < 10; ++i ) // Se modifican los datos reg.setField( "NAME", "VJS ‐ Nuevo grupo de usuarios " + i ); // Se crea el registro reg.addRegister();

Page 41: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Ejemplo de eliminación de registros encontrados en una búsqueda

Ejemplo de navegación a maestros y a plurales

42434445464748

// Se añaden los registros a la lista de salida theRegisterListOut.append( reg ); // Se cierra la segunda transacción theRoot.rollbackTrans();

123456789

1011121314151617181920212223242526272829303132333435363738394041

////////////////////////////////////////////////////////////// Ejemplo de eliminación de registros encontrados en una búsqueda // Se importa la clase para usar sus funcionesimportClass( "VQuery" ); // Se crea el objeto búsquedavar bus = new VQuery( theRoot );bus.setQuery( "VJS_APP/USR_GRP_ENT_NAM"); // Se alimentan los paŕametros de búsquedavar des = prompt( "Desde", "VJS" );var has = prompt( "Desde", "VJSzzzzzzzzzzzzz" ); bus.setVar( "NOM_DES", des );bus.setVar( "NOM_HAS", has ); // Se ejecuta la búsqueda y los registros encontrados se añaden a la salidaif ( bus.exec() ) // Obtenemos de la búsqueda la lista de registros a eliminar var lis = bus.result(); var numReg = lis.listSize(); // Se crea una transaccióname if ( theRoot.beginTrans( "Eliminar registros desde vJavaScript" ) ) for ( var i=0; i < numReg; ++i ) // Obtenemos el registro de la lista a eliminar var reg = lis.readLockingAt( i ); // Se crea el registro reg.deleteRegister(); alert( "Se han eliminado satisfactoriamente " + numReg + " registros" );

123456789

10111213141516171819202122232425

////////////////////////////////////////////////////////////// Ejemplo de navegación a maestros y a plurales // Se importa la clase para usar sus funcionesimportClass( "VQuery" ); // Se crea el objeto búsquedavar bus = new VQuery( theRoot );bus.setQuery( "vbaseApp/ENT"); // Se ejecuta la búsqueda y los registros encontrados se añaden a la salidaif ( bus.exec() ) // Obtenemos de la búsqueda la lista de entidades var lisEnt = bus.result(); // Navegamos a las direcciones de las entidades lisDir = lisEnt.loadPlurals( "DIR_ENT" ); // Navegamos a maestros para obtener los países de las direcciones lisPai = lisDir.loadMasters( "PAI" ); // Se añaden los registros a la lista de salida theRegisterListOut.append( lisPai );

Page 42: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Clase

VRegisterList

Page 43: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

VRegisterList

Descripción

Los objetos de esta clase representan una lista de fichas de una tabla. Dispone de funciones de manejo de la lista y sus items pudiendose obtener

objetos de la clase VRegister por index, en modos lectura y lectura con bloqueo si vamos a modificar.

Las funciones del navegante devuelven otro objeto clase VRegisterList con la lista del maestro o historico.

La funcion sort está sobrecargada pudiendo llevar varios pares de parametros campo y bDescendente.

Objetos theRegisterListIn y theRegisterListOut

Si el proceso JavaScript tiene una tabla asociada de origen lista el script tendrá conectado un objeto de la clase VRegisterList denominado

theRegisterListIn que se crea automáticamente con la lista de registros de entrada.

Si el proceso tiene asociada una tabla destino de destino lista el script tendrá conectado un objeto de la clase VRegisterList denominado

theRegisterListOut que se crea automáticamente vacío y que podrá contener la lista de registros de salida.

Constructor

Funciones

Funciones de inicialización

Funciones de API de tabla

Funciones de lista e ítems

123

// Devuelve un objeto VRegisterList inicializado// Debe ejecutarse la función setTable() para asignarle la tablaVRegisterList( theRoot )

12345

// Asigna la tabla al objeto VRegisterList creado con el constructor// Devuelve true si ha podido asignar la tabla correctamente// Una vez ejecutada es equivalente a crear una cesta de la tabla// ‐ szIdRefTable = IdRef de la tablaBoolean setTable( String szIdRefTable )

12

// Devuelve un objeto VTableInfo de la tabla de la lista de registrosVTableInfo tableInfo();

123456789

1011121314151617181920212223242526

// Devuelve el número de registros de la listaNumber size() // Devuelve la posición del registro en curso de la listaNumber pos() // Limpia la lista de registros// Equivale al comando de instrucción "Cesta: Limpiar"void clear() // Invierte el orden de los registros de la listavoid invert() // Ordena la lista de registros por los campos indicados// Se puede ordenador por múltiples campos separados por comas// ‐ szIdCompuestoCampo = Identificador del campo de la tabla o de sus enlazadas// ‐ bDescendente = True para indicar orden descendente, por defecto es falsevoid sort( String szIdCompuestoCampo, Boolean bDescendente, ... ) // Añade un registro a la lista// Equivale al comando de instrucción "Cesta: Añadir ficha a la cesta"// ‐ register = Objeto de la clase VRegistervoid append( VRegister register ) // Añade una lista de registros a la lista// Equivale al comando de instrucción "Cesta: Añadir lista a la cesta"

Page 44: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Funciones de navegante

Funciones de ejecución

Funciones de variables locales

Funciones de variables de sistema

27282930313233343536373839404142434445464748495051525354555657585960

// ‐ registerList = Objeto de la clase VRegisterListvoid append( VRegisterList registerList ) // Cruza la lista de registros con la lista en curso// En la lista en curso sólo quedarán los registros coincidentes// Equivale al comando de instrucción "Cesta: Cruzar la lista de la cesta"// ‐ registerList = Objeto de la clase VRegisterListvoid cross( VRegisterList registerList ) // Quita de la lista el registro// Esto no eliminar el registro de la base de datos, sólo de la lista// Equivale al comando de instrucción "Cesta: Quitar ficha de la cesta"// ‐ register = Objeto de la clase VRegistervoid remove( VRegister register ) // Quita de la lista los registros de la lista que se pasa// En la lista en curso quedarán los registros no coincidentes// Esto no elimina los registros de la base de datos, sólo los de la cesta// ‐ registerList = Objeto de la clase VRegisterListvoid remove( VRegisterList registerList ) // Quita de la cesta el registro de la posición indicada// Esto no eliminar el registro de la base de datos, sólo de la lista// ‐ nIndex = Número de posición del registro en la listavoid removeAt( Number nIndex ) // Devuelve un objeto de clase VRegister con el registro de la posición seleccionada// ‐ nIndex = Número de posición del registro en la listaVRegister readAt( Number nIndex ) // Devuelve un objeto de clase VRegister bloqueado con el registro de la posición seleccionada// Al estar bloqueado se podrán realizar operaciones de base de datos contra el registro// ‐ nIndex = Número de posición del registro en la listaVRegister readLockingAt( Number nIndex )

123456789

10

// Devuelve una lista de registros del enlace plural de la lista de registros actual// Equivale al comando cargar plurales y a navegar a histórico de todos// ‐ szIDHistorico = Identificador del pluralVRegisterList loadPlurals( String szIDHistorico ) // Devuelve la lista de registros maestros del campo enlace a maestro// Devuelve los maestros sin repetición, aunque varios registros apunten al mismo maestro sólo lo devuelve una vez// Equivale al comando cargar maestros y a navegar a maestros// ‐ szIDPrimarioCampo = Identificador del campo con enlace a tabla maestraVRegisterList loadMasters( String szIDPrimarioCampo )

123

// Ejecuta un proceso V7 o JavaScript// ‐ szIdRefProcess = IdRef del proceso "Alias_proyecto/ID_proceso"Boolean runProcess( String szIdRefProcess )

123456789

10111213141516171819

// Devuelve el valor de una variable local en función del tipo// ‐ szID = Identificador de la variable localString varToString( String szID ) // Variables alfabéticasdouble varToDouble( String szID ) // Variables numéricas (con decimales)Number varToInt( String szID ) // Variables numéricas (enteros)Boolean varToBool( String szID ) // Variables booleanasDateTime varToDateTime( String szID ) // Variables tiempo (fecha y hora)Date varToDate( String szID ) // Variables fechaTime varToTime( String szID ) // Variables hora // Asigna un valor a la variable local según el tipo// ‐ szID = Identificador de la variable localvoid setVar( String szID, String szValor ) // Variable alfabéticavoid setVar( String szID, double dValor ) // Variable numérica (con decimales)void setVar( String szID, int nValor ) // Variable numérica (entero)void setVar( String szID, Boolean bValor ) // Variable booleanavoid setVar( String szID, DateTime dt ) // Variable tiempo (fecha y hora)void setVar( String szID, Date date ) // Variable fechavoid setVar( String szID, Time time ) // Variable hora

12345678

// Devuelve el tamaño de registros de una listaNumber listSize() // Devuelve la posición del registro en la lista de registrosNumber listPos() // Devuelve el número de la página en curso de un informeNumber currentPage()

Page 45: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Ejemplos

Ejemplo de navegación a plurales y maestros

Ejemplo de recorrer lista eliminando fichas

91011121314151617181920

// Devuelve el número de páginas de un informeNumber lastPage() // Devuelve el nombre del usuario en cursoString userName() // Devuelve el path del directorio de caché de la aplicaciónString clientCachePath() // Devuelve true si el usuario tiene marcado en vAdmin el check SupervisorBoolean isAdministrator()

123456789

101112

////////////////////////////////////////////////////////////// Ejemplo de navegación a plurales y maestros// Recibimos una lista de países y devolvemos una lista de entidades // Se carga el histórico de direcciones de los paísesvar lisDir = theRegisterListIn.loadPlurals( "DIR_PAI" ); // Se cargan las entidades de las direccionesvar lisEnt = lisDir.loadMasters( "ENT" ); // Se alimenta la lista de salida con las entidades cargadastheRegisterListOut.append( lisEnt );

123456789

1011121314151617181920212223242526272829303132333435363738

////////////////////////////////////////////////////////////// Ejemplo de recorrer lista eliminando fichas // Abrimos la transacciónif ( theRoot.beginTrans( "Recorrer lista eliminando fichas de " + theRegisterListIn.tableInfo().name() ) ) // Se recorre la lista de entrada var numReg = theRegisterListIn.size(); var numRegDel = 0; var msgError = ""; for ( var x=0; x<numReg; ++x ) // Se lee el registro con bloqueo para poder modificar var reg = theRegisterListIn.readLockingAt( x ); if ( reg.isOK() ) reg.deleteRegister(); if ( reg.isOK() ) numRegDel += 1; else msgError += " ‐ " + reg.fieldToString( "NAME" )+ "\n"; // Finalizamos la transacción // Si no realizamos explícitamente el commitTrans() V7 lo hace automaticamente theRoot.commitTrans(); // Se preparar el mensaje final con el restulado y se visualizavar msg = "Se han eliminado " + numRegDel + " " + theRegisterListIn.tableInfo().name() + "\n\n"if ( msgError != "" ) msg += "No se han podido eliminar los siguientes registros: " + "\n" + msgError; alert( msg );

Page 46: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Clase

VQuery

Page 47: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

VQuery

Descripción

La clase VQuery nos permite ejecutar objetos búsqueda. Construimos un objeto VQuery pasandole el objeto VRoot en curso y le indicamos la búsqueda

a ejecutar con la función setQuery. Una vez inicializado el objeto ya podemos usar el resto de funciones (salvo result): le pasamos contenido a las

variables locales de la búsqueda con setVarLocal (si lo requiere) y la ejecutamos con la función exec. Ahora ya podemos recoger los resultados con la

función result, que nos devuelve un objeto de la clase VRegisterList con el cual podemos operar.

Constructor

Funciones

Funciones de inicialización

Funciones de API del objeto

Funciones de variables locales

Funciones de operaciones

Ejemplos

Ejemplo de búsqueda sin parámetros

123

// Crea una instancia de objeto de la clase VQuery// Debe ejecutarse la función setQuery() para asignarle la búsquedaVQuery( theRoot )

123

// Fija la búsqueda que se asocia al objeto// ‐ szIdRefQuery = IdRef (Alias_Proyecto/Id_Búsqueda) de la búsquedavoid setQuery( String szIdRefQuery )

12

// Devuelve el objeto VObjectInfo correspondiente a la búsqueda asignada al objeto VQueryVObjectInfo objectInfo()

123456789

10111213141516171819

// Devuelve el valor de una variable local según el tipo// ‐ szID = Identificador de la variable localString varToString( String szID ) // Variable alfabéticaNumber varToDouble( String szID ) // Variable numérica (con decimales)Number varToInt( String szID ) // Variable numérica (entero)Boolean varToBool( String szID ) // Variable booleana DateTime varToDateTime( String szID ) // Variable tiempo (fecha y hora)Date varToDate( String szID ) // Variable fechaTime varToTime( String szID ) // Variable hora // Asigna un valor a la variable local según el tipo// ‐ szID = Identificador de la variable localvoid setVar( String szID, String szValor ) // Variable alfabéticavoid setVar( String szID, double dValor ) // Variable numérica (con decimales)void setVar( String szID, int nValor ) // Variable numérica (entero)void setVar( String szID, Boolean bValor ) // Variable booleanavoid setVar( String szID, DateTime dt ) // Variable tiempo (fecha y hora)void setVar( String szID, Date date ) // Variable fechavoid setVar( String szID, Time time ) // Variable hora

12345

// Ejecuta la búsqueda y devuelve true si finaliza correctamenteBoolean exec() // Devuelve un objeto VRegisterList con la lista de registro encontrados en la búsquedaVRegisterList result()

123456

////////////////////////////////////////////////////////////// Ejemplo de búsqueda sin parámetros // Se importa la clase para usar sus funcionesimportClass( "VQuery" );

Page 48: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Ejemplo de búsqueda con parámetros

789

10111213141516

// Se crea el objeto búsquedavar bus = new VQuery( theRoot );bus.setQuery( "vbaseUsuariosApp/USR_GRP_NOM"); // Se ejecuta la búsqueda y los registros encontrados se añaden a la salidaif ( bus.exec() ) // Le pasamos los resultados a la lista de salida theRegisterListOut.append( bus.result() );

123456789

1011121314151617181920

////////////////////////////////////////////////////////////// Ejemplo de búsqueda con parámetros // Se importa la clase para usar sus funcionesimportClass( "VQuery" ); // Se crea el objeto búsquedavar bus = new VQuery( theRoot );bus.setQuery( "VJS_APP/USR_GRP_ENT_NAM"); // Se alimentan los paŕametros de búsquedabus.setVar( "NOM_DES", "VJS" );bus.setVar( "NOM_HAS", "VJSzzzzzzzzzzzzzzz" ); // Se ejecuta la búsqueda y los registros encontrados se añaden a la salidaif ( bus.exec() ) // Le pasamos los resultados a la lista de salida theRegisterListOut.append( bus.result() );

Page 49: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Clase

VDir

Page 50: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

VDir

Descripción

La clase VDir proporciona acceso a las estructuras de directorios y sus contenidos.

Un VDir se utiliza para manipular los nombres de sendas, acceso a la información sobre las sendas y los ficheros y manipular el sistema de archivos

subyacente.

VDir usa “/” como un separador universal de directorios de la misma manera que “/” se utiliza como un separador de ruta en URLs. Si siempre utiliza

“/” como separador de directorio, VDir traducirá las sendas para cumplir con el sistema operativo subyacente.

Un VDir puede apuntar a un directorio utilizando una ruta absoluta o relativa. Las rutas absolutas comienzan con el separador de directorio

(opcionalmente precedido por una especificación de unidad en Windows). Los nombres relativos de archivo comienzan con un nombre de directorio o

un nombre de archivo.

Constructor

Funciones

Funciones generales

Funciones de path

123

// Crea una instancia de objeto de la clase VDir// ‐ szFileName = Nombre o path del ficheroVDir( String szFileName )

123456789

10111213141516171819202122

23

// Devuelve el nombre del directorio, por ejemplo "vbase" // No se debe confundir con el path "/instancias/vbase"// Si el directorio no tiene nombre, por ejemplo el raíz devuelve ""String dirName() // Devuelve true si el directorio existe y false si no existeBoolean exists() // Devuelve true si el path es absolutoBoolean isAbsolute() // Devuelve true si el path es relativo// En Linux y Mac es relativo si el path no comienza por "/"Boolean isRelative() // Devuelve true si el directorio es legible// Un valor false no garantiza que los ficheros no sean accesibles Boolean isReadable() // Devuelve true si es el directorio raíz// Si es un enlace simbólico del directorio raíz devolverá false// Para enlaces simbólicos usar la función canonicalPath()

Boolean isRoot()

123456789

10111213141516171819202122232425

// Devuelve el path del directorioString path() // Devuelve el path canonica, sin enlaces simbólicos ni "." o ".." redundantes// Si el sistema no tiene enlaces simbólicos la función equivale a absolutePath()// Si el canonical path no existe la función no devuelve nadaString canonicalPath() // Devuelve el path absoluto (empieza con "/" o con la letra del dispositivo)// Puede contener enlaces simbólicos pero no "." o ".." redundates o múltiples separadoresString absolutePath() // Convierte el path del directorio en un path absoluto// Si ya es absoluto no hace nada// Devuelve true si la conversión se ha realizadoBoolean makeAbsolute() // Devuelve el path de un fichero// ‐ szFileName = Nombre o path del ficheroString filePath( String szFileName ) // Devuelve el path de un fichero relativo al directorio// szFileName = Nombre o path del ficheroString relativeFilePath( String szFileName )

Page 51: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Funciones de operaciones con directorios

Funciones de ficheros del directorio

Enumeraciones

Enum de flags de filtros

25262728293031323334353637383940414243

// Devuelve el path absoluto de un fichero en un directo// No se verifica si el fichero existe en el directorio// No se elimina del path los separadores múltiples o "." o ".." redundantes// szFileName = Nombre o path del ficheroString absoluteFilePath( String szFileName ) // Cambia el directorio del objeto VDir// Devuelve true si el directorio existe y es legible, en caso contrario false// El cambio de directorio no se produce si devuelve false// Usar cd("..") es equivalente a usar la función cdUp()// szDirName = Nombre o path del directorioBoolean cd( String szDirName ) // Cambia el directorio del objetos VDir al directorio padre// Devuelve true si el directorio existe y es legible, en caso contrario false// El cambio de directorio no se produce si devuelve false// Usar cdUp() es equivalente a usar la función cd("..") Boolean cdUp()

123456789

101112131415161718192021

// Crear un directorio// Devuelve true si se ha podido crear el nuevo directorio// szDirName = Nombre o path del directorioBoolean mkdir( String szDirName ) // Crear los directorios inexistentes de un path// Devuelve true si ha podido crear todo el path del directorio// Se crean todos los subdirectorios necesario para crear el directorio// szDirPath = Path del directorioBoolean mkpath( String szDirPath ) // Elimina un directorio// El directorio debe estar vacío para poder eliminarlo// Devuelve true sin finaliza correctamente// szDirName = Nombre o path del directorioBoolean rmdir( String szDirName ) // Elimina un path (directorio y subdirectorios).// Devuelve true si finaliza correctamente// szDirPath = Path del directorio Boolean rmpath( String szDirPath )

123456789

10111213141516171819202122232425262728293031

// Devuelve true si el fichero existe// szFilename = Nombre o path del ficheroBoolean exists( String szFileName ) // Carga en el objeto la lista de ficheros y subdirectorio del directorio en curso// szNameFilter = Nombre del filtro// nFilters = Ver enum de tipos de filtros// nSortFlags = Ver enum de tipos de ordenaciónBoolean load( StringList& aszNameFilters, Number nFilters = QDir::NoFilter, Number nSortFlags = QDir::NoSort )Boolean load( Number nFilters = QDir::NoFilter, Number nSortFlags = QDir::NoSort ) // Refresca en el objeto directorio la lista de ficheros y subdirectoriosvoid refresh() // Devuelve del nº de ficheros y directorios cargados con load()Number count() // Devuelve un objeto VFileInfo correspondiente al nº de elemento de la lista// nIndex = Número de orden del fichero en la lista cargada de ficheros del directorioVFileInfo entryAt( Number nIndex ) // Elimina un fichero o directorio// Devuelve true si finaliza correctamente// szFilename = Nombre o path del ficheroBoolean remove( String szFileName ) // Renombra un fichero o directorio// Devuelve true si finaliza correctamente// szOldname = Nombre o path del del fichero a cambiar// szNename = Nombre o path del nuevo para el ficheroBoolean rename( String szOldName, String szNewName )

123

FilterDirs = 0x001 Sólo directorios que cumplan el filtroFilterFiles = 0x002 Solo ficherosFilterDrives = 0x004 Lista de dispositivos (se ignora en Linux)

Page 52: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Enum de flags de ordenación

Ejemplos

Ejemplo de uso de las funciones de la clase VDir

345678

91011121314151617

FilterDrives = 0x004 Lista de dispositivos (se ignora en Linux) FilterNoSymLinks = 0x008 No incluir en la lista los enlaces simbólicos (accesos directos)FilterAllEntries = FilterDirs | FilterFiles | FilterDrives Incluye en la lista directorios, ficheros, dispositivos y enlaces simbólicosFilterReadable = 0x010 Incluye los directorios o ficheros que tienen acceso de lecturaFilterWritable = 0x020 Incluye los directorios o ficheros que tienen acceso de escrituraFilterExecutable = 0x040 Incluye los ficheros que tienen acceso de ejecución

FilterModified = 0x080 Incluye sólo los ficheros que han sido modificados (ignorado en Unix)FilterHidden = 0x100 Incluye los ficheros ocultosFilterSystem = 0x200 Incluye los ficheros del sistemaFilterAllDirs = 0x400 Todos los directorios, sin aplicar filtrosFilterCaseSensitive = 0x800 El filtro es sensible a mayúsculas y minúsculasFilterNoDotAndDotDot = 0x1000 No incluye en la lista las entradas "." y "..", directorios en curso y padreFilterNoDot = 0x2000 No incluye en la lista la entrada ".", el directorio en cursoFilterNoDotDot = 0x4000 No incluye en la lista la entrada "..", el directorio padreFilterNone = ‐1 Sin filtro

123456789

1011

SortName = 0x00 Ordenado por nombreSortTime = 0x01 Ordenado por fecha de última modificaciónSortSize = 0x02 Ordenado por tamañoSortUnsorted = 0x03 No ordenadoSortDirsFirst = 0x04 Los directorios al principio, después los ficherosSortReversed = 0x08 Orden inversoSortIgnoreCase = 0x10 Ignorar mayúsculasSortDirsLast = 0x20 Los ficheros al principio, después los directoriosSortLocaleAware = 0x40 Ordenado según la configuración localSortType = 0x80 Ordenado por extensiónSortNone = ‐1 No ordenado por defecto

123456789

10111213141516171819202122232425262728293031323334353637383940

////////////////////////////////////////////////////////////// Ejemplo de las funciones de la clase VDir // Para poder usar la clase VDir y sus funciones hay que importarla primeroimportClass( "VDir" ); // Lo primero que hay que hacer es crear un objeto VDir con un directorio o vacíovar dir = new VDir(); // En caso de crear el objeto VDir sin un directorio es necesario asignar un pathdir.cd( "/Instancias/001" );alert( "Se ha cambiado la senda del objeto directorio a " + dir.path() ) // Convertir el path del direcotorio en path absolutoif ( dir.makeAbsolute() ) alert( dir.path() + " ya era un path abosluto" ); // Cargar la lista de ficheros y directoriosdir.load(); alert( "¿Existe el directorio " + dir.path() + "? " + dir.exists() + "\n" + "¿El directorio es el raíz? " + dir.isRoot() + "\n" + "¿El directorio es legible? " + dir.isReadable() + "\n" + "¿El directorio es absoluto? " + dir.isAbsolute() + "\n" + "¿El directorio es relativo? " + dir.isRelative() + "\n" + "Este directorio tiene " + dir.count() + " ficheros y directorios."); // Se crea un directoriobOk = dir.mkdir( "/" + "new" ); if ( bOk ) // Se elimina el directorio dir.rmdir( "/" + "new" ); // Se crean los directorios y subidrectorios necesariosbOk = dir.mkpath( "/backup/files/txt" ); if ( bOk ) // Se elimina el path completo dir.rmpath( "/backup/files/txt" );

Page 53: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Clase

VFile

Page 54: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

VFile

Descripción

Esta clase representa a un fichero binario y disponemos de funciones para consultar sus características, modificarlas así como crear, leer o escribir un

fichero binario en disco.

Constructor

Funciones

Funciones de información del fichero

Funciones de operaciones sobre el fichero

123

// Crea una instancia de objeto de la clase VFile// ‐ szFileName = Nombre o path del ficheroVFile( String szFileName )

123456789

1011121314151617181920212223242526272829303132

// Devuelve true si el fin de fichero ya ha sido leídoBoolean atEnd() // Devuelve el código de estado del fichero// Ver enum de errores de ficheroNumber error() // Devuelve true si el fichero existeBoolean exists() // Devuelve el nombre del ficheroString fileName() // Devuelve true si el fichero sólo puede ser manipulado secuencialmenteBoolean isSequential() // Devuelve el valor de los permisos del fichero// El valor devuelto es la suma (OR) de los valores de los permisos// Ver enum de permisos del ficheroNumber permissions() // Devuelve la posición en curso del fichero// Se corresponde con la posición del último dato escrito o leído// Si el fichero está cerrado o es secuencial devuelve cero.Number pos() // Devuelve el tamaño del ficheroNumber size() // Devuelve el path absoluto del fichero o directorio del enlace simbólico o acceso directo// Devuelve una cadena vacía si el fichero no es un enlace simbólico o acceso directoString symLinkTarget()

123456789

101112131415161718192021222324252627

// Cierra el fichero// Antes de cerrarlo ejecuta flushvoid close() // Hace una copia del fichero en curso con otro nombre o path// Devuelve true si la copia ha podido realizarse con éxito// ‐ szNewName = Path donde se almacenará la copia del ficheroBoolean copy( String szNewName ) // Guarda en disco los buffers de datos del fichero// Devuelve true si ha podido realizarse con éxitoBoolean flush() // Crear un acceso directo (Windows) o enlace simbólico (Unix)// Devuelve true si se creado con éxito// ‐ szLinkName = Nombre o path completo del enlaceBoolean link( String szLinkName ) // Abre el fichero con los modos especificados// Los modos de apertura son combinables// Se pueden especificar varios separados por "|"// ‐ nMode = Ver enum de modos de apertura del ficheroBoolean open( Number nMode ) // Elimina el fichero en curso// Devuelve true si se ha eliminado correctamenteBoolean remove()

Page 55: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Funciones para el buffer del fichero

Enumeraciones

Enum de modos de apertura del fichero

Enum de errores de fichero

282930313233343536373839404142434445464748495051525354

// Renombra el fichero en curso// Devuelve true si ha podido renombrarse correctamente.// Si el fichero con el nombre szNewName ya existe devuelve false// ‐ szNewName = Nombre o path nuevo para el ficheroBoolean rename( String szNewName ) // Cambia el tamaño del fichero// Devuelve true si ha posido realizarse correctamente// ‐ nSize = Valor en bytes del nuevo tamaño del ficheroBoolean resize( Number nSize ) // Fija la posición en curso del fichero// Devuelve true si se ha posicionado correctamente// Para fichero secuenciales devuelve el valor false// Si la posición es posterior al fin de fichero, el fichero no se extiende, si se escribe en esa posición sí se extiende el fichero// ‐ nOffset = Número en bytes que representa la nueva posición del ficheroBoolean seek( Number nOffset ) // Fija los permisos del fichero// Se pueden especificar múltiples permisos de forma combinada, separados por "|"// Devuelve true si la asignación de permisos ha finalizado correctamente// ‐ nPermissions = Ver enum de permisos del ficheroBoolean setPermissions( Number nPermissions ) // Fija el estado del fichero al valor a sin errores "ErrorNone".void unsetError()

123456789

101112131415161718192021222324

// Devuelve el tamaño del buffer en bytesNumber bufferSize() // Fija el tamaño del buffer en bytes// ‐ nSize = Tamaño del buffer en bytesvoid setBufferSize( Number nSize ) // Devuelve el número de bytes leídos que será el tamaño del buffer o menos// Si el fichero está posicionado al final devolverá 0Number readBuffer() // Graba el buffer en el disco// ‐ nBytes = Número de bytes del buffer a escribir, es opcional, si no se especifica asume el tamaño del bufferNumber writeBuffer( Number nBytes = ‐1 ) // Se usa para leer byte a byte el buffer// Devuelve el valor del byte (entre 0 y 255) de la posición del buffer seleccionada// ‐ nIndex = Posición del bufferNumber bufferAt( Number nIndex ) // Se usa para escribir byte a byte en el buffer// ‐ nIndex = Posición del buffer en la que se escribirá// ‐ nValue = Valor de 0 a 255 a escribir en la posición del buffervoid setBufferAt( Number nIndex, Number nValue )

12345678

OpenModeNotOpen = 0x0000 No está abiertoOpenModeReadOnly = 0x0001 Abierto para lecturaOpenModeWriteOnly = 0x0002 Abierto para escrituraOpenModeReadWrite = OpenModeReadOnly | OpenModeWriteOnly Abierto para lectura/escrituraOpenModeAppend = 0x0004 Abierto para escribir al final del fichero, sin borrar el contenido existenteOpenModeTruncate = 0x0008 Abierto para escritura truncando. Si no existe y si existe se borra su contenido antes de escribirOpenModeText = 0x0010 Se abre en modo texto. Al leer el fin de línea se convierte al carácter "\n" y al escribir se convierte a la codificación local del sistema operativo, por ejemplo OpenModeUnbuffered = 0x0020 No se utiliza buffer para el fichero

123456789

101112131415

ErrorNone = 00 Ok, no se ha producido ningún errorErrorRead = 01 Se ha producido un error al leer del ficheroErrorWrite = 02 Se ha producido un error al escribir en el ficheroErrorFatal = 03 Se ha producido un error fatalErrorResource = 04 Se ha producido un error en el recursoErrorOpen = 05 No ha sido posible abrir el ficheroErrorAbort = 06 Se ha abortado la operación sobre el ficheroErrorTimeOut = 07 Se ha producido un error de timeoutErrorUnspecified = 08 Se ha producido un error no especificadoErrorRemove = 09 No ha sido posible eliminar el ficheroErrorRename = 10 No ha sido posible renombrar el ficheroErrorPosition = 11 La posición del fichero no puede ser modificadaErrorResize = 12 No es posible redimensionar el ficheroErrorPermissions = 13 No tiene permisos de acceso al ficheroErrorCopy = 14 No se podido copiar el fichero

Page 56: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Enum de permisos del fichero

Ejemplos

Ejemplo de creación de un fichero de texto

123456789

101112

PermissionReadOwner = 0x4000 El propietario puede leer el ficheroPermissionWriteOwner = 0x2000 El propietario puede escribir en el ficheroPermissionExeOwner = 0x1000 El propietario puede ejecutar el ficheroPermissionReadUser = 0x0400 El usuario puede leer el ficheroPermissionWriteUser = 0x0200 El usuario puede escribir en el ficheroPermissionExeUser = 0x0100 El usuario puede ejecutar el ficheroPermissionReadGroup = 0x0040 El grupo de usuarios puede leer el ficheroPermissionWriteGroup = 0x0020 El grupo de usuarios puede escribir en el ficheroPermissionExeGroup = 0x0010 El grupo de usuarios puede ejecutar el ficheroPermissionReadOther = 0x0004 Todos pueden leer el ficheroPermissionWriteOther = 0x0002 Todos pueden escribir en el ficheroPermissionExeOther = 0x0001 Todos pueden ejecutar el fichero

123456789

101112131415161718192021222324252627

////////////////////////////////////////////////////////////// Ejemplo de creación de un fichero de texto // Para usar las funciones de la clase VFile primero hay que importarlaimportClass( "VFile" ); // Se declara el objeto ficherovar fi = new VFile( "/buffer.txt" ); // Se abre el fichero de escritura (si no existe se crea y si existe se limpia)if ( fi.open( VFile.OpenModeWriteOnly||VFile.OpenModeTruncate) ) // Se llena el buffer con las 26 letras del abecedario for( var x=0; x<26; ++x ) fi.setBufferAt( x, 65+x ); // Se graba el buffer fi.writeBuffer( 26 ); // Se cierra el fichero fi.close();else // Si no ha sido posible abrir el fichero se muestra error alert( "No se pudo abrir el ficher " + fi.fileName(), "Error" );

Page 57: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Clase

VFileInfo

Page 58: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

VFileInfo

Descripción

Los objetos de esta clase contienen la información de un fichero de disco. Tiene funciones generales para obtener información de la senda, el fichero y

sus permisos además de permitir alterar algunas características del fichero.

Funciones

Funciones del path

Funciones de información

123456789

101112131415161718192021222324252627282930313233343536373839404142434445

// Devuelve el path absoluto del fichero incluyendo el nombre del ficheroString absoluteFilePath() // Devuelve el path absoluto del fichero sin incluir el nombre del ficheroString absolutePath() // Devuelve el nombre del fichero sin incluir la senda ni la extensión// El nombre son todos los caracteres hasta el primero punto "."// Por ejemplo de "/tmp/archive.tar.gz" devolvería "archive"String baseName() // Devuelve el nombre del enlace al fichero// EN Mac OS X devuelve el nombre del enlace, en otras plataformas devuelve una cadena vacía String bundleName() // Devuelve el path de la senda absoluta de un enlace simbólico del fichero incluyendo el nombre// Si el fichero no existe devuelve una cadena vacíaString canonicalFilePath() // Devuelve el path de la senda absoluta de un enlace simbólico del fichero sin incluir el nombre// Si el fichero no existe devuelve una cadena vacíaString canonicalPath() // Devuelve el nombre completo del fichero incluyendo la extensión sin la senda del path// Por ejemplo de "/tmp/archive.tar.gz" devolvería "archive.tar"String completeBaseName() // Devuelve todas las extensiones del fichero// Por ejemplo, de "/tmp/archive.tar.gz" devuelve "tar.gz"String completeSuffix() // Devuelve el nombre del fichero excluyendo la senda// Por ejemplo, de "/tmp/archive.tar.gz" devuelve "archive.tar.gz"String fileName() // Devuelve el nombre del fichero incluyendo el path tanto si es absoluto o relativoString filePath() // Devuelve el nombre del grupo del fichero// Sólo para sistemas UnixString group() // Devuelve el código (Id) del grupo del fichero// Sólo para sistemas UnixNumber groupId()

123456789

1011121314151617181920212223

// Devuelve true si el path apunta a una senda absolutaBoolean isAbsolute() // Devuelve true si el path apunta a un enlace (simbólico o paquete)Boolean isBundle() // Devuelve true si el path apunta a un directorioBoolean isDir() // Devuelve true si el path apunta a un fichero ejecutableBoolean isExecutable() // Devuelve true si el path apunta a un fichero o a un enlace simbólicoBoolean isFile() // Devuelve true si el path apunta a un fichero o directorio ocultoBoolean isHidden() // Devuelve true si el path apunta a un fichero que puede ser leídoBoolean isReadable() // Devuelve true si el path apunta a un senda relativaBoolean isRelative()

Page 59: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Funciones de asignación

Ejemplos

Ejemplo de lectura de los ficheros del directorio raíz del sistema

2324252627282930313233343536373839404142434445464748

Boolean isRelative() // Devuelve true si el path apunta al directorio raíz o a un enlace simbólico del mismoBoolean isRoot() // Devuelve true si el path apunta a un enlace simbólicoBoolean isSymLink() // Devuelve true si el path apunta a un fichero en el que se puede escribirBoolean isWritable() // Devuelve true si el fichero existeBoolean exists() // Devuelve true si el cacheado del fichero está habilitadoBoolean caching() // Devuelve la fecha y hora de creación del fichero// En sistemas Unix esta fecha cambia tanto en la creación como si hay modificación de permisos, por ejemploDateTime created() // Devuelve la fecha y hora de la última modificación del ficheroDateTime lastModified() // Devuelve la fecha y hora de la última vez que el fichero fue leído o tuvo un accesoDateTime lastRead()

123456789

101112131415161718192021222324252627282930313233343536373839404142

// Convertir el path del fichero en un senda absoluta// Devuelve true si la conversión ha finalizado correctamente// Si el path ya era absoluto devuelve falseBoolean makeAbsolute() // Devuelve el nombre del propietario del ficheroString owner() // Devuelve el código (Id) del propietario del ficheroNumber ownerId() // Devuelve el path del ficheroString path() // Chequea los permisos del fichero y devuelve true si el fichero los tiene// ‐ permissions = Ver enum de tipos de permisos del fichero en la clase VFileBoolean permission( Number permissions ) // Devuelve el valor de los permisos del fichero// El valor devuelto es la suma (OR) de los valores de los permisos// Ver enum de permisos del ficheroNumber permissions() // Refresca la información del ficherovoid refresh() // Estable si el sistema tendrá caché de la información del fichero// ‐ bEnable = True para que el sistema haga caché de la información del ficherovoid setCaching( Boolean bEnable ) // Fija el fichero o directorio al que apuntará el objeto// ‐ szFilePath = Path del fichero o directoriovoid setFile( String szFilePath ) // Devuelve el tamaño del fichero en bytesNumber size() // Devuelve la extensión del fichero String suffix() // Devuelve el path absoluto del fichero apuntado por el enlace simbólico o acceso directoString symLinkTarget()

123456789

1011121314

////////////////////////////////////////////////////////////// Ejemplo de lectura de los ficheros del directorio raíz del sistema // Para poder usar la clase VDir y sus funciones hay que importarla primeroimportClass( "VDir" ); // Ss crear un objeto VDir con el directorio temporal de la aplicaciónvar dir = new VDir( theApp.rootPath() ); // Cargar la lista de ficheros y directoriosdir.load(); // Se inicializan las variables de trabajovar filesNumber =0;

Page 60: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

1516171819

2021222324252627282930313233343536

var totalSize = 0;var filesList = ""; // Se recorren todos los ficheros del directoriofor ( i=0; i<dir.count(); i++ )

// Se lee el fichero (Se obtiene un objeto VTableInfo) file = dir.entryAt( i ); // Si es fichero se acumulan sus datos if ( file.isFile() ) filesNumber++; totalSize += file.size(); filesList += dir.entryAt( i ).filePath(file.path() ) + "\n"; // Se visualizan los datos de todos los ficheros del directorioalert( "En el directorio raíz (" + dir.path() + ")" + "\n" + "Se han encontrado " + filesNumber.toString() + " ficheros: \n\n" + filesList + "\n" + "El tamaño total de los ficheros es " + totalSize.toString() + " bytes." );

Page 61: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Clase

VTextFile

Page 62: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

VTextFile

Descripción

Esta clase representa a un fichero de texto y disponemos de funciones para consultar sus características, modificarlas así como crear, leer o escribir un

fichero de texto en disco.

Constructor

Funciones

Funciones generales

123

// Crea una instancia de objeto de la clase VTextFile// ‐ szFileName = Nombre o path del fichero de textoVTextFile( String szFileName )

123456789

10111213141516171819202122232425262728293031323334

353637383940414243444546474849505152535455565758596061

// Devuelve la codificación que se aplicará al ficherovoid codec() // Fijar el codec para codificar los datos que escriben// Aplicar esta función sobre el objeto VTextFile creado antes de escribir// Por defecto se crea con code UTF‐8// ‐ szCodecName = Ver lista de nombres de códigos (escribir entrecomillado)void setCodec( String szCodecName ); // Devuelve true si el fin de fichero ha sido leídoBoolean atEnd() // Cierre el ficherovoid close() // Devuelve el código numérico del errorNumber error() // Devuelve true si el fichero existeBoolean exists() // Devuelve el nombre del ficheroString fileName() // Fuerza que se guarden todos los buffers a discovoid flush() // Abre el fichero// ‐ nMode = Ver enum de modo de aperturaBoolean open( Number nMode ) // Devuelve el código numérico de los permisosNumber permissions()

// Devuelve la posición actual del ficheroNumber pos() // Devuelve el contenido completo de todo el ficheroString readAll() // Devuelve el contenido de una línea// ‐ nMaxLen = Longitud máxima a devolver, por defecto 0 = hasta fin de líneaString readLine( Number nMaxlen=0 ) // Fija la posición del fichero. Devuelve true si el posicionamiento finaliza correctamente// ‐ nOffset = Valor numérico de la posiciónBoolean seek( Number nOffset ) // Fija los permisos del fichero// ‐ nPermissions = Ver enum de permisos de un fichero Boolean setPermissions( Number nPermissions ) // Devuelve el tamaño en bytes del ficheroNumber size() // Fija el error del fichero al valor del enum VFile::NoErrorvoid unsetError() // Grabar una cadena de texto en la posición en curso// ‐ szTexto = Texto a grabarvoid write( String szText )

Page 63: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Lista de nombres de códigos

Ejemplos

Ejemplos de creación de un fichero de texto

Ejemplos de lectura de un fichero de texto

123456789

1011121314151617181920212223242526272829303132

"Apple Roman""Big5""Big5‐HKSCS""CP949""EUC‐JP""EUC‐KR""GB18030‐0""IBM 850""IBM 866""IBM 874""ISO 2022‐JP""ISO 8859‐1 to 10""ISO 8859‐13 to 16""Iscii‐Bng, Dev, Gjr, Knd, Mlm, Ori, Pnj, Tlg, and Tml""JIS X 0201""JIS X 0208""KOI8‐R""KOI8‐U""MuleLao‐1""ROMAN8""Shift‐JIS""TIS‐620""TSCII""UTF‐8""UTF‐16""UTF‐16BE""UTF‐16LE""UTF‐32""UTF‐32BE""UTF‐32LE""Windows‐1250 to 1258""WINSAMI2"

123456789

10111213141516171819202122232425

////////////////////////////////////////////////////////////// Ejemplo de creación de un fichero de texto // Para usar las funciones de la clase VFile primero hay que importarlaimportClass( "VTextFile" );importClass( "VFile" ); // Se declara el objeto ficherovar fi = new VTextFile( "/TextFile.txt" ); // Se abre el fichero en modo escritura. Crea si no existe o limpia si existeif ( fi.open( VFile.OpenModeWriteOnly | VFile.OpenModeTruncate) ) // Se llena el buffer con las 26 letras del abecedario for( var x=0; x<30; ++x ) fi.write( "Línea " + x + " de texto a grabar" + "\n" ); // Se cierra el fichero fi.close();else // Si no ha sido posible abrir el fichero se muestra error alert( "No se pudo abrir el ficher " + fi.fileName() + ", error " + fi.error(), "Error" );

123456789

101112131415161718192021

////////////////////////////////////////////////////////////// Ejemplo de lectura de un fichero de texto // Para usar las funciones de la clase VFile primero hay que importarlaimportClass( "VTextFile" );importClass( "VFile" ); // Se declara el objeto ficherovar fi = new VTextFile( "/TextFile.txt" ); // Se abre el fichero en modo de sólo lecturaif ( fi.open( VFile.OpenModeReadOnly ) ) // Leer todo el fichero alert( "Tamaño del fichero = " + fi.size() + " bytes" ); // Leer todo el fichero alert( fi.readAll() ); // Como hemos leído todo el fichero estamos posicionados al final // Para volver a leer el fichero línea a línea nos posicionamos al princicipio

Page 64: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

2223242526272829303132333435363738394041

fi.seek( 0 ); // Recorremos el fichero línea a línea guardando su contenido var txt = ""; while ( fi.atEnd() == false ) txt += fi.readLine(); // Mostramos la variable con todo el contenido del fichero alert( txt ); // Se cierra el fichero fi.close();else // Si no ha sido posible abrir el fichero se muestra error alert( "No se pudo abrir el ficher " + fi.fileName() + ", error " + fi.error(), "Error" );

Page 65: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Clase

VXmlWriter

Page 66: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

VXmlWriter

Descripción

Esta clase representa un objeto XML y nos permite generar un fichero XML con el contenido de una lista.

¿Cómo crear un fichero XML desde una lista de registros?

Para empezar hay que contruir el objeto VXmlWriter con new pasándole como parámetro un objeto de la clase VRegisterList.

El codec por defecto es “UTF­8″. Para cambiarlo por ejemplo a UTF­16, llamar a la funcion setCodec( “UTF­16″ ). Hay una lista de los codecs

disponibles más abajo.

Si no se usa la función setDocType(“mytype”) no se incluirá la cabecera opcional .

Por defecto el texto es formateado con saltos de linea e indentación. Para cancelarlo usar la función setAutoFormatting( false ). Con la función

setAutoFormattingIndent( nSpacesOrTabs ) ajustamos el número de espacios o tabs de indentación. Si usamos valores positivos para n representan

espacios y si son negativos tabs. Por defecto la indentación son 4 espacios.

Con la función addInitialTag( “tag”) le añadimos uno o varios tags, llamando varias veces a la función, que envuelven a los registros de la lista. Lo

normal es usar una con el nombre de la tabla.

Con la función setRowTag( “tag” ) le decimos la etiqueta que ha de envolver a cada registro. Si no se usa por defecto es “row”.

A continuación con las funciones addField( “tagCol”, “IDCOMPUESTOCAMPO”) y addFormula( “tagCol”, “Formula” ) le añadimos tantas columnas

como queramos por registro.

Y ya solo nos queda llamar a la función writeFile( “file.xml” ); para que nos lo escriba en disco.

Constructor

Funciones

Funciones de inicialización

123

// Crea una instancia de objeto de la clase VXmlWriter// ‐ registerList = Objeto de lista de registros que alimentará el objetoVXmlWriter( VRegisterList registerList )

123456789

1011121314151617181920212223242526272829303132333435

// Fija el tipo de documento// ‐ szType = Texto que identifica el tipo de documento XMLvoid setDocType( String szType ) // Fijar el codec para codificar los datos que escriben// Aplicar esta función sobre el objeto VTextFile creado antes de escribir// Por defecto se crea con code UTF‐8// ‐ szCodecName = Ver lista de nombres de códigos (Escribir entrecomillado)void setCodec( String szCodecName ) // Fija si se aplica o no formato automático// Por defecto el texto es formateado con saltos de linea e indentación// Por defecto la indentación son 4 espacios// ‐ bSet = True para aplicar autoforma y false para cancelarlovoid setAutoFormatting( Boolean bSet ) // Ajusta el número de espacios o tabs de indentación// Si usamos valores positivos para nSpacesOrTabs representan espacios// Si usamos valores negativos para nSpacesOrTabs representan tabs.void setAutoFormattingIndent( Number nSpacesOrTabs ) // Se añade uno o varios tags, llamando varias veces a la función// Estos tags envuelven los registros de la lista// Lo normal es usar una etiqueta con el nombre de la tabla// ‐ szTag = Etiqueta (Normalmente el nombre de la tabla)void addInitialTag( String szTag ) // Fijamos la etiqueta que envuelve a cada registro// Si no se aplica esta función el valor por defecto de la etiqueta es "row"// ‐ szTag = Etiqueta (Por defecto es row)void setRowTag( String szTag ) // Permite añadir tantas columnas como campos definamos// ‐ szTag = Etiqueta de la columna (Por ejemplo el ID del campo// ‐ szIdCampoCompuesto ‐ Identificador del campo de la tabla o de las relacionadas

Page 67: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Funciones de operaciones

Funciones de información

Lista de nombres de codecs

Ejemplos

Ejemplo de exportación de una lista de registros a XML

3536

// ‐ szIdCampoCompuesto ‐ Identificador del campo de la tabla o de las relacionadasvoid addField( String szTag, String szIdCampoCompuesto )

1234567

// Graba en disco el fichero XML// Devuelve true si la generación ha finalizado correctamente// ‐ szPath = Path o senda del fichero a generarwriteFile( String szPath ) // Devuelve un String con el XML generadoString writeToString()

12

// Devuelve la codificación que se aplicará al ficherovoid codec()

12345678

91011121314151617181920212223242526272829303132

"Apple Roman""Big5""Big5‐HKSCS""CP949""EUC‐JP""EUC‐KR""GB18030‐0""IBM 850"

"IBM 866""IBM 874""ISO 2022‐JP""ISO 8859‐1 to 10""ISO 8859‐13 to 16""Iscii‐Bng, Dev, Gjr, Knd, Mlm, Ori, Pnj, Tlg, and Tml""JIS X 0201""JIS X 0208""KOI8‐R""KOI8‐U""MuleLao‐1""ROMAN8""Shift‐JIS""TIS‐620""TSCII""UTF‐8""UTF‐16""UTF‐16BE""UTF‐16LE""UTF‐32""UTF‐32BE""UTF‐32LE""Windows‐1250 to 1258""WINSAMI2"

123456789

101112131415161718192021222324252627

////////////////////////////////////////////////////////////// Exportar una lista de registros a xml // Se importa la clase para usar sus funcionesimportClass( "VQuery" );importClass( "VXmlWriter" ); // Se crea el objeto búsquedavar bus = new VQuery( theRoot );bus.setQuery( "vbaseUsuariosApp/USR_GRP_NOM" ); // Se ejecuta la búsquedaif ( bus.exec() ) // Se crea el objeto XML con la lista de registros de entrada var xml = new VXmlWriter( bus.result() ); // Se fija el tipo de documento xml.setDocType( "vXML" ); // Se añade como etiqueta de documento, el nombre de la tabla xml.addInitialTag( "USR_GRP" ); // Se añade la etiqueta de registro xml.setRowTag( "row" ); // Se añaden los campos de la tabla

Page 68: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Ejemplo de exportación a XML de los registros buscados de cualquier tabla

2829303132

3334353637

xml.addField( "Código", "ID" ); xml.addField( "Nombre", "NAME" ); xml.addField( "Usuario alta", "ALT_USR.NAME" ); // Grabar el fichero en disco

xml.writeFile( theApp.rootPath() + "/USR_GRP" + ".xml" ); // Se muestra un mensaje confirmando la exportaciónalert( "Se han exportado satisfactoriamente " + bus.result().size() + " grupos de usuarios", "Información" );

123456789

101112131415161718192021222324252627282930313233343536373839404142434445

////////////////////////////////////////////////////////////// Exportar a XML todos los campos de los registros buscados en una tabla //// Este script es ejecutado desde otro proceso que le pasa la búsqueda a ejecutar (Variable local BUS)// Una vez ejecutada la búsqueda se exportan todos los registros encontrados en la búsqueda// Se exportan todos los campos de la tabla // Se importa la clase para usar sus funcionesimportClass( "VQuery" );importClass( "VXmlWriter" ); // Se crea el objeto búsquedavar bus = new VQuery( theRoot );bus.setQuery( theRoot.varToString( "BUS" ) ); // Se ejecuta la búsquedaif ( bus.exec() ) // Se obtiene el VRegisterList de la búsqueda var lista = bus.result(); // Se crea el objeto VTableInfo para obtener la información de la tabla var ti = lista.tableInfo(); // Se crea el objeto XML con la lista de registros de entrada var xml = new VXmlWriter( lista ); // Se añade como etiqueta de documento, el nombre de la tabla xml.addInitialTag( ti.id() ); // Se añade la etiqueta de registro xml.setRowTag( "row" ); // Se recorren los campos y se añaden las columnas al XML for ( col=0; col < ti.fieldCount(); ++col ) xml.addField( ti.fieldName( col ), ti.fieldId( col ) ); // Grabar el fichero en disco xml.writeFile( theApp.rootPath() + "/" + ti.id() + ".xml" ); // Se muestra un mensaje confirmando la exportaciónalert( "Se han exportado satisfactoriamente " + lista.size() + " " + ti.name(), "Información" );

Page 69: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Funciones

Globales

Page 70: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Funciones globales

Descripción

Estas funciones de interfaz ayudan a la interacción con el usuario de la aplicación.

Sintaxis

Ejemplo

Ejemplo de uso de las funciones globales

123456789

101112131415

// Muestra un mensaje en un cuadro de diálogo con el botón Aceptar// ‐ szMensaje = Mensaje a mostrar// ‐ szTitulo = Texto opcional para mostrar en el título del cuadro de diálogovoid alert( String szMensaje, [String szTitulo] ) // Muestra un cuadro de diálogo de confirmación// ‐ szPregunta = Texto que se mostrará al usuario// ‐ szTitulo = Texto opcional para mostrar en el título del cuadro de diálogoBoolean confirm( String szPregunta, [String szTitulo] ) // Muestra un cuadro de diálogo solicitando la introducción de un dato// ‐ szLabel = Texto descriptivo del dato a introducir// ‐ szContIni = Valor opcional que puede mostrar el dato a introducir// ‐ szTitulo = Texto opcional para mostrar en el título del cuadro de diálogoString prompt( String szLabel, [String szContIni], [String szTitulo] )

123456789

10111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455

////////////////////////////////////////////////////////////// Cálculo del factorial de un número // Confirmación de que se quiere ejecutar el procesoif ( confirm("¿Seguro que desea calcular el factorial de un número?", "Confirmación") ) // Pedir el número a calcular var numero = parseInt( prompt("Número a calcular", 10, "Cálculo de factural") ); // Se muestra el resultado del cálculo realizado alert( "El factorial del número " + formatNumber( numero ) + " es " + formatNumber( factorial( numero ) ), // Calcula el factorial de un número// ‐ num = Número del que se desea calcular el factorial function factorial( num ) var factorial = 1; for ( x=1; x<num+1; ++x) factorial = factorial * x; return( factorial ); // Formatear un número// ‐ num = Número a formatear (admite decimales)// ‐ prefix = Texto de prefijo a aplicar// ‐ postfix = Texto de sufijo a aplicar function formatNumber( num, prefix, postfix ) prefix = prefix || ''; postfix = postfix || ''; num += ''; var splitStr = num.split( '.' ); var splitLeft = splitStr[0]; var splitRight = splitStr.length > 1 ? ',' + splitStr[1] : ''; var regx = /(\d+)(\d3)/; while ( regx.test( splitLeft ) ) splitLeft = splitLeft.replace( regx, '$1' + '.' + '$2' ); return prefix + splitLeft + splitRight + postfix; // Quitar el formato a un número// ‐ num = Número a quitar el formateo

Page 71: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

5556575859

function unformatNumber( num ) return num.replace( /([0‐9\,\‐])/g,'' )*1;

Page 72: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Directorio de scripts

Page 73: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Directorio de scripts

Descripción

Cada proyecto de Velneo V7 contiene un directorio donde podemos crear una estructura de carpetas y guardar en ellas los ficheros de scripts: QML,

JavaScript, … y sus ficheros auxiliares.

Al ejecutar una aplicación con vClient, vWebClient o vDataClient, se cargan tambien los directorios de scripts de cada proyecto de la aplicación.

Scripts reutilizables

Un mismo fichero QML o JavaScript se puede usar desde distintos objetos V7. Además, hay distintos tipos de objetos V7 que los usan como procesos,

lista QML y formulario QML. Un mismo fichero QML o JavaScript puede ser usado en objetos con distintas entradas y salidas, tabla y/o ficha/lista,

controlando el programador mediante las funciones API de los objetos de entrada/salida que nos da vJavaScript. Tambien se puede asumir que un

fichero QML o JavaScript tiene una tabla de entrada y/o salida determinadas, con el nivel de abstraccion deseado en cada fichero script.

Para introducir en un objeto V7 la propiedad “Fichero script” en el edit disponemos de un botón que nos presenta un árbol con los directorios de

scripts del proyecto en curso y de sus proyectos heredados.

Velneo V7 incorpora también editores de codigo fuente para los distintos lenguajes soportados.

Se puede usar “import” en los ficheros fuente QML para importar otros ficheros QML, JavaScript o carpetas enteras contenidas en los directorios

scripts del proyecto y heredados.

Page 74: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Editor de scripts

Page 75: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Editor de scripts

Descripción

En el componente de edición vDevelop se ha integrado un editor de scripts para facilitar la edición de los ficheros de script que se almacenan en el

directorio de scripts. El editor contempla las siguientes funcionalidades:

Coloreado de código

Como podemos ver en la imagen superior el editor contempla coloreado de código en función del lenguaje.

Autocompletar para clases y objetos

Autocompletar para funciones, señales y métodos

Autocompletar para enums de parámetros de funciones

Page 76: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Ayuda con los parámetros de funciones

Configuración del editor

Destacar la última opción que permite dejar configurado por defecto el tamaño de zoom que se aplicará al código cuando es editado. Para guardar el

tamaño deseado, primero debemos seleccionar el zoom deseado y luego ejecutar esta opción.

Toolbar del editor

Como vemos la toolbar incluye los botones de:

Configuración

Verificación de sintaxis de script correcta. Es recomendable verificar antes de ejecutar

Botones para copiar, cortar y pegar

Botones para deshacer y rehacer

Combo de selección manual del zoom

Botones para aumentar o disminuir el zoom

Botones para imprimir el script o guardarlo en disco en formato PDF

Toolbar de búsqueda

Con esta toolbar se pueden buscar textos en el script editado y movernos hacia adelante o hacia atrás de los ocurrencias encontradas.

Page 77: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Lenguajes

Page 78: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Lenguajes

Descripción

JavaScript

QML

Page 79: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Lenguajes

JavaScript

Page 80: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

JavaScript

Descripción

Es posible crear en Velneo V7 procesos y fórmulas JavaScript para ser usados en el desarrollo de aplicaciones.

¿Qué objetos de Velneo V7 permiten la ejecución de JavaScript?

Lista QML

Formulario QML

Procesos JavaScript

Fórmulas JavaScript

¿Qué funciones de JavaScript están soportadas en Velneo V7?

En los scripts de JavaScript podremos usar:

Todo el conjunto de funciones soportadas en Qt 4.7 y que dan soporte al estándar EcmaScript­262

Todas las funciones implementadas en el nuevo API

A tener en cuenta

Por tratarse de funciones específicas del navegador, no estarán disponibles:

Funciones del DOM (Manejador de objetos del documento)

Funciones del BOM (Manejador de objetos del navegador)

Page 81: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

JavaScript

Procesos

Page 82: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Procesos JavaScript

Descripción

Se ha añadido una nueva propiedad “Lenguaje” a los procesos. Las opciones disponibles son: V7 y JavaScript.

Los procesos con lenguaje JavaScript tienen las mismas propiedades que los procesos V7 salvo que en lugar del árbol de instrucciones disponemos de

un fichero de texto, en el cual escribiremos nuestro programa JavaScript.

Según el tipo de Entrada y el tipo de Salida dispondremos de distintos objetos:

Entrada

Ficha: VRegisterIn

Lista: VRegisterListIn

Salida

Ficha: VRegisterOut

Lista: VRegisterListOut

Por ejemplo en un proceso con entrada ficha y salida lista dispondremos de dos objetos: VRegisterIn con la ficha de entrada y VRegisterListOut con la

lista de salida.

Para ilustrarlo vamos a ver una comparativa del mismo proceso en V7 y en JavaScript con las siguientes tablas:

Partimos de una persona y cargamos su plural de repartos.

Cargamos las películas de los repartos.

Le pasamos las películas a la lista de salida.

Ordenamos la salida por año de mayor a menor.

Versión V7

Versión JavaScript

Page 83: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones
Page 84: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

JavaScript

Fórmulas

Page 85: Manual de scriptsdl.velneo.com/es/productos/v7/ayuda/7.10/velneo_vdevelop_v7/manual... · VProjectInfo Descripción Este objeto contiene la información de un proyecto. Tiene funciones

Fórmulas JavaScript

Descripción

El lenguaje JavaScript ha sido implementado en las fórmulas de Velneo V7. Cualquier propiedad tipo fórmula de cualquier objeto puede ahora ser

escrita en V7 o JavaScript, independientemente del lenguaje de las otras fórmulas. Lo mismo sucede con los campos tipo fórmula dinámica que ahora

pueden escribirse en V7 o JavaScript.

En el nuevo editor de fórmulas, más simple y eficaz, disponemos de un combobox, situado en la toolbar superior, donde podemos seleccionar el

lenguaje deseado: V7 o JavaScript. Los asistentes como “Insertar campo” tienen en cuenta el lenguaje seleccionado e insertan el texto con la sintaxis

adecuada.

Por ejemplo, al insertar el campo NAME con lenguaje V7 será:

y con JavaScript será:

En el ejemplo se puede observar que en JavaScript ya elige el asistente automáticamente la función vreg.fieldToString de la clase VRegister según el

tipo de campo, decimales, signo, etc.

Las fórmulas JavaScript tienen conectado un objeto “vreg” de la clase VRegister a traves del cual se tiene acceso al contenido de los campos, variables

locales, globales y de sistema. Solo está disponible el juego de funciones de lectura, no el de modificación como en procesos, pués el objetivo de las

fórmulas es obtener un valor. También tienen conectado el objeto VApp, la aplicación.

1 #NAME

1 vreg.fieldToString(“NAME”)