20.01.2017, 13:55 | #1 |
Участник
|
Был же сарайчик! Запретить/Разрешить 0 в enum
Помню, что было свойство, которое запрещало или разрешало использование значения 0 в enum.
Но не помню где -в enum, в edt, на контроле... Подскажите пожалуйста что за свойство? и главное - это свойство осталось в акс7? |
|
20.01.2017, 14:07 | #2 |
Участник
|
Именно для енума что-то запрещать - не помню такого)
Была/есть возможность на полях с енумом установить свойство Mandatory - тогда будет запрет связанный с этим полем
__________________
Axapta v.3.0 sp5 kr2 |
|
20.01.2017, 14:22 | #3 |
MCT
|
Чего вы меня путаете ?...
Property : configuration key - не для этого ли? Mandatory на enum. Я извиняюсь, конечно, может задачи не разглядел, но это как??!!!
__________________
Axapta book for developer |
|
|
За это сообщение автора поблагодарили: iCloud (2). |
20.01.2017, 14:35 | #4 |
Участник
|
Mandatory на поле с типом ENUM
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
20.01.2017, 14:48 | #5 |
Участник
|
HideFirstEntry на ComboBox - не оно?
|
|
|
За это сообщение автора поблагодарили: mazzy (2), MikeR (1), iCloud (2). |
20.01.2017, 14:52 | #6 |
Дмитрий Ерин
|
может UseEnumValue = Yes? Ну и соответственно в EnumValue элементов избавиться от 0... Или я тоже не понял вопрос
ЗЫ: Про семерку не знаю... |
|
20.01.2017, 15:02 | #7 |
Участник
|
В принципе довольно хороший воркэраунд - навесить Mandatory=Yes на поле в таблице.
Цитата:
Подробнее здесь.
__________________
// no comments |
|
20.01.2017, 15:43 | #9 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: mazzy (2), MikeR (3). |
20.01.2017, 16:04 | #10 |
Banned
|
|
|
20.01.2017, 16:14 | #11 |
Участник
|
точно! оно.
но блин, оно слишком близко к пользовательскому интерфейсу... задолбаешься его протягивать... надо подумать. я щас попробую. но если поставить mandatory, то разве в выпадающем списке пустое значение пропадет? просто хотелось бы явно дать понять пользователю, что в этом месте пустых значений быть не может. причем так, чтобы не пришлось программировать направо-налево, а точечно изменить одно-два свойства. Цитата:
мне кажется, что это уже поздно. хотелось бы чтобы пользователь понял раньше - здесь пустое значение не допускается. |
|
20.01.2017, 17:57 | #13 |
Участник
|
Ноль как и любое другое целое число до 255 запросто пишется в БД и никакой ошибки валидации на системном уровне не происходит даже в случае отсутствия в энуме элемента с соответствующим значением. А вот Mandatory=Yes на уровне пользовательского интерфейса запрещает ползователю сохранять нулевое значение даже если это значение имеет какой-либо логический смысл (входит в состав элементов энума)
|
|
20.01.2017, 20:07 | #14 |
MCT
|
Цитата:
Сообщение от mazzy
точно! оно.
но блин, оно слишком близко к пользовательскому интерфейсу... задолбаешься его протягивать... просто хотелось бы явно дать понять пользователю, что в этом месте пустых значений быть не может. будет ошибка при валидации, перед записью в базу. мне кажется, что это уже поздно. Никогда не делайте так!!! Mandatory не для Enum!!! PS частенько наблюдаю чем отличается опытный строитель от залетевшего из средней Азии непрофессионала. Когда навешивают дверь, первый работает либо лобзиком либо долотом, петля устанавливается почти что невидимо. Второму же по барабану хоть зубилом. В итоге дверь весит, но в первом случае количество открываний\закрываний достаточно большое, во втором случае дверь начинает расшатываться достаточно быстро и видны на коробке кривые зарубки. А так согласен, дверь висит начальника, чего хочешь.
__________________
Axapta book for developer |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
04.03.2024, 15:46 | #15 |
Участник
|
Цитата:
Поотваливались проверки на обязательность при переходе на Ax2012 Дописали свою проверку Best practice \Classes\SysBPCheckTableField\checkEnumFieldMandatory_MRC X++: boolean checkEnumFieldMandatory_MRC() { str message; boolean ret = true; ; if (!sysDictTable || !sysDictField) { return ret; } if (sysDictField.baseType() != Types::Enum) { return ret; } if (!sysDictField.mandatory()) { return ret; } if (!sysDictEnum) { return ret; } if (!sysDictEnum.value2Symbol(0)) { return ret; } if (sysDictEnum.value2Symbol(0) == "None") { return ret; } ret = false; message = strFmt("Свойство \"Mandatory\" не будет работать, так как дефолтное значение енума \"%1\" равно \"%2\". " + "Чтобы работало переименуйте на \"%1::None\". Это появилось с 2012-й версии. См. " + "https://dynamicsaxhints.blogspot.com/2016/05/mandatory-table-field-based-on-enum.html" + "\n" + "https://learn.microsoft.com/en-us/dynamicsax-2012/developer/best-practices-for-base-enums" + "\n" + "https://dax.axforum.info/forums/showthread.php?p=394676#post394676" + "\n", sysDictEnum.name(), sysDictEnum.value2SymbolWithEnumName_MRC(0) ); sysBPCheck.addError(#BPErrorMandatoryEnumValue_MRC /* 12502 */, 0, 0, message, "Mandatory", sysDictField.path()); return ret; } |
|
Теги |
ax2012, dax2012, enum, mandatory |
|
|