Поиск в таблицах quik

Опубликовано в QLua

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

Архив QLua