Действительно. Получение декодированных словарных значений почти в 10 раз увеличивает время формирования списка. Формирование словарей в памяти в виде таблиц и декодирование из них позволяет значительно увеличить скорость работы.
Код:function GetVocs()-- формирование таблиц словарей в глобальную таблицу Vocs. Запускать в событии Load
Vocs={{},{}}
local rs=CroApp:GetBank():GetVocabulary():GetBase(1).RecordSet
for record in rs.Records do
Vocs[1][record:GetValue(1)]=record:GetValue(2)
end
rs=CroApp:GetBank():GetVocabulary():GetBase(2).RecordSet
for record in rs.Records do
Vocs[2][record:GetValue(1)]=record:GetValue(2)
end
end
function DecodeVals(t,numvoc)-- получение декодированных значений по номеру словаря numvoc из таблицы t и выдача в виде строки
local out={}
for k,v in ipairs(t) do
table.insert(out,Vocs[numvoc][v])
end
return table.concat(out,"; ")
end
-- пример использования
--local v=record:GetValue(6,0,false)
--local str2=DecodeVals(v,1)