Как работатсь с перечислением

Подскажите, как в Террасофт работать с полем перечисления.
Например, я хочу проверить какое значение выбрано в поле перечисления. Мне для этого нужно сравнивать ID, Code или Caption?
Или как мне присвоить определенное значение этому полю: с помощью ID, Code или Caption?

Как будет удобнее всего и универсальнее?

Нравится

13 комментариев

"Кошкаров Андрей" написал:Или как мне присвоить определенное значение этому полю: с помощью ID, Code или Caption?

По ID
"Кошкаров Андрей" написал:Например, я хочу проверить какое значение выбрано в поле перечисления. Мне для этого нужно сравнивать ID, Code или Caption?

Так же ID

Вы используете EnumControl или EnumDataControl?

"Раловец Ольга" написал:Вы используете EnumControl или EnumDataControl?

EnumDataControl

Так обращайтесь не к элементу управления, а к соответствующему полю датасета по имени поля (полю указнному в DataFieldName EnumDataControl-a). В этом поле хранится ID записи.

"Раловец Ольга" написал:Так обращайтесь не к элементу управления, а к соответствующему полю датасета по имени поля (полю указнному в DataFieldName EnumDataControl-a). В этом поле хранится ID записи.

Я так и делаю. Вопрос был в другом. Как мне проверять значение этого поля и присваивать ему какое-то другое значение.
"Кулак Олег" написал:По ID

Хорошо, так и сделаю. Просто я думал, что возможно есть такая возможность по значению Code делать сравнение и присвоение.
Что-то типа:
if (EnumItem.Code == co_FIFO)
или
EnumItem.Code = co_Expensive

По ID не видно, какое значение используется, а по Caption - есть вероятность изменения этого значения. По Code было бы самым оптимальным:
- значение не меняется
- понятно о каком значении идет речь

А для этого, Вам нужно будет подключить перечисление к скрипту!

--
www.it-sfera.com.ua

"Виталий Ковалишин aka samael" написал:А для этого, Вам нужно будет подключить перечисление к скрипту!

А как это делается?

"Кошкаров Андрей" написал:Я так и делаю. Вопрос был в другом.

Включаете перечисление в скрипт и пишите

if (dlData.Dataset.Values('FieldName') ==  co_FIFO){
 //Do somthing
}

Ольга правильно ответила, Вы просто не поняли.

Upd: Хотя на самом деле почти правильно :)

я еще вот такую возможность нашел:

if (DataField.ValAsEnumItem.Code == 'co_FIFO') {
 // some code
}

Спасибо всем за помощь, теперь у меня ясность по этому вопросу.

"Underscore a.k.a. _" написал:Upd: Хотя на самом деле почти правильно :)

Поправьте меня, пожалуйста, что именно не правильно.

Вы не сказали, что нужно включить перечисление в скрипт. А вот Виталий об этом не забыл :)

"Underscore a.k.a. _" написал:Вы не сказали, что нужно включить перечисление в скрипт

Если прописывать не код, а значение идентификатора, то, думаю, не обязательно, но это будет нехорошо уже по другой причине, признаю :)

Показать все комментарии