AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.01.2017, 13:55   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Был же сарайчик! Запретить/Разрешить 0 в enum
Помню, что было свойство, которое запрещало или разрешало использование значения 0 в enum.
Но не помню где -в enum, в edt, на контроле...

Подскажите пожалуйста что за свойство?
и главное - это свойство осталось в акс7?
Старый 20.01.2017, 14:07   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
Именно для енума что-то запрещать - не помню такого)

Была/есть возможность на полях с енумом установить свойство Mandatory - тогда будет запрет связанный с этим полем
__________________
Axapta v.3.0 sp5 kr2
Старый 20.01.2017, 14:22   #3  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Чего вы меня путаете ?...
Property : configuration key - не для этого ли?


Mandatory на enum.
Я извиняюсь, конечно, может задачи не разглядел, но это как??!!!
__________________
Axapta book for developer
За это сообщение автора поблагодарили: iCloud (2).
Старый 20.01.2017, 14:35   #4  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от MikeR Посмотреть сообщение
Mandatory на enum.
Я извиняюсь, конечно, может задачи не разглядел, но это как??!!!
Mandatory на поле с типом ENUM
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: mazzy (2).
Старый 20.01.2017, 14:48   #5  
LMA is offline
LMA
Участник
 
22 / 16 (1) ++
Регистрация: 16.09.2004
Адрес: Воронеж
HideFirstEntry на ComboBox - не оно?
За это сообщение автора поблагодарили: mazzy (2), MikeR (1), iCloud (2).
Старый 20.01.2017, 14:52   #6  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
может UseEnumValue = Yes? Ну и соответственно в EnumValue элементов избавиться от 0... Или я тоже не понял вопрос
ЗЫ: Про семерку не знаю...
Старый 20.01.2017, 15:02   #7  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
642 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
В принципе довольно хороший воркэраунд - навесить Mandatory=Yes на поле в таблице.
Цитата:
Сообщение от Ruff Посмотреть сообщение
может UseEnumValue = Yes? Ну и соответственно в EnumValue элементов избавиться от 0... Или я тоже не понял вопрос
ЗЫ: Про семерку не знаю...
Нет, свойство UseEnumValue предназначено для определения, будут ли значения элементов данного типа совпадать с представлением в самой БД.
Подробнее здесь.
__________________
// no comments
Старый 20.01.2017, 15:16   #8  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от dech Посмотреть сообщение
В принципе довольно хороший воркэраунд - навесить Mandatory=Yes на поле в таблице.
В AX2012 это должно работать только если элемент с индексом 0 явно назван None.
То есть Mandatory=Yes AND 0 = None
За это сообщение автора поблагодарили: mazzy (2), MikeR (3), gl00mie (2), dech (1).
Старый 20.01.2017, 15:43   #9  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от ax_mct Посмотреть сообщение
В AX2012 это должно работать только если элемент с индексом 0 явно назван None.
То есть Mandatory=Yes AND 0 = None
А если элемента со значением 0 в энуме вообще не будет, Mandatory=Yes разве разрешит оставить поле непроинициализированным?
За это сообщение автора поблагодарили: mazzy (2), MikeR (3).
Старый 20.01.2017, 16:04   #10  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
А если элемента со значением 0 в энуме вообще не будет, Mandatory=Yes разве разрешит оставить поле непроинициализированным?
Кстати да. Отсутствие нулевого элемента вообще и Mandatory=Yes может быть лучше.

Не должно разрешать, то есть должно заставить выбрать.
Старый 20.01.2017, 16:14   #11  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от LMA Посмотреть сообщение
HideFirstEntry на ComboBox - не оно?
точно! оно.
но блин, оно слишком близко к пользовательскому интерфейсу... задолбаешься его протягивать...
надо подумать.

