16 октября, вторник 18:11
Bankir.Ru

Объявление

Свернуть
Пока нет объявлений.

Отчет в трезхвенке

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Отчет в трезхвенке

    Господа, может сталкивался кто вот с какой проблемой
    есть некие отчеты, которые выводятся в Excell и Word, в двухзвенке все отрабаьвывает нормально, а вот в трехвенке возникает ошибка: "Создание объекта TRsAxServer".
    Best regards,
    Кузьминов Денис Владимирович

  • #2
    KuzmichD
    Могу посоветовать использовать lgxs.d32 от Григория Лупова (григ) Никаких проблем

    Комментарий


    • #3
      Где эта библиотека должэна лежать, макрос то Р-стуловский, и чято он там вызывает, ождному богу известно, все практически под С++
      Best regards,
      Кузьминов Денис Владимирович

      Комментарий


      • #4
        Приветствую Денис.
        Может укажите что там макрос импортирует? Или весь макрос в студию!
        С уважением,
        Шарак Андрей

        Комментарий


        • #5
          Начал разбиратьбся, ну просто .....
          Код:
          1. import rvps;
          2. макрос rvps:
          /*------------------------------------------------------------------------------
                               Библиотека интерпретируемых модулей
          
           Filename    : Rvps.mac
           Description : Расчет резерва на возможные потери по ссудам
          
           Programmer  :
           27.04.01    : Создан
          
           16.11.01, US:
           1. Исключена их макроса функция получения курса валюты, константы, файлы,
              связанные с валютами. Используется функция из totalovc.mac
           2. Льготость кредит определяется теперь по флагу в кред.договоре.
           3. Разделены группы "Льготные кредиты" и "Кредиты инсайдерам"
              Если кредит выдан инсайдеру, и он льготный, по такой договор попадает
              в раздел инсайдеров.
           4. Добавлена константа ОВЕРДРАФТ - признак обработки овердрафтных карт.
          
          ------------------------------------------------------------------------------*/
          
          IMPORT BankInter, SbCrdInter, Календарь, activex, "totalovc.mac","rvps_f.mac", global;
          
          FILE Credit      ("credit_c.dbt", "loans.def")  key 1;
          FILE DocCRD      ("doc_acc.dbt",  "loans.def")  key 8;
          FILE Документы   ("doc_acc.dbt",  "loans.def")  key 4;
          
          FILE DocOVC      ("doc_acc.dbt",  "loans.def")  key 8;
          FILE ОперацииOVC ("crd_op.dbt",   "loans.def")  key 0;
          
          record PayOv     ("PAYOV.", "loans.def");
          FILE Филиалы ("set_lfd.tmp", "loans.def"); /* временный файл филиалов */
          
          VAR ClientCRD = TLoansClient;
          VAR ClientOVC = TLoansClient;
          
          CONST
              КолвоДнейДляПрогноза  = 3, /* Для приложения 5*/
              RUR     = 0,
              USD     = 1,
              Отчет   = 0,
              Прогноз = 1,
              OVC_CRD = 1,
              OVC_EXP = 2,
              CBF_CRD = 3,
              CBF_EXP = 4,
              RegPath = "RS-LOANS\\ШАБЛОНЫ_EXCEL",
              NameLFD  = GetRegVal( "RS-RETAIL\\INI\\ДИРЕКТОРИИ\\WORKDIR", true ) + "set_lfd." + UserNumber; /* установленные филиалы */
          
          VAR
              ОВЕРДРАФТ = FALSE, /* Обрабатывать ли карты из подсистемы "Овердрафтное кредитование"*/
              Валюта         : integer = 0,
              Режим          : integer = 0,
              Path           : String = "",
              DateReport     : Date = {curdate},
              DatePrevReport : Date,
              DatePrognoz : Date,
              ErrCode = 0,
              Type = V_STRING,
          
              flagcur = NumFlagCur (),   /*признак валютности*/
              CurrencyReport     : Integer,
              ISO_CurrencyReport : String,
              NameCurrencyReport : String,
          
              OVCВосстСОтнесением      : String = AccountRez1,
              OVCВосстБезОтнесения     : String = AccountRez2,
              OVCОтчисленияОтносимые   : String = AccountRez3,
              OVCОтчисленияНеОтносимые : String = AccountRez4,
              CRDВосстСОтнесением      : String = AccountRez1,
              CRDВосстБезОтнесения     : String = AccountRez2,
              CRDОтчисленияОтносимые   : String = AccountRez3,
              CRDОтчисленияНеОтносимые : String = AccountRez4,
          
              CurCRD : integer = 0,  /* Номер кредитного договора */
              CurOVC : integer = 0,  /* Номер текущей карты */
          
              Rep   : Object,
              Sheet : Object,
          
              КурсUSDНаДатуОтчета,
              КурсUSDНаДатуПредОтчета,
              КурсUSDНаДатуПрогноза,
          
              AmountInsider     : INTEGER = 0, /* Количество вставленных записей в отчете */
              AmountCredit      : INTEGER = 0,
              AmountPrivileg    : INTEGER = 0,
              AmountExpired     : INTEGER = 0,
              AmountEXPInsider  : INTEGER = 0,
              AmountEXPPrivileg : INTEGER = 0,
              AmountPril5OrgPlus : INTEGER = 0,
              AmountPril5OrgMinus : INTEGER = 0,
              AmountPril5PersonPlus : INTEGER = 0,
              AmountPril5PersonMinus : INTEGER = 0;
          
          
          IF (ОВЕРДРАФТ)
            Open (OvKarta);
            Open (DocOVC);
            /*Open (ClientOVC);*/
            Open (ОперацииOVC);
          END;
          
          macro CheckDepart(FNCash)
              Филиалы.FNCash = FNCash;
              if (GetEQ(Филиалы))
                if (Филиалы.SetFlag == "X")
                   return true;
                end;
              end;
              return false;
          end;
          
          
          MACRO Льготность_OVC ()
            if (index(OvKarta.UserField1,"Льготный") != 0)
               return TRUE;
            else
               return FALSE;
            end;
          END;
          
          MACRO Льготность_CRD ()
            if (Credit.PrivilegeFlag == "X")
               return TRUE;
            else
               return FALSE;
            end;
          END;
          
          MACRO ФИО_OVC (ClientID)
            ClientOVC.CodClient = ClientID;
            if (ClientOVC.GetRecord(ClientID))
              return  ClientOVC.ConvertFIO();
            else
              return "";
            end;
          END;
          
          macro ФИО_CRD (Client, Kind)
             return FindClient (Client);
          end;
          
          
          MACRO CheckSystAcc(FNCash)
            FILE AcCrd("acc_crd.dbt", "loans.def") key 1;
          
            /*Проверка наличия системных счетов по "Кредитному бухгалтеру" */
            AcCrd.Applic = 0;
            AcCrd.ObjectID = LO_DEPARTMENT;
            AcCrd.ObjectNumber = FNCash;
            AcCrd.CurCode = 0;
            AcCrd.CreditAccountType = 78;
            if (not getEQ(AcCrd)) exit( 0, "Не найден системный счет (кред.бухгалтер) /Восст. сумм отнесенных/ для филиала " + FNCash); end;
            CRDВосстСОтнесением = AcCrd.AccountNumber_Ref;
            AcCrd.Applic = 0;
            AcCrd.ObjectID = LO_DEPARTMENT;
            AcCrd.ObjectNumber = FNCash;
            AcCrd.CurCode = 0;
            AcCrd.CreditAccountType = 79;
            if (not getEQ(AcCrd)) exit( 0, "Не найден системный счет (кред.бухгалтер) /Восст. сумм без отнесен/ для филиала " + FNCash); end;
            CRDВосстБезОтнесения = AcCrd.AccountNumber_Ref;
            AcCrd.Applic = 0;
            AcCrd.ObjectID = LO_DEPARTMENT;
            AcCrd.ObjectNumber = FNCash;
            AcCrd.CurCode = 0;
            AcCrd.CreditAccountType = 81;
            if (not getEQ(AcCrd)) exit( 0, "Не найден системный счет (кред.бухгалтер) /Отчисления не относимые/ для филиала " + FNCash); end;
            CRDОтчисленияНеОтносимые = AcCrd.AccountNumber_Ref;
            AcCrd.Applic = 0;
            AcCrd.ObjectID = LO_DEPARTMENT;
            AcCrd.ObjectNumber = FNCash;
            AcCrd.CurCode = 0;
            AcCrd.CreditAccountType = 80;
            if (not getEQ(AcCrd)) exit( 0, "Не найден системный счет (кред.бухгалтер) /Отчисления относимые/ для филиала " + FNCash); end;
            CRDОтчисленияОтносимые = AcCrd.AccountNumber_Ref;
          
            IF (ОВЕРДРАФТ)
              /*Проверка наличия системных счетов по "Овердрафту" */
              AcCrd.Applic = 1;
              AcCrd.ObjectID = LO_DEPARTMENT;
              AcCrd.ObjectNumber = FNCash;
              AcCrd.CurCode = 0;
              AcCrd.CreditAccountType = 19;
              if (not getEQ(AcCrd)) exit( 0, "Не найден системный счет (овердрафт) /Восст. сумм отнесенных/ для филиала " + FNCash); end;
              OVCВосстСОтнесением = AcCrd.AccountNumber_Ref;
              AcCrd.Applic = 1;
              AcCrd.ObjectID = LO_DEPARTMENT;
              AcCrd.ObjectNumber = FNCash;
              AcCrd.CurCode = 0;
              AcCrd.CreditAccountType = 20;
              if (not getEQ(AcCrd)) exit( 0, "Не найден системный счет (овердрафт) /Восст. сумм без отнесен/ для филиала " + FNCash); end;
              OVCВосстБезОтнесения = AcCrd.AccountNumber_Ref;
              AcCrd.Applic = 1;
              AcCrd.ObjectID = LO_DEPARTMENT;
              AcCrd.ObjectNumber = FNCash;
              AcCrd.CurCode = 0;
              AcCrd.CreditAccountType = 22;
              if (not getEQ(AcCrd)) exit( 0, "Не найден системный счет (овердрафт) /Отчисления не относимые/ для филиала " + FNCash); end;
              OVCОтчисленияНеОтносимые = AcCrd.AccountNumber_Ref;
              AcCrd.Applic = 1;
              AcCrd.ObjectID = LO_DEPARTMENT;
              AcCrd.ObjectNumber = FNCash;
              AcCrd.CurCode = 0;
              AcCrd.CreditAccountType = 21;
              if (not getEQ(AcCrd)) exit( 0, "Не найден системный счет (овердрафт) /Отчисления относимые/ для филиала " + FNCash); end;
              OVCОтчисленияОтносимые = AcCrd.AccountNumber_Ref;
            END;
          END;
          
          
          
          MACRO ReadBeginParm ()
            ARRAY
                  ListCurrency,     /* Список кодов валют                  */
                  ListCurrencyMenu, /* Список строк меню для выбора валюты */
                  ListNameCurrency, /* Список названий валюты              */
                  CodeName;         /* Список ISO кодов                    */
            VAR Number : Integer = 0, depSelect = false;
          
            IF(GetDate(DateReport, "Введите дату отчета") == FALSE)
              RETURN FALSE;
            END;
            DatePrevReport = DateReport - 30;
            IF(GetDate(DatePrevReport, "Введите дату предыдущего отчета") == FALSE)
              RETURN FALSE;
            END;
            DatePrognoz = DateReport - КолвоДнейДляПрогноза;
          
          
            /* US 17.11.01, Определяем курсы валют */
            КурсUSDНаДатуОтчета = GetCurrRate(DateReport,1);
            КурсUSDНаДатуПредОтчета = GetCurrRate(DatePrevReport,1);
            КурсUSDНаДатуПрогноза = GetCurrRate(DatePrognoz,1);
            depSelect = false;
            while (not depSelect)
               if (УстановитьФилиалы() == false)
                  return;
               else
                  if (NOT Open (Филиалы, NameLFD))
                    Exit (0, "Не открыт временный файл " + NameLFD);
                  end;
                  rewind(Филиалы);
                  while(next(Филиалы) and (not depSelect))
                     if (Филиалы.SetFlag == "X")
                        depSelect = true;
                     end;
                  end;
                  if (not depSelect)
                     MsgBox("Не выбрано ни одно подразделение!");
                     Close (Филиалы);
                  end;
               end;
            end;
          
            IF(GetRegistryValue(RegPath, Type, Path, ErrCode) == V_STRING)
              /*ПолныйПуть (Path);*/
              Path = Path + "\\RVPS.xls";
            END;
          
          
            IF (flagcur)   /*работаем в валюте*/
              ReWind(Currency);
              WHILE (Next(Currency))      /*Формируем список валют*/
                IF (Currency.Code_Currency)
                  ListCurrency(Number) = Currency.Code_Currency;
                  ListNameCurrency(Number) = Currency.Name_Currency;
                  ListCurrencyMenu(Number) = String(Currency.Code_Currency:4:r)+" "+Currency.Name_Currency;
                  CodeName(Number)=Currency.Short_Name;
                  Number = Number + 1 ;
                END;
              END;
              Number = Menu( ListCurrencyMenu, " Выберете валюту: ", " Валюта " );
              IF ( Number  0 )
                 RETURN FALSE;
              ELSE
                CurrencyReport = ListCurrency(Number);
                ISO_CurrencyReport = CodeName(Number);
                NameCurrencyReport = ListNameCurrency(Number);
              END;
            ELSE
              Currency.Code_Currency = 0;
              IF (GetEQ(Currency))   /*Рубли*/
                CurrencyReport = Currency.Code_Currency;
                ISO_CurrencyReport = Currency.ExternalCode;
                NameCurrencyReport = Currency.Name_Currency;
              ELSE
                RETURN FALSE;
              END;
            END;
            RETURN TRUE;
          END;
          
          /* Возвращает следующий кредитный договор */
          MACRO GoNextCRD ()
            IF (CurCRD == 0)
              Credit.IsCur = Валюта;
              Credit.ClientID_Ref = 0;
              Credit.CreditTypeID_Ref = 0;
              IF (GetGE(Credit) and (Credit.IsCur == Валюта))
                CurCRD = Credit.CreditNumber;
              END;
              RETURN (GetGE(Credit) and (Credit.IsCur == Валюта));
            ELSE
              RETURN (Next(Credit) and (Credit.IsCur == Валюта));
            END;
          END;
          
          /* Возвращает следующую карту */
          MACRO GoNextOVC ()
            IF (CurOVC == 0)
              OvKarta.IsCur = Валюта;
              OvKarta.ClientID_Ref = 0;
              OvKarta.CreditTypeID_Ref = 0;
              IF (GetGE(OvKarta) and (OvKarta.IsCur == Валюта))
                CurOVC = OvKarta.Karta_ID;
              END;
              RETURN (GetGE(OvKarta) and (OvKarta.IsCur == Валюта));
            ELSE
              RETURN (Next(OvKarta) and (OvKarta.IsCur == Валюта));
            END;
          END;
          
          MACRO  НапечататьСтрокуПрил5 (ТипЗадолженности, ТипЗаемщика, ФИО, ДельтаРезерв, ДельтаГР)
             var Row : string = "1";
             var Причина = ПричинаИзмененияРезерва(ТипЗадолженности, ДельтаРезерв, ДельтаГР);
          
             if ( (ТипЗаемщика == 1) and (ДельтаРезерв > 0) ) /* Юрлица, плюс */
                Row = String(Rep.ActiveWorkbook.Sheets("Приложение 5").Range("PRIL5_ORG").Offset(AmountPril5OrgPlus).Row());
                if ( (AmountPril5OrgPlus == 0 )
                         OR (AmountPril5OrgPlus  AmountPril5OrgMinus) )
                else
                  Rep.ActiveWorkbook.Sheets("Приложение 5").Rows(Int(Row)).Insert;
                end;
                AmountPril5OrgPlus= AmountPril5OrgPlus + 1;
                Rep.ActiveWorkbook.Sheets("Приложение 5").Range("D"+Row).Value = ФИО;
                Rep.ActiveWorkbook.Sheets("Приложение 5").Range("E"+Row).Value = ДельтаРезерв;
                Rep.ActiveWorkbook.Sheets("Приложение 5").Range("F"+Row).Value = Причина;
             elif ( (ТипЗаемщика == 1) and (ДельтаРезерв  0) ) /* Юрлица, минус */
                Row = String(Rep.ActiveWorkbook.Sheets("Приложение 5").Range("PRIL5_ORG").Offset(AmountPril5OrgMinus).Row());
                if ( (AmountPril5OrgMinus == 0)
                         OR ( AmountPril5OrgMinus  AmountPril5OrgPlus) )
                else
                  Rep.ActiveWorkbook.Sheets("Приложение 5").Rows(Int(Row)).Insert;
                end;
                AmountPril5OrgMinus= AmountPril5OrgMinus + 1;
                Rep.ActiveWorkbook.Sheets("Приложение 5").Range("G"+Row).Value = ФИО;
                Rep.ActiveWorkbook.Sheets("Приложение 5").Range("H"+Row).Value = ДельтаРезерв;
                Rep.ActiveWorkbook.Sheets("Приложение 5").Range("I"+Row).Value = Причина;
             elif ( (ТипЗаемщика == 2) and (ДельтаРезерв > 0) ) /* Физлица, плюс */
                Row = String(Rep.ActiveWorkbook.Sheets("Приложение 5").Range("PRIL5_PERSON").Offset(AmountPril5PersonPlus).Row());
                if ( (AmountPril5PersonPlus == 0 )
                         OR (AmountPril5PersonPlus  AmountPril5PersonMinus) )
                else
                  Rep.ActiveWorkbook.Sheets("Приложение 5").Rows(Int(Row)).Insert;
                end;
                AmountPril5PersonPlus= AmountPril5PersonPlus + 1;
                Rep.ActiveWorkbook.Sheets("Приложение 5").Range("D"+Row).Value = ФИО;
                Rep.ActiveWorkbook.Sheets("Приложение 5").Range("E"+Row).Value = ДельтаРезерв;
                Rep.ActiveWorkbook.Sheets("Приложение 5").Range("F"+Row).Value = Причина;
             elif ( (ТипЗаемщика == 2) and (ДельтаРезерв  0) ) /* Физлица, минус */
                Row = String(Rep.ActiveWorkbook.Sheets("Приложение 5").Range("PRIL5_PERSON").Offset(AmountPril5PersonMinus).Row());
                if ( (AmountPril5PersonMinus == 0 )
                         OR (AmountPril5PersonMinus  AmountPril5PersonPlus ) )
                else
                  Rep.ActiveWorkbook.Sheets("Приложение 5").Rows(Int(Row)).Insert;
                end;
                AmountPril5PersonMinus= AmountPril5PersonMinus + 1;
                Rep.ActiveWorkbook.Sheets("Приложение 5").Range("G"+Row).Value = ФИО;
                Rep.ActiveWorkbook.Sheets("Приложение 5").Range("H"+Row).Value = ДельтаРезерв;
                Rep.ActiveWorkbook.Sheets("Приложение 5").Range("I"+Row).Value = Причина;
             end;
          
          END;
          
          
          MACRO НапечататьСтроку (Раздел, Номер, ФИО, Вид, Счет, КачествоОбеспечения,
             ПереоформленияСИзменением, ПереоформленияБезИзменения, ДатаПогашения,
             КолвоПросрочДнейПоОД, ДатаВынесенияПроцентов, КолвоПросрочДнейПоПроцентам,
             СсудаПредДатаВал, СсудаПредДатаРуб, СсудаОтчетДатаВал, СсудаОтчетДатаРуб,
             ГруппаПредДата, ГруппаОтчетДата, НормативПредДата, НормативОтчетДата,
             РезПредДатаФакт, РезОтчетДатаФакт,
             ДоначисленияОтносимые, ДоначисленияНеотносимые,
             СписаниеОтносимые, СписанияНеотносимые,
             СсудаПрогнозДатаРуб, НормативПрогнозДата, РезПрогнозДатаФакт, ТипЗаемщика)
          
             var Row : string = "1",
                 RowNumber : integer = 0 ; /* Номер строки */
          
             if (Раздел == CUR_CRED_INSIDER) /* кредиты инсайдерам */
               if (AmountInsider == 0)
                 Row = String(Sheet.Range("CUR_CRED_INSIDER").Row());
               else
                 Row = String(Sheet.Range("CUR_CRED_INSIDER").Offset(AmountInsider).Row());
                 Sheet.Rows(Int(Row)).Insert;
               end;
               AmountInsider = AmountInsider + 1;
               RowNumber  = AmountInsider;
             end;
             if (Раздел == CUR_CRED_PRIVILEG) /* льготные кредиты в валюте */
               if (AmountPrivileg == 0)
                 Row = String(Sheet.Range("CUR_CRED_PRIVILEG").Row());
               else
                 Row = String(Sheet.Range("CUR_CRED_PRIVILEG").Offset(AmountPrivileg).Row());
                 Sheet.Rows(Int(Row)).Insert;
               end;
               AmountPrivileg = AmountPrivileg + 1;
               RowNumber  = AmountPrivileg;
             end;
          
             if (Раздел == RUB_CRED_INSIDER) /* кредиты инсайдерам */
               if (AmountInsider == 0)
                 Row = String(Sheet.Range("RUB_CRED_INSIDER").Row());
               else
                 Row = String(Sheet.Range("RUB_CRED_INSIDER").Offset(AmountInsider).Row());
                 Sheet.Rows(Int(Row)).Insert;
               end;
               AmountInsider = AmountInsider + 1;
               RowNumber  = AmountInsider;
             end;
             if (Раздел == RUB_CRED_PRIVILEG) /* льготные кредиты в рублях */
               if (AmountPrivileg == 0)
                 Row = String(Sheet.Range("RUB_CRED_PRIVILEG").Row());
               else
                 Row = String(Sheet.Range("RUB_CRED_PRIVILEG").Offset(AmountPrivileg).Row());
                 Sheet.Rows(Int(Row)).Insert;
               end;
               AmountPrivileg = AmountPrivileg + 1;
               RowNumber  = AmountPrivileg;
             end;
          
             if (Раздел == CUR_CRED) /* основная задолженность */
               if (AmountCredit == 0)
                 Row = String(Sheet.Range("CUR_CRED").Row());
               else
                 Row = String(Sheet.Range("CUR_CRED").Offset(AmountCredit).Row());
                 Sheet.Rows(int(Row)).Insert;
               end;
               AmountCredit = AmountCredit + 1;
               RowNumber = AmountCredit;
             end;
             if (Раздел == RUB_CRED) /* основная задолженность */
               if (AmountCredit == 0)
                 Row = String(Sheet.Range("RUB_CRED").Row());
               else
                 Row = String(Sheet.Range("RUB_CRED").Offset(AmountCredit).Row());
                 Sheet.Rows(Int(Row)).Insert;
               end;
               AmountCredit = AmountCredit + 1;
               RowNumber = AmountCredit;
             end;
          
          
             if (Раздел == CUR_EXP) /* просроченная задолженность */
               if (AmountExpired == 0)
                 Row = String(Sheet.Range("CUR_EXP").Row());
               else
                 Row = String(Sheet.Range("CUR_EXP").Offset(AmountExpired).Row());
                 Sheet.Rows(Int(Row)).Insert;
               end;
               AmountExpired = AmountExpired + 1;
               RowNumber = AmountExpired;
             end;
             if (Раздел == RUB_EXP) /* просроченная задолженность */
               if (AmountExpired == 0)
                 Row = String(Sheet.Range("RUB_EXP").Row());
               else
                 Row = String(Sheet.Range("RUB_EXP").Offset(AmountExpired).Row());
                 Sheet.Rows(Int(Row)).Insert;
               end;
               AmountExpired = AmountExpired + 1;
               RowNumber = AmountExpired;
             end;
          
             if (Раздел == CUR_EXP_INSIDER) /* кредиты инсайдерам */
               if (AmountEXPInsider == 0)
                 Row = String(Sheet.Range("CUR_EXP_INSIDER").Row());
               else
                 Row = String(Sheet.Range("CUR_EXP_INSIDER").Offset(AmountEXPInsider).Row());
                 Sheet.Rows(Int(Row)).Insert;
               end;
               AmountEXPInsider = AmountEXPInsider + 1;
               RowNumber  = AmountEXPInsider;
             end;
          
             if (Раздел == CUR_EXP_PRIVILEG) /* просроченн. зад-то по льготным кредитам в валюте */
               if (AmountExpPrivileg == 0)
                 Row = String(Sheet.Range("CUR_EXP_PRIVILEG").Row());
               else
                 Row = String(Sheet.Range("CUR_EXP_PRIVILEG").Offset(AmountExpPrivileg).Row());
                 Sheet.Rows(Int(Row)).Insert;
               end;
               AmountExpPrivileg = AmountExpPrivileg + 1;
               RowNumber  = AmountExpPrivileg;
             end;
          
             if (Раздел == RUB_EXP_INSIDER) /* кредиты инсайдерам */
               if (AmountEXPInsider == 0)
                 Row = String(Sheet.Range("RUB_EXP_INSIDER").Row());
               else
                 Row = String(Sheet.Range("RUB_EXP_INSIDER").Offset(AmountEXPInsider).Row());
                 Sheet.Rows(Int(Row)).Insert;
               end;
               AmountEXPInsider = AmountEXPInsider + 1;
               RowNumber  = AmountEXPInsider;
             end;
          
             if (Раздел == RUB_EXP_PRIVILEG) /* просроченн. зад-то по льготным кредитам в рублях */
               if (AmountExpPrivileg == 0)
                 Row = String(Sheet.Range("RUB_EXP_PRIVILEG").Row());
               else
                 Row = String(Sheet.Range("RUB_EXP_PRIVILEG").Offset(AmountExpPrivileg).Row());
                 Sheet.Rows(Int(Row)).Insert;
               end;
               AmountExpPrivileg = AmountExpPrivileg + 1;
               RowNumber  = AmountExpPrivileg;
             end;
          
             Sheet.Range("A"+Row).Value = RowNumber;           /* Пока еще несквозная нумерация */
             Sheet.Range("B"+Row).Value = Номер;
             Sheet.Range("C"+Row).Value = ФИО;
             Sheet.Range("D"+Row).Value = String(Вид);         /* Вид обязательства */
             Sheet.Range("E"+Row).Value = String(Счет);    /* Ссудный счет */
             Sheet.Range("F"+Row).Value = КачествоОбеспеченияВОтчете(String(КачествоОбеспечения));
             Sheet.Range("G"+Row).Value = ПереоформленияСИзменением;
             Sheet.Range("H"+Row).Value = ПереоформленияБезИзменения;
             Sheet.Range("I"+Row).Value = ДатаПогашения;
             Sheet.Range("J"+Row).Value = КолвоПросрочДнейПоОД;
             Sheet.Range("K"+Row).Value = ДатаВынесенияПроцентов;
             Sheet.Range("L"+Row).Value = КолвоПросрочДнейПоПроцентам;
             Sheet.Range("M"+Row).Value = double(СсудаПредДатаВал)/100;
             Sheet.Range("N"+Row).Value = double(СсудаОтчетДатаВал)/100;
          
             IF (Валюта == USD)
               Sheet.Range("O"+Row).Value = double(СсудаПредДатаРуб)/100;
               Sheet.Range("P"+Row).Value = double(СсудаОтчетДатаРуб)/100;
               Sheet.Range("Q"+Row).Value = ГруппаПредДата;
               Sheet.Range("R"+Row).Value = ГруппаОтчетДата;
               Sheet.Range("S"+Row).Value = НормативПредДата;
               Sheet.Range("T"+Row).Value = НормативОтчетДата;
               Sheet.Range("U"+Row).Value = double(РезПредДатаФакт)/100;
               Sheet.Range("V"+Row).Value = double(РезОтчетДатаФакт)/100;
               Sheet.Range("W"+Row).Value = double(ДоначисленияОтносимые)/100;
               Sheet.Range("X"+Row).Value = double(ДоначисленияНеотносимые)/100;
               Sheet.Range("Y"+Row).Value = 0 - double(СписаниеОтносимые)/100;
               Sheet.Range("Z"+Row).Value = 0 - double(СписанияНеотносимые)/100;
               Sheet.Range("AA"+Row).Value = double(СсудаПрогнозДатаРуб)/100;
               Sheet.Range("AB"+Row).Value = НормативПрогнозДата;
               Sheet.Range("AC"+Row).Value = double(РезПрогнозДатаФакт)/100;
               Sheet.Range("AD"+Row).Value = ТипЗаемщика;
             ELSE
               Sheet.Range("O"+Row).Value = double(СсудаПредДатаРуб)/100;
               Sheet.Range("P"+Row).Value = double(СсудаОтчетДатаРуб)/100;
               Sheet.Range("O"+Row).Value = ГруппаПредДата;
               Sheet.Range("P"+Row).Value = ГруппаОтчетДата;
               Sheet.Range("Q"+Row).Value = НормативПредДата;
               Sheet.Range("R"+Row).Value = НормативОтчетДата;
               Sheet.Range("S"+Row).Value = double(РезПредДатаФакт)/100;
               Sheet.Range("T"+Row).Value = double(РезОтчетДатаФакт)/100;
               Sheet.Range("U"+Row).Value = double(ДоначисленияОтносимые)/100;
               Sheet.Range("V"+Row).Value = double(ДоначисленияНеотносимые)/100;
               Sheet.Range("W"+Row).Value = 0 - double(СписаниеОтносимые)/100;
               Sheet.Range("X"+Row).Value = 0 - double(СписанияНеотносимые)/100;
               Sheet.Range("Y"+Row).Value = double(СсудаПрогнозДатаРуб)/100;
               Sheet.Range("Z"+Row).Value = НормативПрогнозДата;
               Sheet.Range("AA"+Row).Value = double(РезПрогнозДатаФакт)/100;
               Sheet.Range("AB"+Row).Value = ТипЗаемщика;
             END;
          END;
          
          
          MACRO ДобавитьСтроку (Тип)
            VAR
                Раздел                      : integer,
                Номер                       : integer,
                ФИО                         : string,
                Вид                         : string,
                Счет                        : string,
                КачОбеспПредДата            : string,
                КачОбеспОтчетДата           : string,
                ПереоформленияСИзменением   : integer,
                ПереоформленияБезИзменения  : integer,
                ДатаПогашения               : date,
                КолвоПросрочДнейПоОД        : integer,
                ДатаВынесенияПроцентов      : date,
                КолвоПросрочДнейПоПроцентам : integer,
                СсудаПредДатаВал            : moneyl,
                СсудаПредДатаРуб            : moneyl,
                СсудаОтчетДатаВал           : moneyl,
                СсудаОтчетДатаРуб           : moneyl,
                ГруппаПредДата              : integer,
                ГруппаОтчетДата             : integer,
                НормативПредДата            : integer,
                НормативОтчетДата           : integer,
                РезПредДатаФакт             : moneyl,
                РезОтчетДатаФакт            : moneyl,
                ДоначисленияОтносимые       : moneyl,
                ДоначисленияНеотносимые     : moneyl,
                СписаниеОтносимые           : moneyl,
                СписанияНеотносимые         : moneyl,
          
                СсудаПрогнозДатаВал         : moneyl,
                СсудаПрогнозДатаРуб         : moneyl,
                ГруппаПрогнозДата           : integer,
                НормативПрогнозДата         : integer,
                РезПрогнозДатаФакт          : moneyl,
                ТипЗаемщика                 : integer = 2, /* Физ. лицо */
                AppNumber : integer = 0,
                CRDNumber : integer = 0,
                D_Var, WWW, CountVar, Acc_OVC;
          
            /* Раздел в отчете */
            IF (Валюта == USD)
               IF (Тип == OVC_CRD)
                  IF (IsInsider(OvKarta.ClientID_Ref))
                    Раздел = CUR_CRED_INSIDER;
                  ELIF (Льготность_OVC())
                    Раздел = CUR_CRED_PRIVILEG;
                  ELSE
                    Раздел = CUR_CRED;
                  END;
               END; /* В раздел №2 "Основная задолженность" */
               IF (Тип == OVC_EXP)
                  IF ( IsInsider(OvKarta.ClientID_Ref) )
                    Раздел = CUR_EXP_INSIDER;
                  ELIF (Льготность_OVC())
                    Раздел = CUR_EXP_PRIVILEG;
                  ELSE
                    Раздел = CUR_EXP;
                  END;
               END;
               IF (Тип == CBF_CRD)
                  IF (IsInsider(Credit.ClientID_Ref))
                    Раздел = CUR_CRED_INSIDER;
                  ELIF (Льготность_CRD())
                    Раздел = CUR_CRED_PRIVILEG;
                  ELSE
                    Раздел = CUR_CRED;
                  END;
               END; /* В раздел №2 "Основная задолженность" */
               IF (Тип == CBF_EXP)
                  IF (IsInsider(Credit.ClientID_Ref))
                    Раздел = CUR_EXP_INSIDER;
                  ELIF (Льготность_CRD())
                    Раздел = CUR_EXP_PRIVILEG;
                  ELSE
                    Раздел = CUR_EXP;
                  END;
               END;
            END;
            IF (Валюта == RUR)
               IF (Тип == OVC_CRD)
                  IF ( IsInsider(OvKarta.ClientID_Ref) )
                    Раздел = RUB_CRED_INSIDER;
                  ELIF (Льготность_OVC())
                    Раздел = RUB_CRED_PRIVILEG;
                  ELSE
                    Раздел = RUB_CRED;
                  END;
               END; /* В раздел №2 "Основная задолженность" */
               IF (Тип == OVC_EXP)
                  IF ( IsInsider(OvKarta.ClientID_Ref) )
                    Раздел = RUB_EXP_INSIDER;
                  ELIF (Льготность_OVC())
                    Раздел = RUB_EXP_PRIVILEG;
                  ELSE
                    Раздел = RUB_EXP;
                  END;
               END; /* В раздел №3 "Просроченная задолженность" */
               IF (Тип == CBF_CRD)
                  IF ( IsInsider(Credit.ClientID_Ref) )
                    Раздел = RUB_CRED_INSIDER;
                  ELIF (Льготность_CRD())
                    Раздел = RUB_CRED_PRIVILEG;
                  ELSE
                    Раздел = RUB_CRED;
                  END;
               END; /* В раздел №2 "Основная задолженность" */
               IF (Тип == CBF_EXP)
                  IF ( IsInsider(Credit.ClientID_Ref) )
                    Раздел = RUB_EXP_INSIDER;
                  ELIF (Льготность_CRD())
                    Раздел = RUB_EXP_PRIVILEG;
                  ELSE
                    Раздел = RUB_EXP;
                  END;
               END; /* В раздел №3 "Просроченная задолженность" */
            END;
          
            IF ((Тип == OVC_CRD) or (Тип == OVC_EXP))
              Номер = OvKarta.Karta_ID;
              ФИО = ФИО_OVC(OvKarta.ClientID_Ref);
            END;
            IF ((Тип == CBF_CRD) or (Тип == CBF_EXP))
          
              ФИО = ФИО_CRD(Credit.ClientID_Ref);
              if (DepClnt.LegalForm != 2)
                 ТипЗаемщика = 1;
              end;
              Номер = Credit.CreditNumber;
            END;
          
          
            /* Вид задолженности */
            IF (Тип == OVC_CRD)  Вид = "овердрафт";   END;
            IF (Тип == OVC_EXP)  Вид = "проср.ов-фт"; END;
            IF (Тип == CBF_CRD)  Вид = "ссуда";       END;
            IF (Тип == CBF_EXP)  Вид = "проср.ссуда"; END;
          
          
            /* Ссудный счет */
            IF (Тип == OVC_CRD)
              IF (OvKarta.PayType == OV_YES)
                IF (GetAccount(OV_OVCRD_YES, OvKarta.Karta_ID, OvKarta.CurCode))
                   Счет = AcCrd.AccountNumber_Ref;
                END;
              ELSE
                IF (GetAccount(OV_OVCRD_NO, OvKarta.Karta_ID, OvKarta.CurCode))
                   Счет = AcCrd.AccountNumber_Ref;
                END;
              END;
            END;
            IF (Тип == OVC_EXP)
              IF (GetAccount(OV_EXPCRD, OvKarta.Karta_ID, OvKarta.CurCode))
                 Счет = AcCrd.AccountNumber_Ref;
              END;
            END;
            IF (Тип == CBF_CRD)
               Счет = AccNumberCrd(Credit.CreditNumber,CRD_ACC,DateReport,Credit.CurCode);
            END;
            IF (Тип == CBF_EXP)
               Счет = GetAccountReserve(EXPCRD,Credit.CreditNumber,Credit.CurCode,DateReport);
            END;
          
            /* Качество обеспечения */
            IF ((Тип == OVC_CRD) or (Тип == OVC_EXP))
              КачОбеспПредДата = КачествоОбеспечения(OvKarta.Karta_ID, DatePrevReport);
              КачОбеспОтчетДата = КачествоОбеспечения(OvKarta.Karta_ID, DateReport);
            END;
            IF ((Тип == CBF_CRD) or (Тип == CBF_EXP))
              КачОбеспПредДата = КачествоОбеспеченияПоДоговору(Credit.CreditNumber, DatePrevReport);
              КачОбеспОтчетДата = КачествоОбеспеченияПоДоговору(Credit.CreditNumber, DateReport);
            END;
          
            IF ((Тип == OVC_CRD) or (Тип == OVC_EXP))
              ПереоформленияСИзменением = 0;
              ПереоформленияБезИзменения = 0;
            END;
            IF ((Тип == CBF_CRD) or (Тип == CBF_EXP))
              КоличествоПереоформлений (Credit.CreditNumber, DateReport, ПереоформленияСИзменением, ПереоформленияБезИзменения);
            END;
          
            /* Дата погашения для кредитов */
          
            macro ПоискОперВыносПроср (DateOper, TypeOper, TypeExp)
          /* TypeOper - тип операции "вынос на просрочку"
             TypeExp:  1 - вынос на просрочку ОД, 2 - вынос на просрочку процентов */
          
             var SearchBK;
          
                Документы.Applic = 0;
                Документы.IsDeleted = 0;
                Документы.CreditNumber_Ref = Credit.CreditNumber;
                Документы.OperTypeNumber_Ref = TypeOper;
                SearchBK = getGE(Документы);
                while(SearchBK and
                  (Документы.Applic == 0) AND
                  (Документы.IsDeleted == 0) AND
                  (Документы.CreditNumber_Ref == Credit.CreditNumber) AND
                  (Документы.OperTypeNumber_Ref == TypeOper))
                  if( Документы.RegDate == DateOper )
                    if(((TypeExp == 1) AND (Substr(Документы.Debit, 1, 5) == "45815")) OR
                       ((TypeExp == 2) AND
                       ((Substr(Документы.Debit, 1, 5) == "91604") OR
                        (Substr(Документы.Debit, 1, 5) == "45915")) ) )
                       return(True);
                    end;
                  end;
                  SearchBK = next(Документы);
                end;
                return(False);
            end;
          
            IF ( Тип == CBF_CRD )
              ДатаПогашения = Credit.ReturnDate;
            END;
            IF ( Тип == CBF_EXP )
              IF(ОстатокКД (Credit.CreditNumber, TDR_EXPREST, DateReport) != $0)
              /*RestAcc(Credit.IsCur,Credit.CurCode,GetAccountReserve(EXPCRD, Credit.CreditNumber,Credit.CurCode,DateReport), DateReport) != 0)*/
                D_Var = DateReport;
                WWW = TRUE;
                CountVar = 0;
                while( WWW )
                  if( ПоискОперВыносПроср(D_Var, 7, 1) )
                    ДатаПогашения = D_Var;
                    КолвоПросрочДнейПоОД = CountVar;  /* + 1 Усачев, 16.07.02 */
                    WWW = False;
                  end;
                  D_Var = D_Var - 1;
                  CountVar = CountVar + 1;
                  if( D_Var  Credit.PaymentDate )
                    WWW = False;
                  end;
                end;
              end;
                /* Усачев, 16.07.02 */
              IF ( ОстатокКД (Credit.CreditNumber, TDR_EXPPERC, DateReport) != $0 )
              /*(RestAcc(Credit.IsCur,Credit.CurCode,GetAccountReserve(EXPPERC,Credit.CreditNumber,Credit.CurCode,DateReport), DateReport) != 0)
                OR (RestAcc(Credit.IsCur,Credit.CurCode,GetAccountReserve(NO_EXPPERC,Credit.CreditNumber,Credit.CurCode,DateReport), DateReport) != 0)
                 )*/
                D_Var = DateReport;
                CountVar = 0;
                WWW = TRUE;
                while( WWW )
                  if( ПоискОперВыносПроср(D_Var, 7, 2) )
                    ДатаВынесенияПроцентов = D_Var;
                    КолвоПросрочДнейПоПроцентам = CountVar; /* + 1 Усачев, 16.07.02 */
                    WWW = False;
                  end;
                  D_Var = D_Var - 1;
                  CountVar = CountVar + 1;
                  if( D_Var  Credit.PaymentDate )
                    WWW = False;
                  end;
                end;
              end;
            END;
          
            /* Дата погашения для разрешенных овердрафтов */
          
            MACRO GetPayDay (TypeAccount, DatRep)
              var VVV, Dt_Var, Sum_Plat = $0, ДатаПослПогаш, Sum_Pl, Sum_Pl_458,
                  Sum_Inc_Lim, Search1, Sum_OV, ПрДО, D_Nul_Rest;
          
          /*  находим дату последнего нулевого значения остатка по ссудному счету D_Par */
              VVV = True;
              Dt_Var = DatRep;
              while( VVV )
                Dt_Var = Dt_Var - 1;
                if( Dt_Var == OvKarta.RegDate )
                  D_Nul_Rest = Dt_Var;
                  VVV = False;
                else
                  IF(GetRest(OvKarta.Karta_ID, TypeAccount, Dt_Var, OvKarta.CurCode) == 0.)
                    D_Nul_Rest = Dt_Var;
                    VVV = False;
                  end;
                end;
              end;
          /*    находим сумму оплаченного основного долга и
                дату последней операции погашения   */
              Sum_Plat = $0;
              ДатаПослПогаш = D_Nul_Rest;
              Dt_Var = D_Nul_Rest + 1;
              while( Dt_Var = DatRep )
                Sum_Pl = money(ПоискДокументаOVC(AccNumberOVC(OvKarta.Karta_ID, TypeAccount, OvKarta.CurCode), Dt_Var));
                Sum_Pl_458 = money(ПоискДокументаOVC(AccNumberOVC(OvKarta.Karta_ID, OV_EXPCRD, OvKarta.CurCode), Dt_Var));
                if( (Sum_Pl > $0) OR (Sum_Pl_458 > $0) )
                  Sum_Plat = Sum_Plat + Sum_Pl + Sum_Pl_458;
                  ДатаПослПогаш = Dt_Var;
                end;
                Dt_Var = Dt_Var + 1;
              end;
          
          /*  Проверяем было ли превышение лимита овердрафта */
              Sum_Inc_Lim = $0;
              Dt_Var = D_Nul_Rest;
              while( Dt_Var  DatRep )
                ДокументыOVC.Applic = 1;
                ДокументыOVC.IsDeleted = 0;
                ДокументыOVC.CreditNumber_Ref = OvKarta.Karta_ID;
                ДокументыOVC.OperTypeNumber_Ref = 1;
                Search1 = getGE(ДокументыOVC);
                while(Search1 and
                  (ДокументыOVC.Applic == 1) AND
                  (ДокументыOVC.IsDeleted == 0) AND
                  (ДокументыOVC.CreditNumber_Ref == OvKarta.Karta_ID) AND
                  (ДокументыOVC.OperTypeNumber_Ref == 1))
                  if( (ДокументыOVC.RegDate == Dt_Var) AND
                      (substr(ДокументыOVC.Debit, 1, 5) == "45815") )
                    Sum_Inc_Lim = Sum_Inc_Lim + money(ДокументыOVC.CarrySum);
                  end;
                  Search1 = next(ДокументыOVC);
                end;
                Dt_Var = Dt_Var + 1;
              end;
          /*  находим дату возникновения и отчета первого непогашенного овердрафта */
              Sum_OV = $0;
              Dt_Var = D_Nul_Rest;
              ПрДО = 0;
              while( Dt_Var = DatRep )
                ДокументыOVC.Applic = 1;
                ДокументыOVC.IsDeleted = 0;
                ДокументыOVC.CreditNumber_Ref = OvKarta.Karta_ID;
                ДокументыOVC.OperTypeNumber_Ref = 1;
                Search1 = getGE(ДокументыOVC);
                while(Search1 and
                  (ДокументыOVC.Applic == 1) AND
                  (ДокументыOVC.IsDeleted == 0) AND
                  (ДокументыOVC.CreditNumber_Ref == OvKarta.Karta_ID) AND
                  (ДокументыOVC.OperTypeNumber_Ref == 1))
                  if(ДокументыOVC.RegDate == Dt_Var)
                    Sum_OV = Sum_OV + money(ДокументыOVC.CarrySum);
                    if( Sum_OV + Sum_Inc_Lim > Sum_Plat )
                      ОперацииOVC.CredOperID = ДокументыOVC.CredOperID_Ref;
                      if( GetEQ(ОперацииOVC))
                        SetRecordAddr(PayOv, ОперацииOVC);
                        ДатаПогашения = PayOv.RepDate + 30;
                        Dt_Var = DatRep + 1;
                        ПрДО = 1;
                      end;
                    end;
                  end;
                  Search1 = next(ДокументыOVC);
                end;
                Dt_Var = Dt_Var + 1;
              end;
              if( ПрДО == 0 )
                MsgBox("Дата отчета не найдена по карте ", OvKarta.Karta_ID);
              end;
            END;
          
          /*  Поиск даты возникновения первого непогашенного неразрешенного овердрафта*/
            MACRO GetExpDay (TypeAccount, Dat_Rep)
          
              VAR T_Var, ZZZ, D_Par;
          
          /*  находим дату последнего нулевого значения остатка по счету
              просрочки основного долга */
              ZZZ = True;
              T_Var = Dat_Rep;
              while( ZZZ )
                if( T_Var == OvKarta.RegDate )
                  D_Par = T_Var;
                  ZZZ = False;
                else
                  IF(GetRest(OvKarta.Karta_ID, TypeAccount, T_Var, OvKarta.CurCode) == 0.)
                    D_Par = T_Var;
                    ZZZ = False;
                  end;
                end;
                T_Var = T_Var - 1;
              end;
              ДатаПогашения = D_Par;
            END;
          
          /* Поиск даты погашения разрешенного овердрафта*/
            IF ( Тип == OVC_CRD )
              if(GetRest(OvKarta.Karta_ID, OV_OVCRD_YES, DateReport, OvKarta.CurCode) != 0 )
                GetPayDay(OV_OVCRD_YES, DateReport);
              elif(GetRest(OvKarta.Karta_ID, OV_OVCRD_YES, DatePrevReport, OvKarta.CurCode) != 0 )
                GetPayDay(OV_OVCRD_YES, DatePrevReport);
              end;
            END;
          
            IF ( Тип == OVC_EXP )
              IF(GetRest(OvKarta.Karta_ID, OV_EXPCRD, DateReport, OvKarta.CurCode) != 0 )
                IF (OvKarta.PayType == OV_YES)
          /*Поиск даты выноса на просрочку основного долга по разрешенному овердрафту при
            ненулевом остатке на дату отчета */
                  Acc_OVC = AccNumberOVC(OvKarta.Karta_ID, OV_EXPCRD, OvKarta.CurCode);
                  ДатаПогашения = ПоискДокументПросрочкаOVC(DateReport, OV_OVEXP, Acc_OVC, OvKarta.Karta_ID);
                  КолвоПросрочДнейПоОД = Ndays(ДатаПогашения, DateReport) + 1;
                ELIF ( OvKarta.PayType == OV_NO )
          /*Поиск даты выноса на просрочку основного долга по неразрешенному овердрафту*/
                  GetExpDay(OV_EXPCRD, DateReport);
                  КолвоПросрочДнейПоОД = NDays(ДатаПогашения, DateReport) + 1;
                END;
              ELIF(GetRest(OvKarta.Karta_ID, OV_EXPCRD, DatePrevReport, OvKarta.CurCode) != 0 )
                IF (OvKarta.PayType == OV_YES)
          /*Поиск даты выноса на просрочку основного долга по разрешенному овердрафту при
            ненулевом остатке на дату предыдущего отчета */
                  Acc_OVC = AccNumberOVC(OvKarta.Karta_ID, OV_EXPCRD, OvKarta.CurCode);
                  ДатаПогашения = ПоискДокументПросрочкаOVC(DatePrevReport, OV_OVEXP, Acc_OVC, OvKarta.Karta_ID);
                  WWW = True;
                  D_Var = DatePrevReport;
                  while( WWW )
                    if( (ПоискДокументаOVC(Acc_OVC, D_Var) != 0) AND
                      (GetRest(OvKarta.Karta_ID, OV_EXPCRD, D_Var, OvKarta.CurCode) == 0) )
                      КолвоПросрочДнейПоОД = Ndays(ДатаПогашения, D_Var) + 1;
                      WWW = False;
                    end;
                    D_Var = D_Var + 1;
                    if( D_Var == DateReport )
                      КолвоПросрочДнейПоОД = Ndays(ДатаПогашения, D_Var) + 1;
                      WWW = False;
                    end;
                  end;
                ELIF ( OvKarta.PayType == OV_NO )
          /*Поиск даты выноса на просрочку основного долга по неразрешенному овердрафту*/
                  GetExpDay(OV_EXPCRD, DatePrevReport);
                  WWW = True;
                  D_Var = DatePrevReport;
                  Acc_OVC = AccNumberOVC(OvKarta.Karta_ID, OV_EXPCRD, OvKarta.CurCode);
                  while( WWW )
                    if( (ПоискДокументаOVC(Acc_OVC, D_Var) != 0) AND
                      (GetRest(OvKarta.Karta_ID, OV_EXPCRD, D_Var, OvKarta.CurCode) == 0) )
                      КолвоПросрочДнейПоОД = Ndays(ДатаПогашения, D_Var) + 1;
                      WWW = False;
                    end;
                    D_Var = D_Var + 1;
                    if( D_Var == DateReport )
                      КолвоПросрочДнейПоОД = Ndays(ДатаПогашения, D_Var) + 1;
                      WWW = False;
                    end;
                  end;
                END;
              END;
            END;
          
            /* Остаток на ссудном счете на прошлую и отчетную дату */
            IF (Тип == OVC_CRD)
               IF (OvKarta.PayType == OV_YES)
                  СсудаПредДатаВал  = GetRest(OvKarta.Karta_ID, OV_OVCRD_YES, DatePrevReport, OvKarta.CurCode);
                  СсудаОтчетДатаВал = GetRest(OvKarta.Karta_ID, OV_OVCRD_YES, DateReport, OvKarta.CurCode);
                  СсудаПрогнозДатаВал = GetRest(OvKarta.Karta_ID, OV_OVCRD_YES, DatePrognoz, OvKarta.CurCode);
               ELSE
                  СсудаПредДатаВал  = GetRest(OvKarta.Karta_ID, OV_OVCRD_NO, DatePrevReport, OvKarta.CurCode);
                  СсудаОтчетДатаВал = GetRest(OvKarta.Karta_ID, OV_OVCRD_NO, DateReport, OvKarta.CurCode);
                  СсудаПрогнозДатаВал = GetRest(OvKarta.Karta_ID, OV_OVCRD_NO, DatePrognoz, OvKarta.CurCode);
               END;
            END;
            IF (Тип == OVC_EXP)
               СсудаПредДатаВал  = GetRest(OvKarta.Karta_ID, OV_EXPCRD, DatePrevReport, OvKarta.CurCode);
               СсудаОтчетДатаВал = GetRest(OvKarta.Karta_ID, OV_EXPCRD, DateReport, OvKarta.CurCode);
               СсудаПрогнозДатаВал = GetRest(OvKarta.Karta_ID, OV_EXPCRD, DatePrognoz, OvKarta.CurCode);
            END;
            IF (Тип == CBF_CRD)
               СсудаПредДатаВал = ОстатокКД (Credit.CreditNumber, TDR_MAINREST, DatePrevReport); /*RestAcc(Credit.IsCur,Credit.CurCode,AccNumberCrd(Credit.CreditNumber,CRD_ACC,DatePrevReport,Credit.CurCode), DatePrevReport);*/
               СсудаОтчетДатаВал = ОстатокКД (Credit.CreditNumber, TDR_MAINREST, DateReport); /*RestAcc(Credit.IsCur,Credit.CurCode,AccNumberCrd(Credit.CreditNumber,CRD_ACC,DateReport,Credit.CurCode), DateReport);*/
               СсудаПрогнозДатаВал = ОстатокКД (Credit.CreditNumber, TDR_MAINREST, DatePrognoz); /*RestAcc(Credit.IsCur,Credit.CurCode,AccNumberCrd(Credit.CreditNumber,CRD_ACC,DatePrognoz,Credit.CurCode), DatePrognoz);*/
            END;
          
            IF (Тип == CBF_EXP)
               СсудаПредДатаВал = ОстатокКД (Credit.CreditNumber, TDR_EXPREST, DatePrevReport); /*RestAcc(Credit.IsCur,Credit.CurCode,GetAccountReserve(EXPCRD,Credit.CreditNumber,Credit.CurCode,DatePrevReport), DatePrevReport);*/
               СсудаОтчетДатаВал = ОстатокКД (Credit.CreditNumber, TDR_EXPREST, DateReport); /*RestAcc(Credit.IsCur,Credit.CurCode,GetAccountReserve(EXPCRD,Credit.CreditNumber,Credit.CurCode,DateReport), DateReport);*/
               СсудаПрогнозДатаВал = ОстатокКД (Credit.CreditNumber, TDR_EXPREST, DatePrognoz); /*RestAcc(Credit.IsCur,Credit.CurCode,GetAccountReserve(EXPCRD,Credit.CreditNumber,Credit.CurCode,DatePrognoz), DatePrognoz);*/
            END;
          
            IF (((Тип == OVC_CRD) or (Тип == OVC_EXP)) and (OvKarta.CurCode == 0))
               СсудаПредДатаРуб = СсудаПредДатаВал;
               СсудаОтчетДатаРуб = СсудаОтчетДатаВал;
               СсудаПрогнозДатаРуб = СсудаПрогнозДатаВал;
            ELSE
          /*
               СсудаПредДатаРуб = Round(double(СсудаПредДатаВал)*КурсUSDНаДатуПредОтчета,2);
               СсудаОтчетДатаРуб = Round(double(СсудаОтчетДатаВал)*КурсUSDНаДатуОтчета,2);
          */
               СсудаПредДатаРуб = Round(double(СсудаПредДатаВал)*КурсUSDНаДатуПредОтчета,2);
               СсудаОтчетДатаРуб = Round(double(СсудаОтчетДатаВал)*КурсUSDНаДатуОтчета,2);
               СсудаПрогнозДатаРуб = Round(double(СсудаПрогнозДатаВал)*КурсUSDНаДатуПрогноза,2);
            END;
            IF ((Тип == CBF_CRD) or (Тип == CBF_EXP))
              IF (Credit.CurCode == 0)
                 СсудаПредДатаРуб = СсудаПредДатаВал;
                 СсудаОтчетДатаРуб = СсудаОтчетДатаВал;
                 СсудаПрогнозДатаРуб = СсудаПрогнозДатаВал;
              ELSE
          /*
                 СсудаПредДатаРуб = Round(double(СсудаПредДатаВал)*GetCurrRate(DatePrevReport,Credit.CurCode),2);
                 СсудаОтчетДатаРуб = Round(double(СсудаОтчетДатаВал)*GetCurrRate(DateReport,Credit.CurCode),2);
          */
                 СсудаПредДатаРуб = Round(double(СсудаПредДатаВал)*КурсUSDНаДатуПредОтчета,2);
                 СсудаОтчетДатаРуб = Round(double(СсудаОтчетДатаВал)*КурсUSDНаДатуОтчета,2);
                 СсудаПрогнозДатаРуб = Round(double(СсудаПрогнозДатаВал)*КурсUSDНаДатуПрогноза,2);
              END;
            END;
          
            /* Группы риска */
            IF ((Тип == OVC_CRD) or (Тип == OVC_EXP))
              ГруппаПредДата = ГруппаРиска(OvKarta.Karta_ID, DatePrevReport);
              ГруппаОтчетДата = ГруппаРиска(OvKarta.Karta_ID, DateReport);
              ГруппаПрогнозДата = ГруппаРиска(OvKarta.Karta_ID, DatePrognoz);
            END;
            IF ((Тип == CBF_CRD) or (Тип == CBF_EXP))
              ГруппаПредДата = ГруппаРискаПоДоговору(Credit.CreditNumber, DatePrevReport);
              ГруппаОтчетДата = ГруппаРискаПоДоговору(Credit.CreditNumber, DateReport);
              ГруппаПрогнозДата = ГруппаРискаПоДоговору(Credit.CreditNumber, DatePrognoz);
            END;
          
            НормативПредДата = string(RiskPercent(ГруппаПредДата));
            НормативОтчетДата = string(RiskPercent(ГруппаОтчетДата));
            НормативПрогнозДата = string(RiskPercent(ГруппаПрогнозДата));
          
            /* Остатки на счетах резерва */
            IF (Тип == OVC_CRD)
              РезПредДатаФакт = GetRest(OvKarta.Karta_ID, OV_REZ_ACC, DatePrevReport, 0);
              РезОтчетДатаФакт = GetRest(OvKarta.Karta_ID, OV_REZ_ACC, DateReport, 0);
            END;
            IF (Тип == OVC_EXP)
              РезПредДатаФакт = GetRest(OvKarta.Karta_ID, OV_REZ_EXP, DatePrevReport, 0);
              РезОтчетДатаФакт = GetRest(OvKarta.Karta_ID, OV_REZ_EXP, DateReport, 0);
            END;
            IF (Тип == CBF_CRD)
              РезПредДатаФакт = _GetRest(Credit.CreditNumber, REZ_ACC, DatePrevReport, 0);
              РезОтчетДатаФакт = _GetRest(Credit.CreditNumber, REZ_ACC, DateReport, 0);
            END;
            IF (Тип == CBF_EXP)
              РезПредДатаФакт = _GetRest(Credit.CreditNumber, REZ_EXP, DatePrevReport, 0);
              РезОтчетДатаФакт = _GetRest(Credit.CreditNumber, REZ_EXP, DateReport, 0);
            END;
          
            IF (Режим == Прогноз)
              РезОтчетДатаФакт = round(СсудаОтчетДатаРуб* RiskPercent(ГруппаОтчетДата)/100,2);
            END;
            РезПрогнозДатаФакт = round(СсудаПрогнозДатаРуб* RiskPercent(ГруппаПрогнозДата)/100,2);
          
            /* Документ формирования и корректировки резерва  */
            MACRO ПроверитьДокументПоОвердрафту ()
             СписаниеОтносимые = 0;
             СписанияНеотносимые = 0;
             ДоначисленияНеотносимые = 0;
             ДоначисленияОтносимые = 0;
          
              IF (DocOVC.State > 1)
                IF ((Тип == OVC_CRD) or (Тип == OVC_EXP))
                   IF (Тип == OVC_CRD) GetAccount(OV_REZ_ACC, OvKarta.Karta_ID, 0); END;
                   IF (Тип == OVC_EXP) GetAccount(OV_REZ_EXP, OvKarta.Karta_ID, 0); END;
          
                   IF (DocOVC.Debit == AcCrd.AccountNumber_Ref)
                       IF (DocOVC.Credit == OVCВосстСОтнесением)
                          СписаниеОтносимые = DocOVC.CarrySum;
                       ELIF (DocOVC.Credit == OVCВосстБезОтнесения)
                          СписанияНеотносимые = DocOVC.CarrySum;
                       END;
                   ELIF (DocOVC.Credit == AcCrd.AccountNumber_Ref)
                       IF (DocOVC.Debit == OVCОтчисленияОтносимые)
                          ДоначисленияОтносимые = DocOVC.CarrySum;
                       ELIF (DocOVC.Debit == OVCОтчисленияНеОтносимые)
                          ДоначисленияНеотносимые = DocOVC.CarrySum;
                       END;
                   END;
                END;
              END;
            END;
          
          
            /* Документ формирования и корректировке резерва  */
            MACRO ПроверитьДокументПоКредиту ()
          
              IF (DocCRD.State > 1)
          
                IF (Тип == CBF_CRD)
          
                   IF (DocCRD.Debit ==  GetAccountReserve(REZ_ACC, Credit.CreditNumber, 0, DateReport))
                       IF (DocCRD.Credit == CRDВосстСОтнесением)
                          СписаниеОтносимые = DocCRD.CarrySum;
                       ELIF (DocCRD.Credit == CRDВосстБезОтнесения)
                          СписанияНеотносимые = DocCRD.CarrySum;
                       END;
                   ELIF (DocCRD.Credit == GetAccountReserve(REZ_ACC, Credit.CreditNumber, 0, DateReport))
                       IF (DocCRD.Debit == CRDОтчисленияОтносимые)
                          ДоначисленияОтносимые = DocCRD.CarrySum;
                       ELIF (DocCRD.Debit == CRDОтчисленияНеОтносимые)
                          ДоначисленияНеотносимые = DocCRD.CarrySum;
                       END;
                   END;
                END;
          
                IF (Тип == CBF_EXP)
                   IF (DocCRD.Debit == GetAccountReserve(REZ_EXP, Credit.CreditNumber, 0, DateReport))
                       IF (DocCRD.Credit == CRDВосстСОтнесением)
                          СписаниеОтносимые = DocCRD.CarrySum;
                       ELIF (DocCRD.Credit == CRDВосстБезОтнесения)
                          СписанияНеотносимые = DocCRD.CarrySum;
                       END;
                   ELIF (DocCRD.Credit == GetAccountReserve(REZ_EXP, Credit.CreditNumber, 0, DateReport))
                       IF (DocCRD.Debit == CRDОтчисленияОтносимые)
                          ДоначисленияОтносимые = DocCRD.CarrySum;
                       ELIF (DocCRD.Debit == CRDОтчисленияНеОтносимые)
                          ДоначисленияНеотносимые = DocCRD.CarrySum;
                       END;
                   END;
                END;
          
              END;
            END;
          
            СписаниеОтносимые = 0;
            СписанияНеотносимые = 0;
            ДоначисленияНеотносимые = 0;
            ДоначисленияОтносимые = 0;
          
            IF ((Тип == OVC_CRD) or (Тип == OVC_EXP))
               DocOVC.Applic = 1;
               DocOVC.CreditNumber_Ref = OvKarta.Karta_ID;
               DocOVC.RegDate = DateReport;
               DocOVC.IsDeleted = 0;
               IF (getGE(DocOVC) and (DocOVC.Applic == 1) and
                   (DocOVC.CreditNumber_Ref == OvKarta.Karta_ID)
                   and (DocOVC.RegDate == DateReport) and (DocOVC.IsDeleted == 0))
                 ПроверитьДокументПоОвердрафту();
                 WHILE( NEXT(DocOVC) and (DocOVC.Applic == 1) and
                    (DocOVC.CreditNumber_Ref == OvKarta.Karta_ID)
                    and (DocOVC.RegDate == DateReport) and (DocOVC.IsDeleted == 0))
                   ПроверитьДокументПоОвердрафту();
                 END;
               END;
            END;
          
            IF ((Тип == CBF_CRD) or (Тип == CBF_EXP))
               DocCRD.Applic = 0;
               DocCRD.CreditNumber_Ref = Credit.CreditNumber;
               DocCRD.RegDate = DateReport;
               DocCRD.IsDeleted = 0;
               IF (getGE(DocCRD) and (DocCRD.Applic == 0) and
                   (DocCRD.CreditNumber_Ref == Credit.CreditNumber)
                   and (DocCRD.RegDate == DateReport) and (DocCRD.IsDeleted == 0))
                 ПроверитьДокументПоКредиту();
                 WHILE( NEXT(DocCRD) and (DocCRD.Applic == 0) and
                    (DocCRD.CreditNumber_Ref == Credit.CreditNumber)
                    and (DocCRD.RegDate == DateReport) and (DocCRD.IsDeleted == 0))
                   ПроверитьДокументПоКредиту();
                 END;
               END;
            END;
          
          
            IF (Режим == Прогноз)
          
              IF ((ОтнесениеНаСебестоимость(ГруппаПредДата, КачОбеспПредДата) == -1) and
              (ОтнесениеНаСебестоимость(ГруппаОтчетДата, КачОбеспОтчетДата) == TRUE))
                 IF (РезОтчетДатаФакт > РезПредДатаФакт)
                   ДоначисленияОтносимые = РезОтчетДатаФакт-РезПредДатаФакт;
                 ELSE
                   СписаниеОтносимые = РезПредДатаФакт-РезОтчетДатаФакт;
                 END;
              END;
              IF ((ОтнесениеНаСебестоимость(ГруппаПредДата, КачОбеспПредДата) == -1) and
              (ОтнесениеНаСебестоимость(ГруппаОтчетДата, КачОбеспОтчетДата) == FALSE))
                 IF (РезОтчетДатаФакт > РезПредДатаФакт)
                   ДоначисленияОтносимые = РезОтчетДатаФакт-РезПредДатаФакт;
                 ELSE
                   СписаниеОтносимые = РезПредДатаФакт-РезОтчетДатаФакт;
                 END;
          
              END;
              IF ((ОтнесениеНаСебестоимость(ГруппаПредДата, КачОбеспПредДата) == TRUE) and
              (ОтнесениеНаСебестоимость(ГруппаОтчетДата, КачОбеспОтчетДата) == -1))
                 IF (РезОтчетДатаФакт > РезПредДатаФакт)
                   ДоначисленияОтносимые = РезОтчетДатаФакт-РезПредДатаФакт;
                 ELSE
                   СписаниеОтносимые = РезПредДатаФакт-РезОтчетДатаФакт;
                 END;
              END;
              IF ((ОтнесениеНаСебестоимость(ГруппаПредДата, КачОбеспПредДата) == FALSE) and
              (ОтнесениеНаСебестоимость(ГруппаОтчетДата, КачОбеспОтчетДата) == -1))
                 IF (РезОтчетДатаФакт > РезПредДатаФакт)
                   ДоначисленияНеотносимые = РезОтчетДатаФакт-РезПредДатаФакт;
                 ELSE
                   СписанияНеотносимые = РезПредДатаФакт-РезОтчетДатаФакт;
                 END;
              END;
          
              /*Без отнесения -> С отнесением*/
              IF ((ОтнесениеНаСебестоимость(ГруппаПредДата, КачОбеспПредДата) == FALSE) and
              (ОтнесениеНаСебестоимость(ГруппаОтчетДата, КачОбеспОтчетДата) == TRUE))
                   СписаниеОтносимые = 0;
                   СписанияНеотносимые = РезПредДатаФакт;
                   ДоначисленияНеотносимые = 0;
                   ДоначисленияОтносимые = РезОтчетДатаФакт;
              END;
          
              /* С отнесением -> Без отнесения */
              IF ((ОтнесениеНаСебестоимость(ГруппаПредДата, КачОбеспПредДата) == TRUE) and
              (ОтнесениеНаСебестоимость(ГруппаОтчетДата, КачОбеспОтчетДата) == FALSE))
                   СписаниеОтносимые = РезПредДатаФакт;
                   СписанияНеотносимые = 0;
                   ДоначисленияНеотносимые = РезОтчетДатаФакт;
                   ДоначисленияОтносимые = 0;
              END;
          
              /* С отнесением -> С отнесением */
              IF ((ОтнесениеНаСебестоимость(ГруппаПредДата, КачОбеспПредДата) == TRUE) and
              (ОтнесениеНаСебестоимость(ГруппаОтчетДата, КачОбеспОтчетДата) == TRUE))
                 IF (РезОтчетДатаФакт > РезПредДатаФакт)
                   ДоначисленияОтносимые = РезОтчетДатаФакт - РезПредДатаФакт;
                   СписаниеОтносимые = 0;
                   СписанияНеотносимые = 0;
                   ДоначисленияНеотносимые = 0;
                 ELSE
                   СписаниеОтносимые =  РезПредДатаФакт - РезОтчетДатаФакт;
                   ДоначисленияОтносимые = 0;
                   СписанияНеотносимые = 0;
                   ДоначисленияНеотносимые = 0;
                 END;
              END;
          
              /* Без отнесения -> Без отнесения */
              IF ((ОтнесениеНаСебестоимость(ГруппаПредДата, КачОбеспПредДата) == FALSE) and
              (ОтнесениеНаСебестоимость(ГруппаОтчетДата, КачОбеспОтчетДата) == FALSE))
                 IF (РезОтчетДатаФакт > РезПредДатаФакт)
                   ДоначисленияНеотносимые = РезОтчетДатаФакт - РезПредДатаФакт;
                   СписаниеОтносимые =  0;
                   ДоначисленияОтносимые = 0;
                   СписанияНеотносимые = 0;
                 ELSE
                   СписанияНеотносимые = РезПредДатаФакт - РезОтчетДатаФакт;
                   ДоначисленияНеотносимые = 0;
                   СписаниеОтносимые =  0;
                   ДоначисленияОтносимые = 0;
                 END;
              END;
          
            END;
          
            IF (СсудаПредДатаРуб == 0)
              ГруппаПредДата  = 0;
              НормативПредДата = 0;
            END;
            IF (СсудаОтчетДатаРуб == 0)
              ГруппаОтчетДата = 0;
              НормативОтчетДата = 0;
            END;
          
          
            IF ((СсудаПредДатаРуб != 0) or (СсудаОтчетДатаРуб !=0))
          
              НапечататьСтроку (Раздел, Номер, ФИО, Вид, Счет, КачОбеспОтчетДата,
                ПереоформленияСИзменением, ПереоформленияБезИзменения, ДатаПогашения,
                КолвоПросрочДнейПоОД, ДатаВынесенияПроцентов, КолвоПросрочДнейПоПроцентам,
                СсудаПредДатаВал, СсудаПредДатаРуб, СсудаОтчетДатаВал, СсудаОтчетДатаРуб,
                ГруппаПредДата, ГруппаОтчетДата, НормативПредДата, НормативОтчетДата,
                РезПредДатаФакт, РезОтчетДатаФакт,
                ДоначисленияОтносимые, ДоначисленияНеотносимые,
                СписаниеОтносимые, СписанияНеотносимые,
                СсудаПрогнозДатаРуб, НормативПрогнозДата, РезПрогнозДатаФакт, ТипЗаемщика
               );
               if (РезПрогнозДатаФакт - РезОтчетДатаФакт != 0)
                  НапечататьСтрокуПрил5 (Раздел, ТипЗаемщика, ФИО, РезОтчетДатаФакт - РезПрогнозДатаФакт,
                                         ГруппаОтчетДата - ГруппаПрогнозДата) ;
               end;
          
            END;
          
          END;
          
          
          MACRO ОбработатьДоговор ()
          
            /* AccNumberCrd(CreditNumber, type, RepDate, CurCode) - № счета */
            /* RestAcc(IsCur, CurCode, AccountNumber_Ref, TurnOverDate) - остаток на счете*/
          
            /* Если есть остаток по текущему счету резервирования, то будем
               формировать строку в отчете */
            IF (
                 (RestAcc(0,0,GetAccountReserve(REZ_ACC,Credit.CreditNumber,0,DatePrevReport), DatePrevReport) != 0)
                  or (RestAcc(0,0,GetAccountReserve(REZ_ACC,Credit.CreditNumber,0,DateReport), DateReport) != 0)
               )
                ДобавитьСтроку(CBF_CRD);
            ELIF (Режим == Прогноз)
              IF (RestAcc(Credit.IsCur,Credit.CurCode,AccNumberCrd(Credit.CreditNumber,CRD_ACC,DateReport,Credit.CurCode), DateReport) != 0)
                ДобавитьСтроку(CBF_CRD);
              END;
            END;
          
            /* Если есть остаток по текущему счету резервирования по просрочке, то будем
               формировать строку в отчете */
            IF (
                 (RestAcc(0,0,GetAccountReserve(REZ_EXP,Credit.CreditNumber,0,DatePrevReport), DatePrevReport) != 0)
                  or (RestAcc(0,0,GetAccountReserve(REZ_EXP,Credit.CreditNumber,0,DateReport), DateReport) != 0)
               )
                ДобавитьСтроку(CBF_EXP);
            ELIF (Режим == Прогноз)
              IF ((RestAcc(Credit.IsCur,Credit.CurCode,GetAccountReserve(EXPCRD, Credit.CreditNumber,Credit.CurCode,DateReport), DateReport) != 0) OR
                  (RestAcc(Credit.IsCur,Credit.CurCode,GetAccountReserve(EXPPERC,Credit.CreditNumber,Credit.CurCode,DateReport), DateReport) != 0) )
                ДобавитьСтроку(CBF_EXP);
              END;
            END;
          
          
          END;
          
          
          MACRO ОбработатьКарту ()
          
            /* Если есть остаток по счету резерва по основному долгу, то будем
               формировать строку в отчете */
            IF ( (GetRest(OvKarta.Karta_ID, OV_REZ_ACC, DatePrevReport, 0) != 0) or
                 (GetRest(OvKarta.Karta_ID, OV_REZ_ACC, DateReport, 0) != 0) )
                ДобавитьСтроку(OVC_CRD);
            ELIF (Режим == Прогноз)
              IF (OvKarta.PayType == OV_YES)
                 IF (GetRest(OvKarta.Karta_ID, OV_OVCRD_YES, DateReport, OvKarta.CurCode) != 0)
                    ДобавитьСтроку(OVC_CRD);
                 END;
              END;
            END;
          
            /* Если есть остаток по счету резерва по просроченному основному долгу, то будем
               формировать строку в отчете */
            IF ( (GetRest(OvKarta.Karta_ID, OV_REZ_EXP, DatePrevReport, 0) != 0) or
                 (GetRest(OvKarta.Karta_ID, OV_REZ_EXP, DateReport, 0) != 0) )
                ДобавитьСтроку(OVC_EXP);
            ELIF (Режим == Прогноз)
              IF (GetRest(OvKarta.Karta_ID, OV_EXPCRD, DateReport, OvKarta.CurCode) != 0)
                ДобавитьСтроку(OVC_EXP);
              END;
            END;
          
          END;
          
          
              MACRO ОтобразитьЛист ()
                VAR count : integer = 0;
          
                 /* Нужно обнулить значения AmountInsider,  AmountCredit, AmountExpired */
                 AmountInsider     = 0;
                 AmountCredit      = 0;
                 AmountPrivileg    = 0;
                 AmountExpired     = 0;
                 AmountExpInsider  = 0;
                 AmountExpPrivileg  = 0;
                 AmountPril5OrgPlus  = 0;
                 AmountPril5OrgMinus  = 0;
                 AmountPril5PersonPlus  = 0;
                 AmountPril5PersonMinus  = 0;
          
                 /* считаем кол-во кредитных договоров с такой валютой для progress bar */
                 count = 0; CurCRD = 0;
                 WHILE(GoNextCRD())
                   IF (CheckDepart(Credit.FNCash))
                     count = count + 1;
                     CheckSystAcc(Credit.FNCash);
                   END;
                 END;
                 /* цикл по кредитным договорам с такой валютой */
                 InitProgress(count, "Все виды кредитов", "Кредитные договоры");
                 count = 0; CurCRD = 0;
                 WHILE(GoNextCRD())
                   IF (CheckDepart(Credit.FNCash))
                     CheckSystAcc(Credit.FNCash);
                     ОбработатьДоговор();
                     count = count + 1;
                     UseProgress(count);
                   END;
                 END;
                 RemProgress();
          
                 IF ( ОВЕРДРАФТ )
                   /* считаем кол-во карт с такой валютой для progress bar */
                   count = 0; CurOVC = 0;
                   WHILE(GoNextOVC())
                     IF (CheckDepart(OvKarta.FNCash))
                        count = count + 1;
                        CheckSystAcc(OvKarta.FNCash);
                     END;
                   END;
                   /* цикл по картам с такой валютой */
                   InitProgress(count, "Все виды карт", "Банковские карты");
                   count = 0; CurOVC = 0;
                   WHILE(GoNextOVC())
                     IF (CheckDepart(OvKarta.FNCash))
                        CheckSystAcc(OvKarta.FNCash);
                        ОбработатьКарту();
                        count = count + 1;
                        UseProgress(count);
                     END;
                   END;
                   RemProgress();
                 END;
          
              END;
          
          
          /*******************************************************************************
           **                             Основной макрос                               **
           *******************************************************************************/
          MACRO RVPS (Mode)
            Режим = Mode;
          
            IF (ReadBeginParm())
              NewExcelWorkbook (TRUE, "rvps.xls");
              Rep = ExcelApplication;
              Rep.SheetsInNewWorkbook = 1;
          
              Rep.ActiveWorkbook.Sheets("Валюта").Select;
              Sheet = Rep.ActiveSheet; /*Активная страница*/
              Rep.Visible = true;
          
              /* Удаляем предзаполненные значения в отчете */
              Sheet.Range("CUR_CRED_INSIDER").Select;    Rep.Selection.EntireRow.ClearContents;
              Sheet.Range("CUR_CRED_PRIVILEG").Select;    Rep.Selection.EntireRow.ClearContents;
              Sheet.Range("CUR_CRED").Select;            Rep.Selection.EntireRow.ClearContents;
              Sheet.Range("CUR_EXP_INSIDER").Select;     Rep.Selection.EntireRow.ClearContents;
              Sheet.Range("CUR_EXP_PRIVILEG").Select;    Rep.Selection.EntireRow.ClearContents;
              Sheet.Range("CUR_EXP").Select;             Rep.Selection.EntireRow.ClearContents;
          
              Sheet.Range("CUR_STR_REPORTDATE").Value = Sheet.Range("CUR_STR_REPORTDATE").VALUE + " " + string(DateReport+1);
          
              Sheet.Range("CUR_STR_RATEPREV").Value = Sheet.Range("CUR_STR_RATEPREV").Value + " " + string(DatePrevReport) + ": " + string(КурсUSDНаДатуПредОтчета) + "руб.";
              Sheet.Range("CUR_STR_RATEREPORT").Value = Sheet.Range("CUR_STR_RATEREPORT").Value + " " + string(DateReport)  + ": " + string(КурсUSDНаДатуОтчета) + "руб.";
          
              Валюта = USD;
              ОтобразитьЛист();
          
              Rep.ActiveWorkbook.Sheets("Рубли").Select;
              Sheet = Rep.ActiveSheet; /*Активная страница*/
          
              IF (Режим == Прогноз)
                 Sheet.Range("MODE").Value = "Прогноз";
                ELSE
                 Sheet.Range("MODE").Value = "";
              END;
          
              Sheet.Range("RUB_CRED_INSIDER").Select;    Rep.Selection.EntireRow.ClearContents;
              Sheet.Range("RUB_CRED").Select;            Rep.Selection.EntireRow.ClearContents;
              Sheet.Range("RUB_CRED_PRIVILEG").Select;   Rep.Selection.EntireRow.ClearContents;
              Sheet.Range("RUB_EXP_INSIDER").Select;     Rep.Selection.EntireRow.ClearContents;
              Sheet.Range("RUB_EXP_PRIVILEG").Select;    Rep.Selection.EntireRow.ClearContents;
              Sheet.Range("RUB_EXP").Select;             Rep.Selection.EntireRow.ClearContents;
          
              Sheet.Range("RUB_STR_TITLE").Value = Sheet.Range("RUB_STR_TITLE").VALUE + " " + string(DateReport+1);
          
              Sheet.Range("RUB_STR_REPORTDATE").Value = Sheet.Range("RUB_STR_REPORTDATE").VALUE + " " + string(DateReport+1);
          
              Валюта = RUR;
              ОтобразитьЛист();
          
              Rep.ActiveWorkbook.Sheets("Приложение 5").Range("Приложение5Заголовок").Value =
                 Rep.ActiveWorkbook.Sheets("Приложение 5").Range("Приложение5Заголовок").Value
                 + " " + string(DateReport);
              Rep.ActiveWorkbook.Sheets("Рубли").Select; /* Усачев 16.07.02 */
            END;
            Close (Филиалы);
            DelFile (NameLFD);
          
          
          END;
          Best regards,
          Кузьминов Денис Владимирович

          Комментарий


          • #6
            Сорри!!! Samuel i-support там даже тема открыта
            Best regards,
            Кузьминов Денис Владимирович

            Комментарий


            • #7
              Эээ, знакомая проблема, укажи Workdir полный путь, так верно было для 83 сборки

              Комментарий


              • #8
                Фу ошибся, надо для Rs-loans\\ШАБЛОНЫ_excel указать полный путь

                Комментарий


                • #9
                  Все пути прописаны полностью ПОЛНЫМИ!!!!
                  Best regards,
                  Кузьминов Денис Владимирович

                  Комментарий


                  • #10
                    KuzmichD
                    полностью ПОЛНЫМИ!!!!
                    А в UNC нотации?
                    И расшарить ресурс?

                    не факт, что прокатит, но дело такое

                    Комментарий


                    • #11
                      О, точно, темка есть... Ею Димка занимается...
                      А если...
                      ... попробовать подложить DLM модуль rsax.d32 в папку с терминалом?
                      С уважением,
                      Шарак Андрей

                      Комментарий


                      • #12
                        KuzmichD Помогло?
                        С уважением,
                        Шарак Андрей

                        Комментарий


                        • #13
                          Samuel? все решилась, проблема, действительно это нужно было сделать, но об этом нигде не упоминается
                          Best regards,
                          Кузьминов Денис Владимирович

                          Комментарий

                          Пользователи, просматривающие эту тему

                          Свернуть

                          Присутствует 1. Участников: 0, гостей: 1.

                          Обработка...
                          X