исходите из того, что вам нужно передать в
function sqlCopyInto(var QueryOrResultSet; iTable: integer; byName: boolean): integer;
То есть в вашем случае 2 параметр однозначно integer, а передавать туда нужно #таблица, где таблица указана в from 1-ого create view интерфейса - #tblT1 .  На первое место проситься q1 и тип iQuery - но в sqlCopyInto уже должен быть готовый запрос.  Вполне возможно, что прокатит тип TPTR (= longint в текущей версии или comp в следующей).
Что касается установки параметров возможно создание типа record с динамическим массивами.
Код: Выделить всё
Type TParam_Doc = Record
     descript      : Array[0..0] Of String; //
     Val             : Array[0..0] Of Variant //
 End;
Но зачем усложнять себе  жизнь сначала упаковкой в структуру а потом ее распаковкой, когда можно сразу в q1 поставить?
Перенесите обработку из cmOk в функцию.
В целом все универсальные вещи априори медленнее.
Чтобы упростить код можно использовать declare. 
Также вы можете управлять запросом sqlSetMacro или же вообще пересоздавая его целиком через sqlAddStr.
Код: Выделить всё
объявление запроса
 SQL QUERY SqlTmp_Nach = 
       SELECT
       ...
       From Nachisl
// пример учета прав по подразделению в ЗП
       inner join ZAR_USER ZU on (upper(ZU.OWNNAME) = upper(:sUserName))
       and  (ZU.POdrShare <> '+'
          or (Nachisl.cexoz in (Select UR.crecds from USERRIGHTS UR  where ZU.OWNNAME = UR.OWNNAME ) )
          )
       ...
       where ...
       %Filter_Nach
       %FilterP_Nach
;
Использование
    case wTypeSB of
    0: sqlSetMacro('Filter_Nach', ' and Nachisl.YearK='+String(wYear)
                     +' and Nachisl.Mes>=' +string(wMesB)
                     +' and Nachisl.Mes<=' +string(wMesE)
                );
    1: sqlSetMacro('Filter_Nach', ' and Nachisl.YearV='+String(wYear)
                     +' and Nachisl.MesV>=' +string(wMesB)
                     +' and Nachisl.MesV<=' +string(wMesE)
                );
    end;
    var hStrFilter:longint=0;
    if IsBitCTW(wFilter,1)
    { sqlAddStr(hStrFilter,iQBuilder.MakeCriteriaFromMarker(' and Nachisl.cexoz ',DepList));
    }
    if (hStrFilter<>0)
    { SqlsetMacro('FilterP_Nach',hStrFilter);
      sqlFreeStr(hStrFilter);
    }
    else
    { SqlsetMacro('FilterP_Nach','');
    }
    stmt := sqlAllocStmt;
    ExecuteErrorCode:=sqlPrepare(stmt,SqlTmp_Nach);
    if ExecuteErrorCode=0
    { sqlBindParamByName(stmt,'sUserName', sUserName);
      ExecuteErrorCode:=SqlExecute(stmt);
      if ExecuteErrorCode=0
      { ExecuteErrorCode:=SqlFetchInto(stmt,#Tmp_Report);
      }
    } // ExecuteError