Dataset customizado dinâmico. É possível fazer?

Gostaria de saber se é possível criar um dataset customizado onde o valor a ser pesquisado no dataset principal seja obtido por uma variável. por exemplo:


//Essa variavel pega o valor do campo do codigo do usuario do formulario
 var codBusca = form.getValue('os_CodSolic');


      //Cria o filtro customizado para o dataset que está a seguir
      var filtro = DatasetFactory.createConstraint("colleaguePK.colleagueId", codBusca, codBusca, 
                   ConstraintType.MUST);

      //Cria um dataset baseado no dataset padrao colleague, utilizando o filtro personalizado acima
      var dsUsuarioLogado = DatasetFactory.getDataset("colleague", null, new Array(filtro), null);


O problema é que quando eu tento fazer desta forma, simplesmente não funciona, não dá erro mas não traz nenhum valor no dataset. lembrando que este trecho de código esta implementado no arquivo do dataset customizado.

Ola este método funciona correctamente , en su ejemplo le recomiendo primero use la propiedad de visualizar en el TDN el colleague y compare el valor buscado vs el que pone en el filtro, adicional no se ve en su ejemplo que navegue en los datos retornados de la variable

Pelo código não verifiquei nada fizesse não funcionar. Sugiro postar o código completo do dataset.

A variável codBusca está recebendo algum valor válido? Coloque um log.info(codBusca); para verificar

Consegui resolver o problema.

Vejam o trecho de comando a baixo que citei na pergunta:

var codBusca = form.getValue('os_CodSolic');

Ele não puxava valor nenhum do campo. Resolvi o problema pegando a informação de maneira direta. O código ficou assim:


function createDataset(fields, constraints, sortFields) {


    var codUsuario = getValue('WKUser');

    if(codUsuario == "" || codUsuario == null){
        codUsuario = null;
    }

    var filtro = DatasetFactory.createConstraint("colleaguePK.colleagueId", codUsuario, codUsuario, ConstraintType.MUST);
    var dsUsuarioLogado = DatasetFactory.getDataset("colleague", null, new Array(filtro), null);

    return dsUsuarioLogado;

}

Não sei se seria a maneira correta, mas foi o que eu consegui fazer para contornar este problema. Espero que tenha ajudado de alguma forma.