Yukimura,
avtozakup
Первое.
Для доп.свойств типа "список" в качестве значения в БД сохраняется именно _идентификатор_ строки списка.
И это - единственно технически верное решение. Потому что оно обеспечивает единое место хранения элементов списка. Мы можем переименовать элемент списка один раз в админке списков, и он автоматически переименуется на всем сайте для всех элементов, в доп.свойстве которых использован этот список.
Если сохранять в базу _значение_ строки списка вместо идентификатора, то мы получим то же самое доп.свойство типа "Строка" со всеми его недостатками и неудобствами.
Второе.
Если вы хотите подставлять в фильтр значение а не идентификатор, то вам нужно написать дополнительную функцию, которая будет возвращать вам идентификатор строки списка по его значению и идентификатору самого списка, и вызывать эту функцию.
Например
// сама функция
getListItemIdByValue = function($sListItemName, $iListId) {
$lists = & singleton('lists');
$row = $lists->GetListItemIfIssetValue($iListId, $sListItemName);
if($row && isset($row['lists_items_id']))
{
return $row['lists_items_id'];
}
return -1;
}
...
// и ее использование
$element['value'] = getListItemIdByValue('Ларнака', '123');
В третьих.
Зачем вам вообще понадобилось задавать значение словом?
Если вы реализуете фильтр через некую форму на сайте, то передавать на сервер в качестве значения (то есть в value для input или option) нужно не название элемента списка, а его @id и ваша проблема просто не будет существовать!