Да, была такая тема уже. Но все равно не работает

Помогите пожалуйста!
Вот код:
X++:
public void buildUtilElementsTypeList()
{
FormListItem formListItem;
int idx=0, i=0;
SysDictEnum SysDictEnum;
boolean checked;
str UtilTypeLabel;
;
SysDictEnum = new SysDictEnum(EnumNum(UtilElementType));
UtilElementsTypes.deleteAll();
while (i <=enumcnt(UtilElementType) )
{
UtilTypeLabel= SysDictEnum.index2Label(i);
formListItem = new FormListItem(UtilTypeLabel,i);
formListItem.idx(i);
select firstonly tmptable where
tmptable.UtilElementType == i;
if (tmptable) checked = true; else checked = false;
idx = UtilElementsTypes.addItem(formListItem);
formListItem = UtilElementsTypes.getItem(idx);
formListItem.stateChecked(checked);
UtilElementsTypes.setItem(formListItem);
i++;
}
}
Задача простая - вывести список и отчекить те элементы, которые есть во временной таблице. Симптомы нерабочести - есть если изначально отметили элементы с первого по пятый, то после повторного открытия будут отмечены 2,3,4,5 + какой-то случайный. Хотя в таблице при этом хранится все правильно.

Бред какой-то.