Herramientas de usuario

Herramientas del sitio


wiki:2.-desarrollo-app:2.4.-scripting-modelo-objetos:a.-objetos-sistema:1.-vbscript:1.3.-this:start

THIS



Se trata de diferentes funcionalidades disponibles para su uso cuando estamos operando con un objeto de colección. El nombre de los objetos vendrá determinado por el que el programador quiera asignar durante su manejo. Al contrario que appdata, este ámbito, en general, no tiene un nombre determinado, salvo un objeto especial que indicamos a continuación.

Destacar la existencia del objeto This. Esta referencia apunta al objeto dentro del cual se está ejecutando el script actual. Los scripts que se ejecuten dentro de un ámbito de colección tendrán esta referencia a Nothing.

Para hacernos una idea, si dentro del proceso de uso de una app de ventas, por ejemplo, comenzamos a realizar un pedido a un cliente, el objeto This en ese momento será el propio pedido, un objeto de la colección “Pedidos”, independientemente de que se haya o no guardado. Una vez finalizamos el pedido, queremos comprobar algún dato en la ficha del cliente al que hemos realizado el pedido. Accedemos a su ficha y la cargamos; en ese momento, el objeto This es el cliente, un objeto del tipo “Clientes”.



ClearAllVariables


Tipo Método
Tipo de Dato devuelto Ninguno
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Limpia todas las variables del objeto. Si alguna de ellas contiene un objeto, este será liberado a menos que pertenezca a una colección.

Clone


Tipo Método
Parámetros CopyID: True si se copia también el ID del objeto. False para copiar todo menos el ID (crear un objeto nuevo con los mismos valores del objeto original)
Tipo de Dato devuelto XOneDataObject
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Este método copia el objeto actual y devuelve la copia.

Todas las propiedades, las variables y los contents del objeto se copian hacia el nuevo objeto.

Opcionalmente se puede copiar también el ID por lo que se tendría una copia exactamente igual del objeto original, que al grabarse en base de datos ocuparía el mismo registro en la tabla.

Si no se copia el ID, cuando el objeto se grabe, generará un nuevo registro en la base de datos.

Ejemplo de Uso:

' ............
	objcab.save
        newID=objcab("ID")
' Recorremos el content de LinDocumentos y vamos clonando los registros actualizando el IDCABDOCUMENTO.
	obj.contents("LinDocumentos").loadall
	nl = obj.contents("LinDocumentos").count
	for j=0 to nl-1
		set objl=obj.contents("LinDocumentos")(j)
		set objlnew=objl.clone(false)
		objlnew("IDCABDOCUMENTO")=newID
		objlnew.save
		set objlnew=nothing
		set objl=nothing
	next

Contents


Tipo Propiedad
Acceso Lectura
Parámetros Name: nombre del content
Tipo de Dato devuelto XOneDataCollection
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Devuelve el contents cuyo nombre se pide. Si el contents no existe, devuelve NULL.

Ejemplo de Uso:

	Set colldet=this.contents("Detalles")

ContentsCount


Tipo Propiedad
Acceso Lectura
Tipo de Dato devuelto Entero
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)



Devuelve la cantidad de contents que tiene el objeto.
No corresponde a las propiedades @, sino a las secciones <contents> dentro de la declaración del objeto.

Create


Tipo Método
Parámetros Params: Arreglo con parejas campo, valor para asignar a las propiedades del objeto.
Tipo de Dato devuelto Ninguno
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)



Asigna valores a un grupo de propiedades del objeto en una sola llamada.

Se utiliza sobre todo para copiar grupos de propiedades o para crear un objeto nuevo por primera vez.

DeleteObject


Tipo Método
Tipo de Dato devuelto Ninguno
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Elimina el objeto de la base de datos. Si el objeto no tiene ID (no se ha grabado nunca) el método no hace nada.

Ejemplo de Uso:

	colldet(j).deleteobject

Dirty


Tipo Propiedad
Acceso Lectura
Tipo de Dato devuelto Booleano (Entero)
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Devuelve True (No cero) si el objeto está modificado (alguna de sus propiedades se ha modificado o alguno de los objetos de alguno de sus contents ha sido modificado) o False (cero) si está recién cargado o recién grabado, o no se ha modificado desde que se ha creado o cargado.

