3593
Points
Questions
5
Answers
233
-
The Where-Used tab does not directly reference the BOM table, and so Ref-Des values cannot be shown in the tab.
The issue is that the item is not shown per usage by assembly rev, but just by assembly. So if it’s Ref-Des was modified for different revisions of the assembly, it would have to decide which one to show (latest?). They opted to simply not show anything linked to the assembly rev and so not show any BOM attributes (note that quantity and find number cannot be shown either, IIRC).
- 1143 views
- 1 answers
- 0 votes
-
I assume that you are using Import. It is a BOM load if you want the documents to appear in the BOM tab of the part. It is not if you want the documents to appear in the Relationships tab, for example.
Do you have permission to use Import?? That you cannot do the mapping makes me think that is the case.
Probably your biggest problem (even with privileges) is that Import will want to link each line for a part to a revision/change of that part that is pending.
Find the Import/Export Guide for the version of Agile you are running. It explains everything you should need to know about using the Import utility.
This answer accepted by Janne_Bayer. on August 6, 2019 Earned 15 points.
- 1500 views
- 1 answers
- 0 votes
-
- 1408 views
- 1 answers
- 0 votes
-
Easiest way is to use an SQL script. No need to stop/start the Agile application server, as user info is not cached. The SQL would be as follows :
update agileuser set enabled = 0 where loginid = ‘<user login>’; — this will disable the user
update agileuser set enabled = 1 where loginid = ‘<user login>’; — this will enable the user
Login into the Agile database, run the script to change those users who need to be modified, commit those changes and log out, You should then be good.
- 1754 views
- 3 answers
- 0 votes
-
- 3887 views
- 4 answers
- 0 votes
-
I suspect that “7830012” is the ID of the document object under which the file resides. That or the folder ID. Run the following query to confirm :
select am.attach_id, a.attachment_number, am.parent_id, i.item_number, am.file_id, f.filename
from attachment_map am, attachment a, item i, files f
where am.file_id = 7829965 and am.attach_id = a.id and am.parent_id = i.id and am.file_id=f.id order by f.id;Note that the URL calls out “tabid%3D2“, which basically means to display tab 2 for the object. For the folders (class=6159), that happens to be the Files tab. So it looks like the URL what you want.
If you need to build your own URLs and need to get the correct ID values, modify the above query to specify the file name from the FILES table, use whatever file ID is latest (there will mostly likely be multiples of the file name) and you should be good.- 3887 views
- 4 answers
- 0 votes
-
Look up the Import Export User Guide for the version of Agile that you are running, and read through it. You can attach files using either aXML or PDX formats, but that is the only way of doing it using Import (you cannot specify attachments in delimited text files).
You can also load just files using FileLoad. Look for the chapter on using FileLoad in the same manual as noted above (it is the last one). It is much easier to use, but it *only* loads attachments (whereas Import can load item data AND attachments).
Or you can combine the 2 methods and load item data (as needed) using Import, and then attach files using FileLoad. Something to note, if you run FileLoad and it processes a file, there is no going back. FileLoad *does not* check for duplicates, it assumes that if you tell it to attach a file, it should be attached. So you need to be careful if you have any errors to *NOT* simply run the data file again, as FileLoad will attach all the files specified, whether they exist or not. It is usually best that if you do have errors, to use the BAD file, fix the issues in there as it only has those record that had an error and should therefore be processed again.
- 1685 views
- 2 answers
- 0 votes
-
You are correct in that the database attribute data type is NUMBER for numeric attributes. As I understand it, the scale/precision is not enforced at the database level, but is instead just part of the attribute value display processing. The database internal format is not relevant, so long as it can handle values out to the limits of scale and precision that are supported by the application.
- 1605 views
- 2 answers
- 0 votes
-
Lifecycle values are always in the NODETABLE table. To check if an LCP value is linked to a specific subclass, you would need to follow the hierarchy in NODETABLE. Each class has a defined node underneath it for “LifeCycle Phases” (select id, description from nodetable where parentid=10000), it is 1514 for Items, 9043 for Documents and 9045 for Parts. Each class also has a node for “User-Defined Subclasses” (10141 is the ID for the Part subclass). If you look in NODETABLE using that value as the PARENTID, you will see a node defined as “LifeCycle Phases” for the subclass. This is the parent ID for the LCP values defined specifically for that subclass.
If you are using SQL, just get the ID for the subclass, find the ID for the “LifeCycle Phases” node, and then check to see if it has a record with the lifecycle value you want to use under it. If you are using the SDK, it should work something like this :
private static void checkLifecyclePhase(IItem item, String lcp) throws APIException {
// Get the Lifecycle Phase cell
ICell cell = item.getCell(ItemConstants.ATT_TITLE_BLOCK_LIFECYCLE_PHASE);// Get available list values for Lifecycle Phase
IAgileList values = cell.getAvailableValues();// Run through the LCP list to verify we are using a good one
int cval := -1;
for (int i = 0; i < values.length; i++) {
if ( values[i] = lcp ) {
cval = i;
}
}if (cval >= 0) {
// Set the attribute to the value we got as an argument which was found in the LCP list
values.setSelection(new Object[] { cval });
cell.setValue(values);
} else {
throw new Exception(“Could not find ” + lcp + ” in the life cycle values”);
}}
My apologies if my Java isn’t correct, I am a bit rusty….. But the above should give the general idea of what to do. When you get the list of lifecycle values, it will include the base Item LCP values, the class LCP values *and* the subclass LCP values. So every valid LCP value for the item in question will be in the array. You find which one matches the value given as the argument, and then set it. If it is not found, then throw an exception or handle as needed.
- 1957 views
- 5 answers
- 0 votes
-
Probably easier to find all those assemblies/parts that have more than 1 unreleased change against them, and then go through those to see if anything is conflicting. To do this correctly, I would need to know what attributes I would need to look at (just BOM, or part attributes as well).
In some systems that I have worked on, each affected item is limited to 1 active/non-released change at a time (Agile does not do this). If you have 2 users creating a change against a part and modifying the part descriptions (for example) in different ways, then you may need to have better coordination between your users.
Note that part description is by definition a change-controlled attribute, but if you have P2/P3 attributes that are not change-controlled, then you cannot tell what change altered the value to what it is right now. The only way for this to work correctly is for the part attributes you want to compare be change-controlled, so you can see the value associated with each change (no record means no modification), and then see how they are different. That would involve working with the REDLINE_ATTRIBUTE and REDLINE_MSATTRIBUTE tables.
- 1352 views
- 2 answers
- 0 votes