Mmmm.. creo que me expliqué mal.. aunque por ahi viene la cosa. Las clases están importadas, ese no es el problema.
Este es el bloque de código de DataConvert.as donde cacha el error
Código :
catch(err:Error){
//Si estamos tratando de parsear una propiedad con un tipo de
//datos distinto, mostramos un error.
throw new Error("Error setting " + i + " to the new class. Incompatible datatypes. \n" + err.message);
}
Esto sucede porque estoy mandando como parámetro, la propiedad ObjCliente de tipo Cliente, al no ser un tipo ordinario de datos ni ser del tipo "Oportunidades" no puede convertirlo en un objeto Cliente, la clase no está preparada para esa funcionalidad.
Por cierto, estoy trabajando con WebServices en .Net, acá les copio un resultado (XML) del método sobre el cual estoy trabajando:
Como van a ver, el webservice me trae todas las propiedades de la "oportunidad" que a la vez pertenece a un Cliente, del cual tambien ya traigo sus datos, en el XML se ve anidado...
Código :
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfOportunidad xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://XlineProjectTools.org/">
<Oportunidad>
<Id>7</Id>
<Titulo>ASDt asdsdadsaadsasdsadasssssssssss ssssssssssssssssss </Titulo>
<IdCliente>26</IdCliente>
<ObjCliente>
<Id>26</Id>
<Codigo>1</Codigo>
<Organizacion>dulcito</Organizacion>
<Apellido>perez</Apellido>
<Nombre>raul</Nombre>
<Email1 />
<Email2 />
<Msn />
<Cargo />
<TelefonoTrabajo />
<TelefonoParticular />
<TelefonoMovil />
<NumeroFax />
<Direccion />
<Ciudad />
<CodigoPostal />
<IdProvincia>0</IdProvincia>
<OldIdProvincia>0</OldIdProvincia>
<IdPais>0</IdPais>
<OldIdPais>0</OldIdPais>
<Web1 />
<Web2 />
<Notas />
<IdRubro>0</IdRubro>
<OldIdRubro>0</OldIdRubro>
<FacturacionAnual>0</FacturacionAnual>
<Cuit />
<IIBB />
<Municipalidad />
<IdTipoCliente>0</IdTipoCliente>
<OldIdTipoCliente>0</OldIdTipoCliente>
<FechaAperturaCTaCTe>0001-01-01T00:00:00</FechaAperturaCTaCTe>
<SaldoInicial>0</SaldoInicial>
<SaldoActual>0</SaldoActual>
<DeudaTope>0</DeudaTope>
</ObjCliente>
<IdEmpleado>9</IdEmpleado>
<ObjEmpleado>
<Id>9</Id>
<Nombre>Jeronimo</Nombre>
<Apellido>Visñovezky</Apellido>
<Organizacion>x.Line</Organizacion>
<Cargo>Relaciones Exteriores</Cargo>
<TelefonoTrabajo />
<TelefonoParticular>0351 422 8218</TelefonoParticular>
<TelefonoMovil>351 3 181474</TelefonoMovil>
<NumeroFax />
<Direccion>9 de Julio 832 3º D</Direccion>
<Ciudad>Cordoba</Ciudad>
<CodigoPostal>5000</CodigoPostal>
<Barrio>Alberdi</Barrio>
<IdProvincia>2</IdProvincia>
<OldIdProvincia>2</OldIdProvincia>
<ObjProvincia>
<IdProvincia>0</IdProvincia>
<NombreProvincia />
<IdPais>0</IdPais>
<IdPaisOld>0</IdPaisOld>
</ObjProvincia>
<ObjPais>
<Id>1</Id>
<Nombre>ARGENTINA</Nombre>
</ObjPais>
<IdPais>1</IdPais>
<OldIdPais>1</OldIdPais>
<Email1>[email protected]</Email1>
<Email2>[email protected]</Email2>
<Web1>www.jeronimov.com.ar#http://www.jeronimov.com.ar#</Web1>
<EstadoCivil>Casado(a)</EstadoCivil>
<DNI>26.433.134</DNI>
<FechaIngreso>2007-01-15T00:00:00</FechaIngreso>
<Nacionalidad>Argentino</Nacionalidad>
<CantidadHijos>0</CantidadHijos>
<CantidadHermanos>2</CantidadHermanos>
<Notas />
<NombrePadre>Carmelo Horacio Visnovezky (Fallecido)</NombrePadre>
<NombreMadre>Maria Blanca Garcia</NombreMadre>
<IdProfesionPadre>19</IdProfesionPadre>
<OldIdProfesionPadre>19</OldIdProfesionPadre>
<IdProfesionMadre>20</IdProfesionMadre>
<OldIdProfesionMadre>20</OldIdProfesionMadre>
<Activo>0</Activo>
<Primario>1</Primario>
<Secundario>1</Secundario>
<Terciario>0</Terciario>
<Universitario>1</Universitario>
<PosGrado>0</PosGrado>
<IdTipoRelacion>4</IdTipoRelacion>
<OldIdTipoRelacion>0</OldIdTipoRelacion>
<CajaAhorro />
<IdBanco>0</IdBanco>
<OldIdBanco>0</OldIdBanco>
<PrecioHora>14</PrecioHora>
</ObjEmpleado>
<Categoria>dfg</Categoria>
<Valoracion>Templada</Valoracion>
<ComoSeEncontro />
<FechaApertura>0001-01-01T00:00:00</FechaApertura>
<FechaEstimadaCierre>2008-02-02T00:00:00</FechaEstimadaCierre>
<Probabilidad>20</Probabilidad>
<IngresosEstimados>0</IngresosEstimados>
<Cerrado>false</Cerrado>
<Descripcion>tre</Descripcion>
<Comentarios>[Versión: 26/06/2008 16:20:16] tyhjjhhjg
[Versión: 25/06/2008 15:29:58] rt
[Versión: 25/06/2008 15:29:14] uio
</Comentarios>
</Oportunidad>
</ArrayOfOportunidad>
Luego donde llamamos al webservice, utilizo el método objectToClass, pero puedo mandar unicamente la clase Oportunidad como parametro, entonces, como obtengo el objeto Cliente que tengo anidado?, me explico? Ahi me da error en esa conversión
Código :
for each (var item : Object in event.result){
var oportunidad : Oportunidad = DataConvert.objectToClass(item,Oportunidad) as Oportunidad;
result.addItem(oportunidad);
}
La clase Oportunidades está en el primer post, les dejo la clase de acceso a datos Oportunidades completa:
Código :
// ActionScript file
package Data
{
import Entities.Oportunidad;
import Entities.Cliente;
import Util.DataConvert;
import mx.collections.ArrayCollection;
import mx.rpc.Fault;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.soap.LoadEvent;
import mx.rpc.soap.WebService;
public class OportunidadesWS
{
[Bindable] private var result:ArrayCollection = new ArrayCollection();
private var objOportunidades : WebService = new WebService();
[Bindable] private var arrOportunidades:ArrayCollection;
public function get Oportunidades():ArrayCollection
{
getOportunidades();
return result;
}
private function getOportunidades():void
{
objOportunidades.wsdl = "http://192.168.1.101/XlineProjectTools/WebServices/Oportunidades.asmx?WSDL";
objOportunidades.addEventListener(LoadEvent.LOAD, onOportunidadWSL);
objOportunidades.addEventListener(FaultEvent.FAULT, onWebServiceFault);
objOportunidades.loadWSDL();
}
//listener que avisa cuando el WSDL se ha cargado
private function onOportunidadWSL (event:LoadEvent):void
{
objOportunidades.ObtenerOportunidades.addEventListener(ResultEvent.RESULT, onGetOportunidad); //cuando llame al ws se va a ejecutar onGetOportunidad
objOportunidades.ObtenerOportunidades(); //metodo de ws
}
private function onGetOportunidad (event:ResultEvent):ArrayCollection
{
arrOportunidades=event.result as ArrayCollection;
var datos:ArrayCollection = new ArrayCollection();
for each (var item : Object in event.result){
var oportunidad : Oportunidad = DataConvert.objectToClass(item,Oportunidad) as Oportunidad;
result.addItem(oportunidad);
}
/*
for each (var item : Object in event.result){
var oportunidad:Oportunidad = new Oportunidad();
oportunidad.Id = item.Id;
oportunidad.Titulo = item.Titulo;
oportunidad.IdCliente = item.IdCliente;
oportunidad.IdClienteOld = item.IdClienteOld;
result.addItem(oportunidad);
}
*/
return result;
}
// En caso de que el WebService no puede ser cargado.
public function onWebServiceFault(event:FaultEvent):void
{
var fault: Fault = event.fault;
var message :String = "An error occurred. The details are as follows\ncode: " + fault.faultCode;
message += "\ndetail: " + fault.faultDetail;
trace("Web Service Error :" + message);
}
}
}