Javascript 优先级web sdk:记录已存在于表单中
所以我有一个接受它并将其解析为的。然后遍历类的内容,将数据填充到适当的列、表单和子表单中 如果没有已存在的记录,则执行此操作 但是调用该方法后,该函数将不返回任何结果Javascript 优先级web sdk:记录已存在于表单中,javascript,node.js,promise,erp,Javascript,Node.js,Promise,Erp,所以我有一个接受它并将其解析为的。然后遍历类的内容,将数据填充到适当的列、表单和子表单中 如果没有已存在的记录,则执行此操作 但是调用该方法后,该函数将不返回任何结果 有什么建议吗?这个问题有点难理解。你能总结一下吗?至少是代码示例。很抱歉延迟-假期等。基本上问题是如何筛选子窗体。对于这个特定的应用程序,我使用了一个。但还不支持筛选子窗体:)同时,您可以检索所有行,然后在客户端中筛选结果,或者像以前一样使用REST API。把RESTAPI和WebSDK结合起来做得很好!! util.get('
有什么建议吗?这个问题有点难理解。你能总结一下吗?至少是代码示例。很抱歉延迟-假期等。基本上问题是如何筛选子窗体。对于这个特定的应用程序,我使用了一个。但还不支持筛选子窗体:)同时,您可以检索所有行,然后在客户端中筛选结果,或者像以前一样使用REST API。把RESTAPI和WebSDK结合起来做得很好!!
util.get('/', function (req, res) {
var requestBody = '';
var msg;
var curform;
req.on('data', function (data) {
requestBody += data;
});
req.on('end', function () {
var ld = new Loading(null, JSON.parse(requestBody));
Login(ld, curform).then(() => {
res.simpleJSON(200, ld.log.toJSON)
}).catch(() => {
res.simpleJSON(200, ld.log.toJSON)
})
});
function Login(ld, curform) {
return new Promise((resolve, reject) => {
console.log("Connecting...");
priority.login(config).then(() => {
console.log("Opening form %s.", ld.name);
priority.formStart(ld.name, null, null, 1).then(curform => {
curform.clearRows().then(() => {
iter(ld.rows, iterRow, curform).then(curform => {
console.log("Close form %s.", curform.name);
curform.endCurrentForm().then(() => {
resolve()
}).catch(err => { ld.log.setError(null, null, err); reject(err) })
}).catch(err => { ld.log.setError(null, null, err); reject(err) })
}).catch(err => { ld.log.setError(null, null, err); reject(err) })
}).catch(err => { ld.log.setError(null, null, err); reject(err) })
}).catch(err => { ld.log.setError(null, null, err); reject(err) })
})
}
var iterRow = function (m, curform) {
return new Promise((resolve, reject) => {
iter(m.columns, iterField, curform).then(curform => {
console.log("Saving form %s.", curform.name);
curform.saveRow(0).then(() => {
m.sucsess();
iter(m.subLoadings, iterForm, curform).then(curform => {
if (m.$index < m.parent.rows.length-1) {
console.log("New row in form %s.", curform.name);
curform.newRow().then(() => {
resolve(curform)
}).catch(err => reject(err))
} else {
resolve(curform)
}
}).catch(err => reject(err))
}).catch(err => {
m.fail(err);
resolve(curform);
})
}).catch(err => reject(err))
})
}
var iterForm = function (m, curform) {
return new Promise((resolve, reject) => {
console.log("Opening sub form %s.", m.name);
curform.startSubForm(m.name, null, null).then(curform => {
curform = curform;
console.log("New row in form %s.", curform.name);
curform.newRow().then(() => {
iter(m.rows, iterRow, curform).then(curform => {
console.log("Closing sub form %s.", curform.name);
curform.endCurrentForm().then(() => {
resolve(curform);
}).catch(err => reject(err))
}).catch(err => reject(err))
}).catch(err => reject(err))
}).catch(err => reject(err))
})
};
var iterField = function (m, curform) {
return new Promise((resolve, reject) => {
console.log("Set field %s = %s.", m.name, m.value);
curform.fieldUpdate(m.name, m.value).then(() => {
resolve(curform);
}).catch(err => {
if (err.message == "Record already exists in form.") {
SelectRow(m, curform).then(() => {
resolve();
}).catch(err => reject(err))
} else {
reject(err)
}
})
})
}
/* Iterate function */
function iter(ar, fn, result) {
return new Promise((resolve, reject) => {
try {
var cntr = 0;
function next() {
if (cntr < ar.length) {
ar[cntr].$index = cntr;
fn(ar[cntr], result).then(curform => {
cntr++;
next();
}).catch(err => reject(err));
} else {resolve(result)};
};
next();
} catch (err) { reject(err)}
})
}
});
function SelectRow(m, curform) {
return new Promise((resolve, reject) => {
curform.undo().then(() => {
curform.getRows(1).then(rows => {
var cntr = 1;
while (rows[curform.name][cntr] !== undefined) {
var f = 1;
for (var i in parent.rows[m.$index].columns) {
if (rows[cntr][parent.rows[m.$index].columns[i].name] !== parent.rows[m.$index].columns[i].value) {
f = 0;
}
}
if (f == 1) {
curform.setActiveRow(cntr).then(() => {
resolve();
})
} else { cntr++; }
}
resolve();
}).catch(err => reject(err))
}).catch(err => reject(err))
})
}