UpdateCardData em um dataset customizado

Bom dia, estou fazendo um dataset que altera o valor de um campo de um documento. Ele recebe por fields os ids dos documentos concatenados com um ; no meio. Após isso ele separa o id e roda o serviço updateCardData para alterar o valor, porém o retorno diz que a ficha com o id mencionado não foi encontrada.


function createDataset(fields, constraints, sortFields) {

    var docid = fields[0];
    log.info("DOCS>> "+fields[0]);
    for (var i = 0; i < (docid.split(";").length - 1); i++){

        var documentid = parseInt(docid.split(";")[i])
        log.info(documentid)
        try{

            //Servico "<url_fluig>/webdesk/ECMCardService?wsdl"cadastrado com o código "CardService"
            var cardServiceProvider = ServiceManager.getServiceInstance("CardService");
            var cardServiceLocator = cardServiceProvider.instantiate("com.totvs.technology.ecm.dm.ws.ECMCardServiceServiceLocator");
            var cardService = cardServiceLocator.getCardServicePort();
            var cardFieldDtoArray = cardServiceProvider.instantiate("com.totvs.technology.ecm.dm.ws.CardFieldDtoArray");
            var cardField = cardServiceProvider.instantiate("com.totvs.technology.ecm.dm.ws.CardFieldDto");

            //Seta valor no campo com name = 'nome'
            cardField.setField("statusPagamento");
            cardField.setValue("Enviado");

            var vetCardFields = new Array();
            vetCardFields.push(cardField);
            cardFieldDtoArray.setItem(vetCardFields);

            //Altera o(s) campo(s) do registro de formulário.
            //updateCardData(tenantId, login, senha, codRegistroForm, cardFieldDtoArray);
            var dss = cardService.updateCardData(1, "adm", "Fluig@2016", documentid, cardFieldDtoArray);
            log.info("DSS>> "+ dss);
            }
            catch (e) {
                log.info("ERRO =>" + e);
                throw e.message;
            }
            return dss;
    }
}

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

Você chegou analisar no server.log com baretail o motivo do erro? Se foi recusa na conexão etc? Coloque um log info em cada linha do código com um hightlight para mapear em qual linha o erro ocorre em seu código. e poste o print.

Guilherme estou precisando fazer exatamente isso, em um formulário vinculado a um processo tenho uma seleção de outros formulários(cadastros), esses devem ser atualizados com os novos valores calculados durante processo, como você envia os fields os ids dos documentos concatenados com um ; no meio?

Realizamos um acesso remoto e identificamos alguns erros no evento validateForm, com outros registros com a utilização do método foi possível a alteração dos dados, após outros testes Guilherme identificou a causa e corrigiu.

Abraço!

Mudei o jeito como era chamado, tratando os objetos divididos por ; na chamada, passando para o dataset apenas um objeto para ser utilizado no serviço.


function createDataset(fields, constraints, sortFields) {
        var docid = fields[0];

        try{

            //Servico "<url_fluig>/webdesk/ECMCardService?wsdl"cadastrado com o código "CardService"
            var cardServiceProvider = ServiceManager.getServiceInstance("CardService");
            var cardServiceLocator = cardServiceProvider.instantiate("com.totvs.technology.ecm.dm.ws.ECMCardServiceServiceLocator");
            var cardService = cardServiceLocator.getCardServicePort();
            var cardFieldDtoArray = cardServiceProvider.instantiate("com.totvs.technology.ecm.dm.ws.CardFieldDtoArray");
            var cardField = cardServiceProvider.instantiate("com.totvs.technology.ecm.dm.ws.CardFieldDto");

            //Seta valor no campo com name = 'nome'
            cardField.setField("statusPagamento");
            cardField.setValue("Enviado");

            var vetCardFields = new Array();
            vetCardFields.push(cardField);
            cardFieldDtoArray.setItem(vetCardFields);

            //Altera o(s) campo(s) do registro de formulário.
            //updateCardData(tenantId, login, senha, codRegistroForm, cardFieldDtoArray);
            var dss = cardService.updateCardData(1, "adm", "Fluig@2016", documentid, cardFieldDtoArray);
            log.info("DSS>> "+ dss);
            }
            catch (e) {
                log.info("ERRO =>" + e);
                throw e.message;
            }
            return dss;
}