Обсуждение:Формирование отчета по Excel-скому шаблону (Другой вариант) доработан

0 (0)
  • Развернуть Обсуждение:Формирование отчета по Excel-скому шаблону (Другой вариант) доработан ( Обсуждение примера  29.07.2005 15:13 )
    0(0)
    1.Мысль
    Создаем EXCEL-ский шаблон в ячейке А1 первого листа которого
    находятся инструкции по наполнению этого шаблона смыслом:

    LIST(2); DN(E3); DK(F3); IN(C,20,40,D); OUT(C,20,39,E); PROTOCOL(3); OUT(C,40,40,E); PROTOCOL(0); NEXT(1,A2);

    Затем выполняем макрос RepXLS.mac, который читает эти инструкции
    и пытается их выполнить...
    В данном примере будет выполнено следующее:
    LIST(2); - Устанавливается номер листа с которым будут производится дальнейшие действия
    DN(E3); - В ячейку E3 листа 2 (установленного выше) выводится дата начала периода расчета.
    DN(F3); - В ячейку F3 листа 2 выводится дата конца периода расчета.
    IN(C,20,40,D); - Из ячейки С20 берется список счетов и по ним находятся остатки на начало периода. результат заносится в ячейку D20. Затем тоже самое проделывается с ячейками С21->D21, C22->D22,... C40->D40.

    OUT(C,20,39,E); - тоже самое но только выбираются остатки на конец периода.
    PROTOCOL(3); - Включает вывод протокола. Есть три уровня протокола:
    1 -вывод формул
    2 -вывод формул и итогов по БС
    3 -вывод формул и итогов по БС и ЛС
    OUT(C,40,40,E); - надеюсь понятно.
    PROTOCOL(0); - Отключает вывод протокола.
    NEXT(1,A2); - Выбирает инструкции расчета из ячейки А2 первого листа и продолжает их выполнение. Кстати эта инструкция может стоять в любом месте в списке инструкций. Выполнение этой инструкции не означает что следующие за ней инструкции не выполняются.


    Примеры заполнения ячейки со списком БС и ЛС:
    '3
    '301
    '30110
    '455П
    '42302...42307,40701...40709
    '401...445А,455,-45515,-422А, 20202,-20202810100000000023
    Начинать заполнение ячейки лучше с одиночной кавычки чтобы она всегда воспринималась экзелем как строка

    2.Настройка

    катаог MAC с подкаталогами скопировать в МАС RSBank-а.
    Шублоны - Положить на общедоступный диск.
    В файле MAC\OWNER\REPORT\RepXLS.mac настроить путь на шаблоны
    PRIVATE VAR PathTempl="L:\\Шаблоны\\";


    3.Запуск
    Для ленивых MAC\main.mac
    для остальных MAC\OWNER\REPORT\RepXLS.mac


    Посмотреть пример
    >> Ответить
    • Развернуть ОБНОВЛЕНИЕ ( Uvarov  12.08.2005 10:22 )
      0(0)
      12.08.2005 г.
      Добавленны функции:
         DEBET(cтолбец1,строка1,строка2,столбец2)  - Дебетовые обороты по счетам
         KREDIT(cтолбец1,строка1,строка2,столбец2) - Кредитовые обороты по счетам
         DEBET2(cтолбец1,строка1,строка2,столбец2,столбец3)  - Дебетовые обороты по счетам
         KREDIT2(cтолбец1,строка1,строка2,столбец2,столбец3) - Кредитовые обороты по счетам
                      столбец1 - указывает столбец в котором находятся ячейки
                                 со списками БС и ЛС для которых вычисляется оборот
                      строка1  - начальная строка для которой выполняется вычисление
                      строка2  - конечная строка для которой выполняется вычисление
                      столбец2 - указывает столбец в который заносятся результы вычисления
                      столбец3 - указывает столбец в котором находятся ячейки
                                 со списками БС и ЛС в корреспонденции с которыми вычисляются обороты
      
           DEBET3(cтолбец1,строка1,строка2,столбец2,столбец3)  - Дебетовые обороты по счетам
           KREDIT3(cтолбец1,строка1,строка2,столбец2,столбец3) - Кредитовые обороты по счетам
                   столбец1 - указывает столбец в котором находятся ячейки
                              со списками БС и ЛС для которых вычисляется оборот
                   строка1  - начальная строка для которой выполняется вычисление
                   строка2  - конечная строка для которой выполняется вычисление
                   столбец2 - указывает столбец в который заносятся результы вычисления
                   столбец3 - указывает столбец в котором находятся ячейки
                              со списками БС и ЛС за исключением корреспонденции
                              с которыми вычисляется обороты
      
      
        ТЕПЕРЬ МОЖНО ФИЛЬТРОВТЬ СЧЕТА ПО ЗНАЧЕНИЯМ ДРУГИХ ПОЛЕЙ ТАБЛИЦ
        account.dbt( obacnt.dbt) client.dbt и pcacc.dbt
        ИСПОЛЬЗУЯ ФИЛЬТРЫ НА СЧЕТА:
          FLT_CLR() - Очистить фильтры
          FLT_OR()  - Добавить следующую группу фильтров по условию ИЛИ
          FLT(not,table,field,from,to) - Добавить фильтр по диапазону
          FLT_SUB(not,table,field,str,sensetive) - Добавить фильтр по подстроке
                 not       - Отрицание условия (T/F)
                 table     - имя таблицы (пока доступны: account,client,pcacc)
                 field     - имя поля в таблице
                 from, to  - диапазон значений
                 str       - искомая подстрока
                 sensetive - чувствительность к регистру (T/F)
      
           Если запись в соответствующей таблице для указанного счета или поле
           не найдено то условие считается не выполненым 
           ПРИМЕР ФИЛЬТРА:
           FLT(T,client,UserType,A,C); FLT(F,client,client,1,1000); FLTOR(); FLT_SUB(F,pcacc,usertype,В,T)
          Означает:
          (
             (NOT ((Client.UserType>="A") AND (Client.UserType<="C")) ) AND 
             ((Client.Client>=1) AND (Client.Client<=1000))
          ) OR
          (
            (index(strupr(pcacc.UserType),strupr("В"))>0)
          )
      
      

      >> Ответить