Найти в таблице строку, используя расширенный фильтр.

Фильтр берется из таблицы фильтра.


На примере показано как найти в таблице iTable строку, у которой в колонке с названием "Колонка1" значение "СТЕНА", значение в колонке "Колонка2" - содержит "3", в колонке "Колонка3" содержится в любом месте "В22" или "В22" (В - или на русском или на английском) и в колонке "Колонка 4" число больше или равное 2.


bool stoponfirstnoteq = false;

bool add_sum = false;


int iTableFilter;

object("create", "ts_table", iTableFilter);

ts_table(iTableFilter, "create_structure_for_filter_table");

ts_table(iTableFilter, "add_row_to_filter_table", "(", "ANY", "Колонка1", "=",              "СТЕНА",  "", "AND");

ts_table(iTableFilter, "add_row_to_filter_table",  "", "ANY", "Колонка2", "CONTAINS",           "3",  "", "AND");

ts_table(iTableFilter, "add_row_to_filter_table",  "", "ANY", "Колонка3", "REGEXMACH", ".*[BВ]22.*",  "", "AND");

ts_table(iTableFilter, "add_row_to_filter_table",  "", "ANY", "Колонка4", ">=",                   2, ")", "");


int ires = ts_table(iTable, "search_extended", iTableFilter);


Здесь 

iTable - дескриптор таблицы, в которой надо найти строку;

iTableFilter - дескриптор таблицы, в которой описаны требования фильтра;

Возвращает -1 если строка не найдена, или индекс найденой строки (>=0).