###本文章内容皆由我本人开发撰写与分享
在变更单建立时,经常会花时间编辑受影响物件
经常是为了从Excel档案填写到PLM系统上
此快速贴上并汇入变更单就因此而生
準备如下
1.自订一个表单
2.在表单上的Import新增Click程式
3.在Action新增开启表单程式
如下示意操作
1.新增一份表单,并设计出适合的介面,拉出一个按钮且新增click程式,下面程式码可参考自己的系统现况去调整
var inn = new Innovator();var prt = typeof(parent.document.item) == "object" ? parent.document : parent.parent;var tmpThisItem = typeof(parent.document.thisItem) == "object" ? parent.document.thisItem : parent.thisItem;var topWnd = aras.getMostTopWindowWithAras(window);topWnd = topWnd.main || topWnd;//console.log(topWnd.dialogArguments.cur_item);var theItem = topWnd.cur_item;var changesItemtype= theItem.getAttribute("type","");//取得要汇入的文字框var textarea_import = document.getElementsByName("txtBOM")[1];var textarea_log = document.getElementsByName("txtLog")[1];if(textarea_import.value==="" || textarea_import.value===undefined){ aras.AlertError("Parts List is null.");}var logs = "";//解析每一行的编号var rows = textarea_import.value.split("\n");for(var i=0;i<rows.length;i++){ var part_num = rows[i]; if(part_num==="") continue; //若为D_开头编码为Document或CAD if(part_num.substring(0,1)=='D'){ var partItem = inn.newItem("Document","get"); partItem.setProperty("item_number",part_num); partItem.setProperty("is_current","1"); partItem = partItem.apply(); if(partItem.isError()){ partItem = inn.newItem("CAD","get"); partItem.setProperty("item_number",part_num); partItem.setProperty("is_current","1"); partItem = partItem.apply(); } if(partItem.isError()==false){ //若是草稿就新增料号 if(partItem.getProperty("state","")==="Preliminary"){ var changeItem = inn.newItem("Affected Item","add"); changeItem.setProperty("action","Add"); changeItem.setProperty("new_item_id",partItem.getID()); var affectItem = inn.newItem(changesItemtype+" Affected Item","add"); affectItem.setProperty("source_id",theItem.getID()); affectItem.setPropertyItem("related_id",changeItem); affectItem = affectItem.apply(); if(affectItem.isError()){ logs+=part_num +" Error : "+affectItem.getErrorString()+"\n"; }else{ logs+=part_num +" OK.\n"; } }else{ //反之则变更 var changeItem = inn.newItem("Affected Item","add"); changeItem.setProperty("action","Change"); changeItem.setProperty("affected_id",partItem.getID()); var affectItem = inn.newItem(changesItemtype+" Affected Item","add"); affectItem.setProperty("source_id",theItem.getID()); affectItem.setPropertyItem("related_id",changeItem); affectItem = affectItem.apply(); if(affectItem.isError()){ logs+=part_num +" Error : "+affectItem.getErrorString()+"\n"; }else{ logs+=part_num +" OK.\n"; } } }else{ logs+=part_num +" Error : "+partItem.getErrorString()+"\n"; } }else{ //搜寻该料号 var partItem = inn.newItem("Part","get"); partItem.setProperty("item_number",part_num); partItem.setProperty("is_current","1"); partItem = partItem.apply(); if(partItem.isError()){ logs+=part_num +" Error : "+partItem.getErrorString()+"\n"; }else{ if(partItem.getProperty("state","")==="Preliminary"){ var changeItem = inn.newItem("Affected Item","add"); changeItem.setProperty("action","Add"); changeItem.setProperty("new_item_id",partItem.getID()); var affectItem = inn.newItem(changesItemtype+" Affected Item","add"); affectItem.setProperty("source_id",theItem.getID()); affectItem.setPropertyItem("related_id",changeItem); affectItem = affectItem.apply(); if(affectItem.isError()){ logs+=part_num +" Error : "+affectItem.getErrorString()+"\n"; }else{ logs+=part_num +" OK.\n"; } }else{ var changeItem = inn.newItem("Affected Item","add"); changeItem.setProperty("action","Change"); changeItem.setProperty("affected_id",partItem.getID()); var affectItem = inn.newItem(changesItemtype+" Affected Item","add"); affectItem.setProperty("source_id",theItem.getID()); affectItem.setPropertyItem("related_id",changeItem); affectItem = affectItem.apply(); if(affectItem.isError()){ logs+=part_num +" Error : "+affectItem.getErrorString()+"\n"; }else{ logs+=part_num +" OK.\n"; } } } }}textarea_log.value = logs;
打开汇入视窗Action程式

var prt = typeof(parent.document.item) == "object" ? parent.document : parent.parent;var tmpThisItem = typeof(parent.document.thisItem) == "object" ? parent.document.thisItem : parent.thisItem;if(tmpThisItem.isNew()){ aras.AlertError("Please save the item. 请先存档并解锁后再执行。");}if(tmpThisItem.isLocked()===1 || tmpThisItem.isLocked()===2){ aras.AlertError("The item is Lock. 物件已上锁中"); return ;}if(tmpThisItem.getProperty("state","")==="New"){ var topWnd = aras.getMostTopWindowWithAras(window); topWnd = topWnd.main || topWnd; // get form var formName = "JPC_ImportChangeData"; var fetchForm = this.getInnovator().newItem("Form","get"); fetchForm.setProperty("name",formName); fetchForm = fetchForm.apply("get"); // check form for error if (fetchForm.isError()) return alert("Can't find a form called " + formName); // get form params var params = { title: 'Parts Change Import', formId: fetchForm.getID(), // put your form's id here aras: aras, dialogWidth: 600, // set width int dialogHeight: 400, // set height int content: 'ShowFormAsADialog.html', cur_item : tmpThisItem }; topWnd.cur_item = tmpThisItem; var callback = function(res) { //Perform logic using dialog result here var parentID = document.itemID; var parentAction = 'edit'; // or 'view' top.aras.uiReShowItem(parentID,parentID,parentAction,'tab view'); return ; } // call form in dialog topWnd.ArasModules.MaximazableDialog.show("iframe", params).promise.then(callback); return null;}else{ aras.AlertError("Changes is not Preliminary.此非编辑系统状态,不能执行。");}