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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.08.2010, 12:42   #1  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Цитата:
Сообщение от titov Посмотреть сообщение
При этом до этой формы - смены статуса значение перечисления может быть неопределено, а записи создаются на другой форме, где значение поля НЕОБЯЗАТЕЛЬНО и это требование бизнес-логики.
...
вот там енум ставим обязательно, да отходим от бест-практик - в истории не может быть неопределенного статуса записи - тут приоритет другого требования бест-практик - в таблице не должно быть записи с некорректным значением, и закрывается такая ситуация именно на таблице.
Не согласен. А сделать проверку где-нибудь, да хоть в validateWrite() не подойдет? Приведите, пожалуйста, пример обязательного поля с типом Энум в стандартной Аксапте. Согласитесь, что маловероятно, чтобы было так, что в очень большом стандартном приложении такого примера не было, а в неком проекте с количеством доработок явно на несколько порядков меньше уже имеющегося кода без этого не обойтись.

Upd. У BaseEnum любое значение - уже "непустое". Просто потому, что это "перечисление". Даже если вы некое из значений почему-то рассматриваете "пустым". И если по бизнес-логике в какой-то ситуации какое-то из значений не должно иметь место быть, то проверка на это должна быть прозрачно видна из кода, а не переложена в неожиданное место, на свойство поля. Свойство "мандатори" проверяет заполненность поля, а в вашем случае поле будет заполнено.

Аналогично, например, нехорошо для поля с типом Энум (за исключением, возможно, типа NoYes), писать 'if (table.enumField)' вместо 'if (table.enumField != BaseEnum::None).

Последний раз редактировалось oip; 12.08.2010 в 13:18. Причина: Добавил
Старый 12.08.2010, 13:23   #2  
titov is offline
titov
Участник
 
73 / 87 (3) ++++
Регистрация: 23.12.2005
Адрес: Казань
джоб нашел 100 объектов для ах2009

X++:
static void EnumTypeMandatory(Args _args)
{
    Dictionary      dictionary = new Dictionary();
    DictTable       dictTable;
    DictField       dictField;
    int             countFiledsTotal;
    tableId         tableId;
    fieldId         fieldId;
    ;
    setprefix('Сканирование АОТ. Таблицы, имеющие поле enum mandatory');
    for (tableId = dictionary.tableNext(0);tableId;tableId = dictionary.tableNext(tableId))
    {
        dictTable = new DictTable(tableId);
        if ( (! dictTable.isMap()) && (! dictTable.isTmp()) && (! dictTable.isView()))
        {
            setPrefix(dictTable.name() + '-' + dictTable.label());
            for (fieldId = dictTable.fieldNext(0);fieldId;fieldId = dictTable.fieldNext(fieldId))
            {
                dictField = dictTable.fieldObject(fieldId);
                

                if(         dictField.type()        == types::Enum
                        &&  dictField.mandatory()   == true
                  )
                {
                    info(dictField.name() + '-' + dictField.label());
                    countFiledsTotal++;
                }
            }
        }
    }
 
    info(strFmt("Total found %1 objects",countFiledsTotal));
}
За это сообщение автора поблагодарили: oip (1).
Старый 05.04.2011, 14:52   #3  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Столкнулся с таким же поведением enum'а в существующей нестандартной таблице. Не догадался обратить внимание на свойство mandatory табличного поля, почему-то казалось что что-то хитрое с enum'ом или EDT. Респект за тему
Теги
ax2009, enum

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как получить из элемента enum-а код типа (enum-а)? Romb DAX: База знаний и проекты 12 27.06.2013 16:17
Странный баг при расширении Enum DTD DAX: Программирование 1 07.05.2009 18:45
Глюк компилятора Eldar9x DAX: Программирование 5 21.01.2008 14:03
Enum: глюк? Gorlum DAX: Программирование 11 10.02.2006 07:43
Фильтрация по полю Enum в Query Cooper DAX: Программирование 8 04.07.2004 09:21
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 04:41.