Поиск в таблицах quik
Qlua имеет встроенную функцию getOrderByNumber(STRING class_code, NUMBER order_id). Однако кроме ордеров, но номеру часто приходится искать и стоп-зявки и сделки. Функция SearchItem позволяет исполнять быстрый поиск по любым quik-таблицам, но мне удобнее сделать на ее основе отдельные функции поиска, аналогичные getOrderByNumber()
Пара примеров.
-- Получение таблицы стоп-ордера по его номеру
-- Возвращает таблицу стоп-зявки или nil
function getStopOrderByNumber(stop_order_number,from,to)
local index_table = SearchItems("stop_orders",
from or 0,
to or getNumberOf("stop_orders")-1,
function(t)
return t.order_num == stop_order_number
end)
if index_table then
return getItem("stop_orders",index_table[1])
end
end
-- Получение таблицы стоп-ордера по номеру порожденной им заявки
-- Возвращает таблицу стоп-заявки или nil
function getStopOrderByOrderNumber(order_number,from,to)
local index_table = SearchItems("stop_orders",
from or 0,
to or getNumberOf("stop_orders")-1,
function(t)
return t.linkedorder == order_number
end)
if index_table then
return getItem("stop_orders",index_table[1])
end
end
