Welcome to Community Week 2025! Join us to learn, connect, and be recognized as we celebrate the spirit of Community and the power of AI. Get the details  

Why are uploaded files lost after order guide are sent?

Dat Phan
Tera Guru

I created the "Demo multi Row 001"multirow variable which has a field to reference the "sys_attachment".

When user upload file by the "Demo Attachment" attachment field. I cloned it. And I added it into "Demo Multi Row 001". But when the order guide is sumitted, the files in the something is deleted. What's the happend?

Screenshot 2023-12-30 110753.png

I used the on_change event for the "Demo Attachment" attachment field:

 

 

 

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }

    var attachmentAjax = new GlideAjax("DemoAttachmentUtil");
    attachmentAjax.addParam('sysparm_name', 'cloneAttachmentByAjax');

    attachmentAjax.addParam('sysparm_attachmentId', newValue);

    attachmentAjax.getXMLAnswer(function(response) {

        var newAttachmentId = "";
        if (response) {
            var resultData = JSON.parse(response);
            newAttachmentId = resultData.attachmentId;


            var jsonData = g_form.getValue('demo_multi_row_001');

            var lstFiles = [];
            if (jsonData) {

                lstFiles = JSON.parse(jsonData);
            }
            lstFiles.push({
                file_attachment: newAttachmentId
            });
            g_form.setValue('demo_multi_row_001', JSON.stringify(lstFiles));
        }
    });
}

 

 

 

, and script include "DemoAttachmentUtil":

 

 

var DemoAttachmentUtil = Class.create();
DemoAttachmentUtil.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    cloneAttachmentByAjax: function() {
		var result = {
			status: 0,
			attachmentId: ''
		};
		try {
			var paramAttachmentId = this.getParameter('sysparm_attachmentId');
			result.attachmentId = this.copySingleAttachment(paramAttachmentId);
			result.status = 1;
		} catch(ex) {
			gs.info("TEST :" + ex);
			result.attachmentId = '';
		}
		return JSON.stringify(result);
	},
    copySingleAttachment: function(attachmentFileId) {
        var attRec;
        var orgAttachment = new GlideRecord('sys_attachment');
        orgAttachment.addQuery('sys_id', attachmentFileId);
        orgAttachment.query();
        if (orgAttachment.next()) {
            var cloneAttachment = new GlideRecord('sys_attachment');
            cloneAttachment.initialize();
            cloneAttachment.file_name = orgAttachment.file_name;
            cloneAttachment.content_type = orgAttachment.content_type;
            cloneAttachment.compressed = orgAttachment.compressed;
            cloneAttachment.table_name = orgAttachment.table_name;
            cloneAttachment.size_bytes = orgAttachment.size_bytes;
            cloneAttachment.size_compressed = orgAttachment.size_compressed;
            cloneAttachment.table_sys_id = orgAttachment.table_sys_id;
            attRec = cloneAttachment.insert();
        }

        var attDoc = new GlideRecord('sys_attachment_doc');
        attDoc.addQuery('sys_attachment', orgAttachment.sys_id);
        attDoc.query();
        while (attDoc.next()) {
            var attDocCopy = new GlideRecord('sys_attachment_doc');
            attDocCopy.initialize();
            attDocCopy.sys_attachment = attRec;
            attDocCopy.position = attDoc.position;
            attDocCopy.length = attDoc.length;
            attDocCopy.data = attDoc.data;
            attDocCopy.insert();
        }
        return attRec;
    },
    isPublish: function() {
        return true;
    },
    type: 'DemoAttachmentUtil'
});

 

 

 

0 REPLIES 0