Цитата:
Сообщение от
S.Kuskov
Эмм... не понял вас. Я вижу проблему при любом использовании числового значения элемента перечисления вместо его имени.
Не... я тут имел в виду общую проблему, которая в принципе возникает при любом добавлении нового элемента енума. Это не относится к числовому представлению.
Пример (АХ 2009):
Тип партнера договора (RContractPartnerType). Штатно этот енум имеет 2 значения: Клиент и Поставщик (будем считать, что у нас нет слоя с зарплатой, где еще добавляется сотрудник).
В коде, который относится к обработке клиентских договоров можно встретить 2 варианта:
1.
X++:
if (rcontractTable.RContractPartnerType == RContractPartnerType::Cust)
и
2.
X++:
if (rcontractTable.RContractPartnerType != RContractPartnerType::Vend)
как вариант вот так:
X++:
if (rcontractTable.RContractPartnerType == RContractPartnerType::Cust)
{
}
else
{
}Теперь представим себе, что мы добавляем новое значение в енум RContractPartnerType.
В зависимости от предназначения этого нового элемента - вышеуказанные конструкции нам придется подправить или возможно вообще видоизменить (например, if ... else преобразовать в switch)
Речь о явно заданных числовых значениях здесь конечно не идет. Данный пример я привел в качестве аргумента тому, что при добавлении нового значения енума придется лопатить существующий код, а вот вопрос - у кого этого кода может быть больше - у МСа в его выпущенном обновлении или в моих собственных разработках - вот этот вопрос и открыт.
Но в пользу моих доработок конечно говорит возможность не трогать мои исторические данные, в отличие от кода от МС. Хотя и закладывает мину для будущего обновления версии (если оно будет).