Цитата:
Сообщение от AndyD Посмотреть сообщение
Mandatory на поле с типом ENUM
я щас попробую.
но если поставить mandatory, то разве в выпадающем списке пустое значение пропадет?
просто хотелось бы явно дать понять пользователю, что в этом месте пустых значений быть не может.
причем так, чтобы не пришлось программировать направо-налево, а точечно изменить одно-два свойства.

Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
А если элемента со значением 0 в энуме вообще не будет, Mandatory=Yes разве разрешит оставить поле непроинициализированным?
будет ошибка при валидации, перед записью в базу.
мне кажется, что это уже поздно.
хотелось бы чтобы пользователь понял раньше - здесь пустое значение не допускается.
Миниатюры
Нажмите на изображение для увеличения
Название: ax6.PNG
Просмотров: 401
Размер:	77.9 Кб
ID:	11149   Нажмите на изображение для увеличения
Название: ax7.PNG
Просмотров: 451
Размер:	58.8 Кб
ID:	11150  

Старый 20.01.2017, 17:57   #13  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от mazzy Посмотреть сообщение
будет ошибка при валидации, перед записью в базу.
мне кажется, что это уже поздно.
хотелось бы чтобы пользователь понял раньше - здесь пустое значение не допускается.
Ноль как и любое другое целое число до 255 запросто пишется в БД и никакой ошибки валидации на системном уровне не происходит даже в случае отсутствия в энуме элемента с соответствующим значением. А вот Mandatory=Yes на уровне пользовательского интерфейса запрещает ползователю сохранять нулевое значение даже если это значение имеет какой-либо логический смысл (входит в состав элементов энума)
Старый 20.01.2017, 20:07   #14  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Цитата:
Сообщение от mazzy Посмотреть сообщение
точно! оно.
но блин, оно слишком близко к пользовательскому интерфейсу... задолбаешься его протягивать...



просто хотелось бы явно дать понять пользователю, что в этом месте пустых значений быть не может.

будет ошибка при валидации, перед записью в базу.
мне кажется, что это уже поздно.
Я ведь почему и спросил уважаемого, про установку свойства, так есть ограничение по жесткому именованию None, это раз. Далее, что бывает кто-то меняет с None на что-то другое, в другой форме это поле вообще может забыть добавиться и так далее. Получаем достаточно идиотскую для пользователя ситуацию, открыл окно формы, вводит значения, затем пытается закрыть, а окно не закрывается, пишет, что не определено какое-то и на какой закладке оно находится не понятно, так как красная черта в Enum достаточно маленькая, а значений на форме может быть много и много закладок. Это вызывает только раздражение.
Никогда не делайте так!!!
Mandatory не для Enum!!!

PS частенько наблюдаю чем отличается опытный строитель от залетевшего из средней Азии непрофессионала. Когда навешивают дверь, первый работает либо лобзиком либо долотом, петля устанавливается почти что невидимо.
Второму же по барабану хоть зубилом. В итоге дверь весит, но в первом случае количество открываний\закрываний достаточно большое, во втором случае дверь начинает расшатываться достаточно быстро и видны на коробке кривые зарубки. А так согласен, дверь висит начальника, чего хочешь.
__________________
Axapta book for developer
За это сообщение автора поблагодарили: mazzy (2).
Старый 04.03.2024, 15:46   #15  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,873 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от ax_mct Посмотреть сообщение
В AX2012 это должно работать только если элемент с индексом 0 явно назван None.
То есть Mandatory=Yes AND 0 = None
Какая гадостная штука.
Поотваливались проверки на обязательность при переходе на 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

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dynamicsaxhints: How to add enum filter with All element Blog bot DAX Blogs 0 19.07.2016 20:11
dynamicsaxhints: How to make enum a mandatory field on a table Blog bot DAX Blogs 0 04.05.2016 06:17
DeniZone: Assigning enum value to variable from enum name Blog bot DAX Blogs 0 17.04.2015 23:11
Как получить из элемента enum-а код типа (enum-а)? Romb DAX: База знаний и проекты 12 27.06.2013 16:17
saveenr: More AX SSRS Screencasts and Instructions on Getting an AX Enum into a Report Blog bot DAX Blogs 0 09.12.2010 02:13
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:16.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.