none
Obtener operacion Read Item de un BCS en sharepoint 2010 RRS feed

  • Pregunta

  • Buenas tardes con el siguiente código accedo a la operación Read List de mi BCS, como podría hacer para acceder a la operación Read Item y pasarle el parametro de filtrado, gracias..

    BdcService service = SPFarm.Local.Services.GetValue<BdcService>();
                    IMetadataCatalog catalog = service.GetDatabaseBackedMetadataCatalog(context);

                    IEntity entity = catalog.GetEntity("http://kbase:31779", "Contenido externo de PM");
                    ILobSystemInstance lobSystemInstance = entity.GetLobSystem().GetLobSystemInstances()[0].Value;

                    IMethodInstance methodInstance = entity.GetMethodInstance("ReadList", MethodInstanceType.Finder);
                    IEntityInstanceEnumerator ientityInstanceEnumerator = entity.FindFiltered(methodInstance.GetFilters(), lobSystemInstance);

    jueves, 7 de julio de 2011 22:45

Respuestas

Todas las respuestas

  • Hola Esteban

    hay una colección IFilterCollection que permite crear los filtros para el método.

                BdcService service = SPFarm.Local.Services.GetValue<BdcService>();
                IMetadataCatalog catalog = service.GetDatabaseBackedMetadataCatalog(SPServiceContext.GetContext(auxSite));
    
                //IEntity entity = catalog.GetEntity("http://desgscmoss/meta4", "Meta4.Ausencias");
                IEntity entity = catalog.GetEntity("http://srvgscmoss/meta4", "Meta4.Ausencias");
                ILobSystemInstance lobSystemInstance = entity.GetLobSystem().GetLobSystemInstances()[0].Value;
    
                IFieldCollection fieldCollection = entity.GetFinderView("ObtenerAusencias").Fields;
                IMethodInstance methodInstance = entity.GetMethodInstance("ObtenerAusencias", MethodInstanceType.Finder);
                IFilterCollection defaultFilters = methodInstance.GetFilters();
    
                IUserInputFilter empleadoFilter = (IUserInputFilter)defaultFilters[0];
                empleadoFilter[0] = userNIF; // el identificador del usuario debe salir el workflow
    
                IUserInputFilter fechaInicioFilter = (IUserInputFilter)defaultFilters[1];
                fechaInicioFilter[0] = DateTime.SpecifyKind(Convert.ToDateTime(DateTime.Now.Year.ToString("0000") + "-01-01", CultureInfo.InvariantCulture), DateTimeKind.Utc);
    
                IUserInputFilter fechaFinFilter = (IUserInputFilter)defaultFilters[2];
                fechaFinFilter[0] = DateTime.SpecifyKind(Convert.ToDateTime(DateTime.Now.Year.ToString("0000") + "-12-31", CultureInfo.InvariantCulture), DateTimeKind.Utc);
    
                IEntityInstanceEnumerator ientityInstanceEnumerator = entity.FindFiltered(defaultFilters, lobSystemInstance);
    
                while (ientityInstanceEnumerator.MoveNext())
    
    


    Alberto Diaz Martin twitter://@adiazcan | http://geeks.ms/blogs/adiazmartin | MVP SharePoint Server
    viernes, 8 de julio de 2011 14:16
  • gracias por la respuesta, el metodo ReadItem es de tipo FindSpecific y no Finder estonces se accede a ael de la siguiente manera http://207.46.16.248/es-es/library/ff769953.aspx

    • Marcado como respuesta Esteban. _ viernes, 8 de julio de 2011 19:20
    viernes, 8 de julio de 2011 19:19