Ejemplo de Uso:

dirty.vbs
	is_dirty=This.Dirty
	if is_dirty<>0 then
		st_msg="¿Desea guardar los cambios?"
		ok=appdata.UserInterface.MsgBox (st_msg,"ATENCION!",4)
		if ok=6 Then
			This.save
		end if
	end if

ExecuteNode


Tipo Método
Parámetros NodeName: Nombre del nodo que se desea ejecutar. Así si el nodo a ejecutar es <accnode>…</accnode> habrá que pasar en este parámetro “accnode
Tipo de Dato devuelto Ninguno
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)



Si el nodo nombrado no existe, esta función no hace nada.

EL nodo puede contener tantos nodos <action> como se quiera, y serán ejecutados en el mismo orden que están declarados en el XML.

Ejemplo de Uso:

executenode.vbs
this.ExecuteNode "mensajes"


FieldPropertyValue


Tipo Propiedad
Acceso Lectura
Parámetros FieldName: Nombre del campo del objeto del que se quiere conocer el valor de un atributo. AttrName: Nombre del atributo cuyo valor se quiere conocer
Tipo de Dato devuelto Texto
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Devuelve el valor de un atributo de un campo del objeto. Normalmente los atributos pueden tener como valor macros, por lo que al llamar esta propiedad, dichas macros serán sustituidas.

Es importante no confundir esta función con la de igual nombre en la colección, ya que aunque para sacar el valor inicial del atributo, esta función llama a la de la colección propietaria, después se desarrollan las macros, mientras que la función de la colección no puede sustituir macros, porque no tiene valores.

Ejemplo de Uso:

	col.FieldPropertyValue("DESCRIPCION", "type")

IdFieldName


Tipo Propiedad
Acceso Lectura
Tipo de Dato devuelto Texto
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Devuelve el nombre del campo clave de la colección a la que pertenece este objeto.

El valor de esta función está definido en el atributo “idfieldname” de la cabecera de la colección, pero puede haber implementaciones del objeto de datos que definan este valor dinámicamente.

MethodName


Tipo Método
Parámetros MethodName: Nombre del método que se quiere ejecutar.
Tipo de Dato devuelto Ninguno
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)



Ejecuta el método cuyo nombre se pasa como parámetro. Esta función realmente no es necesaria para ejecutar métodos visibles desde los scripts, sino que se programó para usar en los frameworks que quieran ejecutar métodos desde acciones XML.

La forma más normal de ejecutar un método desde un script no es usando esta función, sino llamando el método directamente.

Item


Tipo Propiedad
Acceso Lectura-Escritura
Parámetros Key: Nombre del campo del objeto cuyo valor se quiere leer o modificar.
Tipo de Dato devuelto Texto
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Devuelve o asigna valor a un campo del objeto cuyo nombre se pasa como parámetro.

Esta propiedad es la propiedad por defecto de la clase XoneDataObject (y equivalentes o derivadas) así que se puede omitir su nombre en la ejecución.

Ejemplo de Uso:

	This.Item(“NOMBRECAMPO”) = 1
 
	'Es equivalente a:
	This(“NOMBRECAMPO”) = 1

LoadAll


Tipo Método
Tipo de Dato devuelto Ninguno
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Este método llama a LoadAll en todas las colecciones contents del objeto, excepto aquellas que tengan en su declaración el atributo “obj-loadall=false”.

Debido al tipo de acción que ejecuta este método, debe emplearse con cuidado, especialmente en entornos en los que la memoria sea un problema.

Ejemplo de Uso:

	This.Contents("Partes").LoadAll

ObjectItem


Tipo Método
Acceso Lectura
Parámetros FieldName: Nombre del campo usado para leer el valor de enlace.SearchCollName:Nombre de la colección de búsqueda. Puede ser una cadena vacía para usar el valor del atributo “mapcoll” del campo FieldName.
Tipo de Dato devuelto XOneDataObject
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)



Ésta es una de las funciones menos comprendidas y por tanto menos usadas del modelo de objetos.

