요청 항목에서 승인으로 또는 그 반대로 특정 첨부 파일 복사
16081 단어 servicenowjavascript
모든 첨부 파일 업로드는 스크립트 작업을 통해 연결할 수 있는 'attachment.uploaded'라는 이벤트를 발생시킵니다. SNPros에서 영감을 받은 다음 코드가 사용되었습니다.
스크립트 작업:
// condition-> event.parm1.toString() == 'sc_req_item' || event.parm1.toString() == 'sysapproval_approver'
if (event.parm1.toString() == 'sc_req_item') {
var reqItemGR = new GlideRecord('sc_req_item');
reqItemGR.get(event.parm2.toString());
var approvalGR = new GlideRecord('sysapproval_approver');
var apprOr = approvalGR.addQuery('sysapproval', event.parm2.toString());
apprOr.addOrCondition('sysapproval', reqItemGR.request.getValue());
approvalGR.query()
while (approvalGR.next()) {
new attachmentUtils().copySpecificAttachment(current.sys_id.getValue(), 'sysapproval_approver', approvalGR.sys_id.getValue())
}
} else {
var approvalGR = new GlideRecord('sysapproval_approver');
if (approvalGR.get(event.parm2.toString())) {
if (approvalGR.sysapproval.sys_class_name == 'sc_request') {
var reqItemGR = new GlideRecord('sc_req_item');
reqItemGR.addQuery('request', approvalGR.sysapproval.getValue());
reqItemGR.addQuery('active', true);
reqItemGR.query();
while (reqItemGR.next()) {
new attachmentUtils().copySpecificAttachment(current.sys_id.getValue(), 'sc_req_item', reqItemGR.sys_id.getValue())
}
} else {
new attachmentUtils().copySpecificAttachment(current.sys_id.getValue(), 'sc_req_item', approvalGR.sys_id.getValue())
}
}
}
스크립트 포함 'attachmentUtils'
var attachmentUtils = Class.create();
attachmentUtils.prototype = {
initialize: function () {},
copySpecificAttachment: function (attachment_id, targetTable, targetSysId) {
var attRecord = new GlideRecord('sys_attachment');
if (attRecord.get(attachment_id)) {
var sourceAttId = attRecord.getValue('sys_id');
var newAttRecord = this._copyRecord(attRecord);
newAttRecord.setValue('table_name', targetTable);
newAttRecord.setValue('table_sys_id', targetSysId);
newAttRecord.update()
var attDateRecord = new GlideRecord('sys_attachment_doc');
attDateRecord.addQuery('sys_attachment', attRecord.getValue('sys_id'));
attDateRecord.query();
while (attDataRecord.next()) {
newDocRecord = this._copyRecord(attDataRecord);
newDocRecord.setValue('sys_attachment', newAttRecord.getValue('sys_id'));
newDocRecord.update();
}
}
}
_copyRecord: function (record) {
var recordElement;
var recordElementName;
var recordTable = record.getTableName();
var recordFields = record.getFields();
var newRecord = new GlideRecord(recordTable);
newRecord.initialize();
for (var i = 0; i < recordFields.size(); i++) {
recordElement = recordFields.get(i);
if (recordElement.getName() != 'sys_id' && recordElement.getName() != 'number') {
recordElementName = recordElement.getName();
newRecord.setValue(recordElementName, record.getValue(recordElementName));
}
}
newRecord.insert();
return newRecord;
}
}
type: 'attachmentUtils'
};
Reference
이 문제에 관하여(요청 항목에서 승인으로 또는 그 반대로 특정 첨부 파일 복사), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/23thom/copy-specific-attachment-from-request-items-to-approvals-and-vice-versa-44ag텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)