|
20.01.2017, 15:43 | #2 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: mazzy (2), MikeR (3). |
20.01.2017, 16:04 | #3 |
Banned
|
|
|
20.01.2017, 16:14 | #4 |
Участник
|
точно! оно.
но блин, оно слишком близко к пользовательскому интерфейсу... задолбаешься его протягивать... надо подумать. я щас попробую. но если поставить mandatory, то разве в выпадающем списке пустое значение пропадет? просто хотелось бы явно дать понять пользователю, что в этом месте пустых значений быть не может. причем так, чтобы не пришлось программировать направо-налево, а точечно изменить одно-два свойства. Цитата:
мне кажется, что это уже поздно. хотелось бы чтобы пользователь понял раньше - здесь пустое значение не допускается. |
|
20.01.2017, 17:57 | #6 |
Участник
|
Ноль как и любое другое целое число до 255 запросто пишется в БД и никакой ошибки валидации на системном уровне не происходит даже в случае отсутствия в энуме элемента с соответствующим значением. А вот Mandatory=Yes на уровне пользовательского интерфейса запрещает ползователю сохранять нулевое значение даже если это значение имеет какой-либо логический смысл (входит в состав элементов энума)
|
|
20.01.2017, 20:07 | #7 |
MCT
|
Цитата:
Сообщение от mazzy
точно! оно.
но блин, оно слишком близко к пользовательскому интерфейсу... задолбаешься его протягивать... просто хотелось бы явно дать понять пользователю, что в этом месте пустых значений быть не может. будет ошибка при валидации, перед записью в базу. мне кажется, что это уже поздно. Никогда не делайте так!!! Mandatory не для Enum!!! PS частенько наблюдаю чем отличается опытный строитель от залетевшего из средней Азии непрофессионала. Когда навешивают дверь, первый работает либо лобзиком либо долотом, петля устанавливается почти что невидимо. Второму же по барабану хоть зубилом. В итоге дверь весит, но в первом случае количество открываний\закрываний достаточно большое, во втором случае дверь начинает расшатываться достаточно быстро и видны на коробке кривые зарубки. А так согласен, дверь висит начальника, чего хочешь.
__________________
Axapta book for developer |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
04.03.2024, 15:46 | #8 |
Участник
|
Цитата:
Поотваливались проверки на обязательность при переходе на 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 |
|
|