En realidad, su principio es banstante simple, pero como no se conoce o no se comprende, se tiende a hacer lo mismo que hace esta llamada “a pelo”.

Esta llamada lee el valor del campo indicado por FieldName. Si el parámetro SearchCollName trae valor, se busca la colección con ese nombre, si viene vacío, se busca el valor del atributo “mapcol” del campo indicado por FieldName y con este nombre se busca la colección correspondiente.

Una vez que se tiene la colección, se busca en ella el objeto cuya clave corresponda con el valor leído del campo FieldName y se devuelve dicho objeto.
En el siguiente ejemplo se muestra mejor:


Suponiendo que “This” corresponde a un usuario, cuyo campo IDEMPRESA tiene el ID de la empresa correspondiente a este usuario, la llamada:

Set emp = This.ObjectItem (“IDEMPRESA”, “Empresas”)
es equivalente a:
idemp = This(“IDEMPRESA”)
Set coll = AppData.GetCollection(“Empresas”)
Set emp = coll(CStr(idemp))


OldItem


Tipo Propiedad
Acceso Lectura-Escritura
Parámetros Key: Nombre del campo del objeto cuyo valor anterior se quiere leer o modificar.
Tipo de Dato devuelto Variant
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)



Esta propiedad permite leer el valor que tenía un campo del objeto antes de asignarle el último valor.

Mediante esta estructura se puede implantar un mecanismo simple de “undo” en los valores de las propiedades, siempre teniendo en cuenta que al asignar valor a un campo del objeto pueden saltar eventos que efectúen más actualizaciones y que por tanto provoquen que este valor no sea exactamente el que tenía antes de la primera actualización, sino después de ejecutados todos los eventos.

Aunque este no es el caso más normal, es bueno que se tenga en cuenta.

Ejemplo de Uso:

	det("PESO")=this.olditem("MAP_PESO2")

OwnerApp


Tipo Propiedad
Acceso Lectura
Tipo de Dato devuelto XOneApplication
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Devuelve una referencia a la aplicación que ha creado este objeto.

Como no hay más de una aplicación ejecutándose en un mismo entorno, el valor devuelto por esta propiedad es el mismo que tiene la variable global AppData.

El uso de esta propiedad está pensado más bien para uso interno de la maquinaria, pero como es visible para el modelo de objetos, pues ahí está para quien quiera usarlo.

OwnerCollection


Tipo Propiedad
Acceso Lectura
Tipo de Dato devuelto :XOneCollection
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)



Devuelve la colección propietaria del objeto. Es importante tener en cuenta que la colección propietaria de un objeto no es aquella a la que se haya adicionado con AddItem sino la que lo ha creado mediante CreateObject.

Si un objeto se va a hacer pertenecer a otra colección se debe llamar SetOwnerColl antes de llamar a AddItem. La colección propietaria es la que se usa para llamar a los métodos que necesitan acceder al XML base del objeto.

Ejemplo de Uso:

	this("CLIENTEC")=This.OwnerCollection.OwnerObject("CODCLIENTE")

PropertyGroup


Tipo Propiedad
Acceso Lectura
Parámetros FieldName: Nombre del campo cuyo grupo se quiere conocer.
Tipo de Dato devuelto Texto
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)



Devuelve el nombre del grupo a que pertenece el campo cuyo nombre se indica.

Si el grupo no existe, la propiedad no tiene definido ningún grupo o el número es incorrecto, esta propiedad devuelve una cadena vacía.

Si hay una plataforma activa y el grupo tiene definición de nodo <platform> para la misma, el valor devuelto será el que esté definido por el correspondiente nodo <platform>.

Ejemplo de Uso:

	coll.PropertyGroup("CODIGO")

PropertyTitle


Tipo Propiedad
Acceso Lectura
Parámetros FieldName: Nombre del campo cuyo título se quiere conocer.
Tipo de Dato devuelto Texto
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Devuelve el título visible de la propiedad (campo de datos) del objeto.

El título se encuentra en el atributo “title” de la definición. Si no hay “title” se devuelve el texto del nodo de la propiedad.

