Parâmetros da Temp-Table via ExecBO - Integração Fluig x Datasul

Olá! Tenho um Dataset customizado que consulta o código e o nome da empresa no Datasul via EXECBO. Agora eu preciso implementar a função DisplayFields para preencher o campo nome da empresa conforme o retorno deste dataset. O problema é que não sei exatamente como fazer a passagem de parâmetros para o fields que vai popular a temp-table. Os parâmetros da temp-table estão conforme a imagem em anexo. Quero passar como parâmetro do fields, o código da empresa getValue("WKCompany") e retornar o nome da empresa do Dataset customizado. Isto é possível?

Isto também será importante outras pesquisas. Retornar apenas os itens de um determinado grupo de estoque, por exemplo.

Obrigada.

Ronara, No seu displayFields você precisa ter um chamada a um dataset passando um ARRAY, por exemplo:

Ao chamar seu dataset customizado:

var dsQuestoes = DatasetFactory.getDataset("seu_dataset_customizado", ["valor_1", "valor_2"], null, null);

E no dataset customizado, você vai receber os valores através do parametro "fields":

function createDataset(fields, constraints, sortFields)

Na sequencia pode obter a informação desta forma:

if (fields[0] == 'create') { codigo = "criado" }

Olá Peter, eu fiz a implementação da seguinte forma: var cod_empresa = new String(getValue("WKCompany")); var dataset = DatasetFactory.getDataset("ems_consulta_empresa", new Array(cod_empresa), null, null);

O log mostra que o campo fields[0] carregou o código da empresa corretamente,porém ao executar a integração da EXECBO ocorre o erro :

2017-10-24 10:18:34,970 ERROR [com.datasul.technology.webdesk.customization.ScriptingLog] (default task-49) Java class "[Ljava.lang.reflect.Constructor;" has no public instance field or method named "toJSON". (#53)

Isto não acontece quando eu implemento o campo cod_empresa dentro do próprio dataset ems_consulta_empresa.

O problema só ocorre quando é feito via fields.

A EXECBO está preparada para receber parâmetros via fields?

Obrigada

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

Não conheço bem a EXECBO, isto pode acontecer por conta da tipagem da variável, recomendo que teste passando uma String, Número ou Decimal.

Olá Ronara, eu tenho integração FluigxDatasul via webservice ExecBO e o webservice do Datasul aceita passagem de parâmetros, não sei como você faz os desenvolvimentos ai, mais a principio seu programa .P deverá está esperando um parâmetro de entrada, tipo DEFINE INPUT PARAMETER c-codigoEmpresa AS CHARACTER NO-UNDO.

No seu JSON que você passa pra ser executado, tem que ter montado toda a estrutura da Temp-TABLE, como os campos LABEL, quais são os campos de saída output, que no seu caso deve ser a descrição da empresa...

Olá Marcos, consegui fazer aqui. Obrigada mas não será necessário. Precisando pode contar!

Boa noite Ronara, tudo bem?
Como você resolveu o problema? Estou passando pelo mesmo erro.

Obrigado.

Achei um post na web sobre o erro has no public instance field or method named "toJSON". Vi que o problema são tipos de variáveis java. O JSON.stringify() é uma função javascript e só aceita tipos javascript. Veja o post: https://www.qvera.com/kb/index.php/1156/json-stringify-throws-an-exception. No meu dataset, os parâmetros inteiros eu multipliquei por 1 e os string eu concatenei com "". Aí o erro parou de ocorrer:


if (constraints != null) {
        for (var i = 0; i < constraints.length; i++) {
            if (constraints[i].fieldName == "registro") { 
                registro = 1 * parseInt(constraints[i].initialValue);
            }
            else if (constraints[i].fieldName == "estabelecimento") { 
                estabelecimento = "" + constraints[i].initialValue;
            }
        }
    }