I’m trying to set a default value on a field with a pull-down (The “Warehouse” field in Quick Job Entry) but I don’t see a “Customize Tracker View” in the context menu, presumably because it’s not a tracker. How do I set a default in this case?
I tried going to “Customize” and setting the text for the field, but that seems to just set the current text, saving the customization and then restarting the screen also clears out the default text I just tried to save.
When I go to field help under technical details I also see there is an “Initial Value” field, but I can’t change that either.
I don’t know if the fact that it’s a pulldown pulling values from another table makes it any more complicated or not.
Once I get into this function to do the assignment, how do I know the name of the variable I am assigning to? In the above example, “dteCalculated_LoadDate.Value” is used, but for the field I am looking at I’m not seeing anything resembling that. I’m sure there’s a better way to do this than guess at names, save the customization, then quit the screen and restart it to see if there is a compiler error…
I can also get a reference to the native control, which in this case is a Erp.UI.Controls.Combos.WarehseCombo, by calling csm.GetNativeControlReference(GUID), but I’m not sure how to use this to set the field value either. Haven’t found any documentation on this object in the customization user guide…
I have been in the object explorer, but I’m not sure what you mean by “set values there”.
I have looked at the example code but I must be doing something wrong somewhere because it’s not working. I’m assuming that WarehseCombo is a sub-class of EpiCombo (that’s the closest Controls object I can find under the UI Objects tab), and it shows both “Text” and “Value” properties. I’m copying the form of the C# examples it gives on the object I get back from the GetNativeControlReference, and there are no errors assigning a string to either of them, but nothing shows up in the control, either. Some possibilities I have come up with:
Setting the property doesn’t automatically cause the property value to show up in the field on-screen
It’s some other property besides “Text” or “Value” - there are a lot of properties to look through and I may have missed the correct one.
InitializeCustomCode() is the wrong place to put the assignment.
@TobyLai I’ll look into that too… by Post-Processing though, do you mean this will happen immediately after the form gets loaded or (for a new record) ready to process input, or something that happens after the user is done? It’s the former I’m looking to do.
The object explorer lists the fields in the dataview. That can show you what you need to change. It gives you some sample code to get you started. It’s not always perfect, but it will usually get in the right spot.
Generally, if you change the dataview, the UI will follow accordingly. I you change the UI the data behind it may or may not.
Run trace and look at it as you are doing things to see which things fire when. Do one step, view the trace. Do another step, view again and see what happens. There are lots of methods that fire when you are doing things in the system, not just the one that saves things.
I don’t see anything under “Data Objects” besides “EpiDataViews” which doesn’t seem to expand into anything containing a resemblance to the UI field I want to initialize.
Now some progress. I copied the example code into the InitializeCustomCode function and customized it. But, I want to assign to the field, not read its value and the example code doesn’t show how to do that, so I swapped the fields from:
Now when I start the screen I get a dialog box titled “InitializeCustomAssembly–InitializeCustomCode” saying: “Exception has been thrown by the target of an invocation.”
I’m just guessing here, but I think it didn’t like being assigned a string…
Set field for WarehouseCode and WarehouseDesc, then when the new Job is created, the default warehouse is selected. I prefer this way than using custom code.
Everything about this is great, except for the fact that I can’t get it to work! I have tried setting several different fields (I noticed some fields are getting automatically initialized once an actual part is entered, I was under the assumption that once I clicked on (e.g.) “New Job” any initialization would be done - Warehouse is getting initialized to “Finished Goods” and Quality is getting initialized to 0, though I don’t see any code doing this.)
There are no errors, just nothing is getting filled in the way I want. Is there some way to run this with the customizations window open so I can watch the output and maybe some way to generate output there myself for debugging purposes?
As far as I can tell I followed the steps you laid out exactly. There’s no other script code aside from what I just generated, so it’s not like an existing customization is fighting me.
Guess I’ll see if I have any better luck with the BPM approach…
I’ve got all the boxes checked and I can see the business objects being called, but I’m not really sure what I’m looking for. I’m not going to see my events called or the values I’m trying to set because they’re on the client side, right? Any extra flags I should pass to tracing?
Basically, the last thing I am seeing in the trace appears to be returning a <QuickJob> data structure… this has a <JobNum> field which is whatever job number I entered, and a <PartNum> which is whatever part I selected… but then there are a lot of other field values, for instance it is returning “FG” for <WarehouseCode> and “Finished Goods” for <WarehouseDesc>. It looks like it is returned all the (default?) values for every field, and that is what is populating the screen, not what I am telling it to in the EpiViewNotification event.
After each business object you will see the parameters of what’s being called. That’s the inputs. If the part number matters. That will be there. After that, you will see all of the columns in the data view. That’s what that business object touches. So if you want to set something, you can see with business objects you can hang a BPM on.
After thinking a bit, I bet that the warehouse is set by the primary warehouse on the part. You may not need to try and set that. So make sure you understand the base process first before you start customization.