En caso de que haya nodo <platform> para la propiedad con el nombre de la plataforma activa y en dicho nodo está definido el atributo “title”, este será el valor que se devuelva, con prioridad sobre los casos anteriores.

Ejemplo de Uso:

	coll.PropertyTitle("MAP_CODIGO")

refresh


Tipo Método
Parámetros Sentence: Opcional: Sentencia SQL usada para refrescar el objeto.
Tipo de Dato devuelto Ninguno


Este método refresca los datos del objeto volviendo a leerlos de la base de datos.

Los cambios hechos en las propiedades serán sustituidos por los que se lean de la base de datos.

Una vez terminada la lectura de los datos el objeto queda marcado como “limpio” (no modificado).

Los contents no se tocan, así que si se quiere refrescar de forma completa un objeto habrá que hacer un recorrido por sus contents y refrescar cada objeto.
Si la colección propietaria de este objeto es especial, el método no hace nada.

Ejemplo de Uso:

	this.refresh "PROP1,PROP2"

refreshValue


Tipo Método
Parámetros Propiedades del objeto a las que queremos actualizar el valor separadas por comas
Tipo de Dato devuelto Ninguno
Plataforma Android, iOS, Windows 10


Este método refresca ÚNICAMENTE EL VALOR de las propiedades del objeto que especifiquemos como parámetro. NO se repintan márgenes, colores, o cualquier tipo de formato que haya podido cambiar, para eso tendríamos que utilizar el ui.refresh, este ui.refreshValue es exclusivo para actualizar el “VALOR” de la propiedad, y por lo tanto, es más rápido que el ui.refresh.

Ejemplo de Uso:

	This(“PROP1”)=”valor1”
	This(“PROP2”)=”valor2”
 
	ui.refreshValue “PROP1,PROP2”

Save


Tipo Método
Tipo de Dato devuelto Ninguno
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)



Graba los datos del objeto en el soporte de datos que corresponda.
En general se trata de la base de datos descrita por la conexión principal, pero también puede ser una conexión externa, una conexión remota o cualquier otro tipo de soporte permitido.

Si el objeto está marcado como read-only en la declaración de la colección, este método no hace nada.

Si la conexión en que trabaja la colección propietaria del objeto está marcada para replicar, se generarán todos los datos para que se replique la grabación.

Una vez terminada la grabación se ejecutarán las acciones del nodo <insert> que sean del tipo <action> lo que permitirá que se enlacen los objetos que tengan los contents.

La llamada a este método graba también los contents una vez que se hayan ejecutado las acciones de inserción.

Si no se cumple alguna regla de grabación, la llamada al método falla con el código correspondiente. Si falla la grabación del objeto o de alguno de los que contiene, el método también fallará.

Ejemplo de Uso:

	obj.save

SetOwnerColl


Tipo Método
Parámetros NewColl: Colección que se quiere asignar como propietaria. No puede ser Nothing.
Tipo de Dato devuelto Ninguno
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)

Asigna como propietaria la colección que se pasa como parámetro.

Normalmente esta llamada se usa para cambiar el propietario cuando se crea una copia de un objeto y se va a adicionar a otra colección diferente de la que corresponde al objeto original.

Variables


Tipo Propiedad
Acceso Lectura-Escritura
Parámetros Key: Nombre de la variable que se quiere leer o asignar.
Tipo de Dato devuelto Variant
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Lee el valor de una variable, o le asigna un nuevo valor.

Las variables pueden considerarse de forma más o menos similar a las propiedades del objeto, teniendo en cuenta que:

  • Las variables no se graban en soporte persistente (base de datos, etc.)
  • Las variables no se replican ni se buscan de forma remota.
  • Las variables no pueden tener indicadores de tipos, fórmulas, llamadas a métodos o eventos, etc.
  • Las variables pueden contener referencias a objetos, colecciones, etc.


Ejemplo de Uso:

	AppData.CurrentEnterprise.Variables("NUEVO")=1
wiki/2.-desarrollo-app/2.4.-scripting-modelo-objetos/a.-objetos-sistema/1.-vbscript/1.3.-this/start.txt · Última modificación: 2019/01/29 19:03 por ejetoro