UD Column is Read only when added to form

Currently in final stages of testing upgrade from 10.1.500 to 10.2.300, we go live this weekend. We noticed one of the UD fields we added to the QuoteEntry form is now acting as read only and is grayed out. I cannot find anywhere this may be set to read only, UD Column Maintenance shows nothing. Any ideas?

Are those fields definitely bound to the right fields?

Yes, this was working in 10.1.500 but now in 10.2.300 the field is read only afyer upgrade. Deleting and adding the textbox still remains read only.

What table is the UD field on?

QuoteDtl

two things to check,
the Extended properties, and the screen Editor customization, look for the field name and see if it is disabled

All users? Or just some?

I seem to recall hearing people having issues with privileges due to Territory settings. Take a look there.

Ok, this is getting strange. This UD field is used together with another UD field that controls a checkbox. I checked with a handful of users belonging to different groups. Some can edit both, which is correct and for others either the text field is disabled or the checkbox is disabled.

I just discovered that you can edit either of these fields through the Quote -> Line -> List Grid. It is just the checkbox and text box that are affected.

So everyone can change them when using Lines -> List?

And is the read/only status of those fields (on the Lines -> Detail sheet) QuoteNum or line dependent?
(If it is R/O for a user, it is R/O for all lines of that quote, and/or for any lines of any quote)

Yes anyone can edit using Lines->List.

For those users that see these as R/O, it happens the same on any quote or line.

And the binding is straight forward? The controls on the Detail sheet are bound to the same data as the Lit sheet’s grid?

Epicor will not handle the disabling of custom UD Columns in all areas or forms. Depending how the Form is coded… Perhaps Quoted = true will Disable All Fields… But other than that, you have to handle it using RowRule’s yourself. Atleast its my finding thus far… I am in 10.1.500 – is this an Changed that occured in 10.1.400 or 10.x, I guess I havent paid much attention until recently :slight_smile:

Epicor itself simply behind the scenes has RowRules on Fields, you can see that if you .NET Reflect on their dll’s – and they only include their own fields.

Lets just peek at SO Entry… Epicor Small Gist from .dll


private void CreateRowRuleOrderHedOpenOrderEquals_false()
{
	// Description: OrderHedClosed
	// **** begin autogenerated code ****

	RuleAction[] ruleActions = new RuleAction[] {
		RuleAction.AddControlSettings(this.oTrans, "OrderRel.smVI_VIN_c", SettingStyle.ReadOnly),
		RuleAction.AddControlSettings(this.oTrans, "OrderRel.smVI_VIN_Abbr_c", SettingStyle.ReadOnly),
		RuleAction.AddControlSettings(this.oTrans, "OrderRel.smVI_Factory_Order_Number_c", SettingStyle.ReadOnly),
		RuleAction.AddControlSettings(this.oTrans, "OrderRel.smVI_Asset_Number_c", SettingStyle.ReadOnly),
		RuleAction.AddControlSettings(this.oTrans, "OrderRel.smVI_Misc1_CodeID_c", SettingStyle.ReadOnly),
		RuleAction.AddControlSettings(this.oTrans, "OrderRel.smVI_Misc1_Number_c", SettingStyle.ReadOnly),
		RuleAction.AddControlSettings(this.oTrans, "OrderRel.smVI_Misc2_CodeID_c", SettingStyle.ReadOnly),
		RuleAction.AddControlSettings(this.oTrans, "OrderRel.smVI_Misc2_Number_c", SettingStyle.ReadOnly),
		RuleAction.AddControlSettings(this.oTrans, "OrderRel.smVI_Misc3_CodeID_c", SettingStyle.ReadOnly),
		RuleAction.AddControlSettings(this.oTrans, "OrderRel.smVI_Misc3_Number_c", SettingStyle.ReadOnly),
		RuleAction.AddControlSettings(this.oTrans, "OrderRel.smVI_Misc4_CodeID_c", SettingStyle.ReadOnly),
		RuleAction.AddControlSettings(this.oTrans, "OrderRel.smVI_Misc4_Number_c", SettingStyle.ReadOnly)
	};

	// Create RowRule and add to the EpiDataView.
	RowRule rrCreateRowRuleOrderHedOpenOrderEquals_false = new RowRule("OrderHed.OpenOrder", RuleCondition.Equals, false, ruleActions);
	((EpiDataView)(this.oTrans.EpiDataViews["OrderRel"])).AddRowRule(rrCreateRowRuleOrderHedOpenOrderEquals_false);

	RowRule rrCreateRowRuleOrderRelOpenReleaseEquals_false = new RowRule("OrderRel.OpenRelease", RuleCondition.Equals, false, ruleActions);
	((EpiDataView)(this.oTrans.EpiDataViews["OrderRel"])).AddRowRule(rrCreateRowRuleOrderRelOpenReleaseEquals_false);
	// **** end autogenerated code ****
}

// Grids
private void CreateRowRuleOrderRelOpenReleaseEquals_false()
{
	// Description: OrderRelOpenRelease
	// **** begin autogenerated code ****

	RuleAction[] ruleActions = new RuleAction[] {
		RuleAction.AddRowSettings(this.oTrans, "OrderRelCustom", false, SettingStyle.Disabled)
	};

	// Create RowRule and add to the EpiDataView.
	RowRule rrCreateRowRuleOrderRelOpenReleaseEquals_false = new RowRule("OrderRelCustom.OpenRelease", RuleCondition.Equals, false, ruleActions);
	((EpiDataView)(this.oTrans.EpiDataViews["OrderRelCustom"])).AddRowRule(rrCreateRowRuleOrderRelOpenReleaseEquals_false);
	// **** end autogenerated code ****
}

Here is the properties of the EpiNumericEditor, thought it was a textbox initially. Epicor automatically adds the UD field to the grid, I did not add it.

Have you tried clearing the personalization of a user that sees the control as R/O?

Other than the addition of these controls on the detail sheet, are there many other customizations?

I am one of the users that sees it as Read Only and I have no personalizations. I have cleared the cache, deleted the cache on my c: drive and nothing changes the status. There is a fair bit of customization, new tabs, new fields, about 1100 lines of custom code.

If you make a new customization, consisting of nothing but the base + the addition of that field, does it replicate the problem?

It does somewhat, for me this time the checkbox was R/O and the field was editable. They both should be editable.

That leads me to believe its something in the db schema vs the customization.

Have you tried regenerating the data model?

Yes, tried that yesterday, no change. My guess the upgrade did something.

You’ve seemed to have covered most things I’d try …

So with nothing more than the control added to the base form, the control appears as read only. Is there a difference between a field being “Read Only” and the control’s enabled property being false? (in other words: does a R/O field in a dataset just set the bound controls to be disabled?)