Can I add columns to a relationship tab dynamically?
How do I add a column to a relationship tab dynamically. I wish to federate an ItemType, the number of columns returned depends on the dataset and query combination and cannot be predicted prior to the query being run. Typically I would expect 30-40 columns, but could theoretically be up to 200. My plan is to add a relationship type which is populated onGet, to bring back the required information using my Query. I would not to create a custom relationship view, as this will ensure compatibility with future upgrades. What is the best way to proceed? Can I create columns dynamically to return the results? Do I create a related ItemType with 200 columns and hide the ones I'm not using with JavaScript? Any help is appreciated. Many thanks, Martin.12KViews0likes3CommentsWarning: Versioning and tab pane very buggy in new Innovator versions!!! Are you affected?
Hi community, I need your help to investigate an error that occurs in newer Innovator versions. In my case it occurred in Innovator 12SP17 and 12SP18 but NOT in Innovator 12SP7 / 9 / 10. I look for a bug fix for this one, cause unfortunately Aras rate this one as unimportant glitch and not as high risk behavior. From my POV the bug is a huge source for trouble (data loss!!), so I just can warn people to update to SP17 and SP18 without this bug fixed. I want to investigate, which service pack version is NOT affected by this bug. I am not able to test out all available service pack, so I would be happy if community could help: If you are a user of Innovator 12 SP11 / 12 / 14 / 15 / 16 / 17 I would be happy if you could test out at least the Error 1 scenario!! (2 minutes required!) Scope In 12SP17 and 12SP18 the tab pane can crash to easily when using item versions (like in Parts, Documents and Methods). In addition, old item revision can overwrite the latest item without the user noticing it! Both errors can occur easily, as soon users display previous revisions of an item. Comparing old and new revisions is a typical work during a Change Management process, so it´s an error that affects daily work of PLM users. Test Setup If possible perform this test in a test database. No data is edited during the test when you closely follow the instructions. But I don´t want to bring you in trouble in case of error! 1. Go to TOC -> Administration -> Open ItemType "Method" search grid 2. Search for Method with with "Ver 2" or higher, to ensure the Method has more than one revision. (If you need extra safety, create a temporary custom Method for this test that you can delete after test finished) 3. Open this Method (it doesn´t matter which one) 4. Open the 'Versions' dialog 5. Select a previous version (e.g Ver 1) of this Method 6. A Form with the previous version of your Method shall open. 7. Do not touch the new window with the previous version 8. Simply switch back to the tab with the newest version of the Method and close the "Versions" dialog We now have both versions in parallel in the tab pane. This is our basic setup. So far everything is fine. Reproduce Error 1 (Tab pane crash) 1. Start from setup above. We are in the tab with the latest revision 2. Click "Edit" (but do nothing else)! 3. Now just switch back to the tab with the previous revision of the Method and simply close this window 4. After closing the previous revision, we will automatically jump back to our latest revision tab 5. Click "Discard" as we never wanted to edit anything 6. Now the error should happen: In case of error a second tab reappears. We now have the two tabs for the item. They do not work and you cannot close them. Tab pane is crashed. Everything will be fine again after restarting Innovator in browser. If you don´t see this error, your Innovator version is not affected by this bug. You can skip all other tests. Please share which version you used! Reproduce Error 2 (glitch) 6. When you directly click "Search Method" in the TOC after above error occurred, a small additional glitch can appear 7. As our tab pane is crashed, the search grid will overlab with the Method Form. None of the tabs can be used reliable anymore Reproduce Error 3 (previous revision overwrites latest) Warning: Perform only in test database! Use a custom temporary Method for testing out this one, cause it can corrupt your data!!! 1. Start from setup above. We are in the tab with the latest revision. 2. First switch back to the tab with the previous revision. This time do not close the window, but simply take a look at the "Edit" button. It´s grayed out and you cannot use it. (This is correct behavior, as we never should be able to edit previous revisions) 3. Switch back to the latest revision and click "Edit" 4. Again switch back to the previous revision and take a look at the "Edit" button again. This time it´s not greyed out anymore!!! 5. It´s now theoretically possible to click the edit button inside the Form of the previous revision! 6. In case you click the 'Edit' button, you can create a high risk scenario: 7. After clicking the 'Edit' button, it´s seems to be possible to edit the previous revision. But what you see doesn´t represent the "truth" any more. a) The shown Method code still shows the content of the previous revision b) But the context item has switched to the latest revision. But this revision change is not visible to users as they still watch the previous code/properties. You can only see it in the 'Generation' value in the 'Properties' dialog. If you now save your "fake" previous item, the latest item will be overwritten with code and properties of the previous version. This is a high danger situation not only for Methods, but for all ItemTypes that use revision as it will lead to data loss and corrupted data. Conclusion I discovered the bug while merging a few upgrade patches and actually destroyed a few Methods cause of this bug. If I as admin fail to handle versioned items cause of this behavior, I expect that real users will face the same problem soon. I right would not recommend to use 12SP17/18 just because of this bug. Comparing and working with item versions is a daily task especially when using Change Management. But it´s important that users can trust the data they see. Right now working with revision in SP18 is very risky cause users can crash their tab (best case) or overwrite data without knowing (worst case). Please let me know if you are able to reproduce any of the above bugs in your Aras Innovator version! If you´re Innovator version doesn´t show the bugs, please also write a short post! When we can determine in which service pack the error appeared first, it´s maybe possible detect the bug more easily. Thanks for your help! Angela11KViews0likes15Commentsusing the SQL item type as a view
Querying a SQL view I built in SSMS from an Aras server method: string SQL_View = "innovator.my_custom_sql_view"; string SQL = "select * from " + SQL_View; Item SQL_qry = inn.applySQL(SQL); This is quick for me because I do a lot in SQL, but I know it is bad practice. So, I want to replace this SQL injection using IOM: I created a new SQL item, type=View, with the contents from the custom SSMS view. What is the correct C# code to get the view results? Item SQL_qry = inn.newItem("SQL", "get"); SQL_qry.setProperty("keyed_name", SQL_View); SQL_qry = SQL_qry.apply(); This code just gets the SQL item, not the contents of the View. I couldn't find anything in the Programmers guide for this, and the Blog posts were only about Stored Procedures, not Views. I'm thinking it should work the same way, but I haven't figured out the correct IOM syntax. Thanks, Paul SheehySolved7.8KViews0likes4CommentsGet tab labels of visible relationships in a Form
Hi Community, does anybody know a simple way to get the tab labels of the visible relationships in a Form? I know that we can use the following code: --> var tabbar = parent.relationships.relTabbar; But this one will return an array of all relationships, also the ones that are hidden to the user. Let´s assume I have the Form above. An onClick button event shall return the labels of all visible tabs -> Files, NDA Files, Related Parts, Vendors What can I do? I made a few tests with the querySelector, but weren´t able to get the tab-container element at all. Thanks for any help! AngelaSolved7.1KViews0likes2CommentsStop text input for item property in relationship grid
Hello, Is it possible to stop users from selecting an item for a item property using text input in something like the part number property of the product model relationship item? I've added a filter to the OnSearchDialog event of the property to limit the choices, but since it only triggers when the … button is used to open a dialog, I can still input any part number through text. Is there any way to stop this text input or do I have to make a method that checks the property OnCellChange to verify the selected value? /Rick6.5KViews0likes3CommentsUpdate RelationShip Tab on change
Hi guys ! I'm looking to refresh the current RelationShipTab (TearOff) on change detected in the form. For the event, no problem. I found how remove the tab : var tabbar = parent.relationships.relTabbar; tabbar.removeTabByLabel("Rapport"); And I think that there is some other method something like "refreshTabByLabel" existing ... If someone can help me ... (And if there is a document or a website where I could find the different method behind "parent.relationships.relTabbar" ...) Thanks a lot.5.7KViews0likes4CommentsHide Relationship Tabs based on Parent Classification Type
Hi All, Use case : On Part Item , based on the classification Type selected , the Part BoM relationship tab should be Hidden/Made Visible. I know it is now possible to hide tabs without using any custom code with the help of CUI , Refer : https://community.aras.com/b/english/posts/hiding-tabs-using-cui With the help of the same I was able to set the Tab Visibility based on the Item Type Classification : However , On Creation of the Part Item when the user selects the Classification Assembly , the CUI changes are not available, only when the user closes the Part and opens it again does the "Part BOM" relationship become visible. Is there any way to invoke the CUI changes on the Form Events ? Or should I be using a Method to hide/unhide the relationship tab rather than the CUI for the current use case. Thanks.5.7KViews0likes6CommentsHow to refresh or reload the relationship tab
Hi, All. I have a Itemtype (source) named DocApply. DocApply has a relationship called DocApply_deplist which connects DocApply to DocApply_dep (related). I added an onchange event to DocApply's property (no) to bring the related data to DocApply_dep when (no) is changed. The problem I encounter now is as follows DocApply_dep has a field with the dep_name data type of Item When I successfully write the data into DocApply_dep, but the dep_name of the relationship tab on the screen is blank, I want her label to be displayed, but I don't know how to do it, can anyone suggest me? //Here is the javascript code I wrote //It is executed in (docapply.no) onchange event var tabbar = parent.relationships.relTabbar; tabID = tabbar.GetTabId("部門會簽"); var currTabID = parent.relationships.currTabID; var FirstTabID = tabbar.GetTabId("Signoffs"); var tmpItem; var DocApply_depRelId = top.aras.getItemFromServerByName("RelationshipType","DocApply_deplist","id").node.getAttribute('id'); var dep = "gm,ap,ep,sw,rd,hpla,po,ee,pa,cm,ed,lm,tt,pt,ad_mm,qc,ms_1,it,ad,hr,fa,fc" if (srcElement.value !== "") { var qcondition = "<itemtype>Arima_ECR_ECN</itemtype><id>"+ECNid+"</id><dep>"+dep+"</dep>"; var Depinfo = top.aras.applyMethod("Find_Old_CountersignDep", qcondition); Depinfo = Depinfo.replace("<Result>",""); Depinfo = Depinfo.replace("</Result>",""); //return-> id:keyed_name,id:keyed_name,... var Dep_data = Depinfo.split(","); for (var i = 0;i<Dep_data.length ; i++) { var Dep_info = Dep_data.split(":"); tmpItem = top.aras.newItem("DocApply_dep"); top.aras.itemsCache.addItem(tmpItem); top.aras.setItemProperty(tmpItem,"dep_name",Dep_info[0]); // id var newRelship = top.aras.newRelationship(DocApply_depRelId,parent.item,false,null,tmpItem,"DocApply_dep",false,true,"DocApply_deplist"); } } if (currTabID !== FirstTabID) { top.document.frames[2].iframesCollection[tabID].contentWindow.location.reload(); }5.3KViews0likes4Comments