Olá Quemuel,
tente algo nesse sentido:
var fieldName = 'codProd___';
var REGISTROS = instanceservice.instantiate("br.com.lactosul.protheus._7999.ARRAYOFACOLS");
for (var i = 0; i < cardFields.length; i++) {
if (cardFields[i].startsWith(fieldName)) {
// Pega o indice da linha do pai x filho
var index = cardFields[i].replace(fieldName, '');
var ACOLS = instanceservice.instantiate("br.com.lactosul.protheus._7999.ACOLS");
// O código do produto seria mesmo o cardFields[i] ou codProd___ + index
ACOLS.setAGPRODUTO(cardData.get(cardFields[i]));
//Os outros campos você vai concatenar com o indice da linha
ACOLS.setAGQTDVEN(cardData.get('qtdVen___' + index));
ACOLS.setAGLOTECTL(cardData.get('loteCtl___' + index));
ACOLS.setAGPRCVEN(cardData.get('prcVen___' + index));
// Adiciona a avaliação só depois de preencher todos os campos
REGISTROS.ACOLS().add(ACOLS);
}
}
}
var AG_LINHAS = instanceservice.instantiate("br.com.lactosul.protheus._7999.ITENS");
AG_LINHAS.setREGISTROS(REGISTROS);
Caso algum dos campos de avaliação não seja String então teria que tratar após pegar o vaor do formulário.