<?xml version="1.0" encoding="windows-1251"?>
<!-- edited with XML Spy v4.3 U (http://www.xmlspy.com) by ASD (ASD) -->
<Модуль rg_version="1.0">
  <интерфейс>
    <отчет>
      <наименование>Форма 0503175-191н_ред217н_2021</наименование>
      <код_раздела>Reports5n</код_раздела>
      <номер_код>f0503175_217n_2021</номер_код>
      <шаблон>
        <тип>MSE</тип>
        <мнемокод>ar_form0503175_217n_2021</мнемокод>
        <файл>Форма0503175_191н_ред217н_2021.xlt</файл>
      </шаблон>
      <!--Отчет формируется по хозяйственным операциям за период-->
    </отчет>
  </интерфейс>
  <отчет>
    <реализует>f0503175_217n_2021</реализует>
      <дополнительно>
      <запомнить_переменные>
        <список_переменных>dSelDateS;dSelDatePo;cOrg;cBalUnits;cTxt18B1;cTxt18B2;cTxt18B3;cTxt18B4;cTxt18B5;cTxt18B6;cTxt18B7;cTxt18B8;cTxt18B9;cTxt18B10;nAccType;nAnLevelAlt;nChkAdAn3;nChk50222;nChk31_33;nChkExclBA;nChkExclNBN;nSumLimit1;nSumLimit2;cComDicGroup;cAccIFO;cAccIBS;cUnlPath;cIST;cDicIsp;cIspName;cIspTel</список_переменных>
        <мемофайл>ar_form0503175_191n_217n_2021;ar_form0503175_191n_311n_2020;ar_form0503175_191n_13n_2020;ar_form0503175_191n_244n_2018</мемофайл>
      </запомнить_переменные>
      </дополнительно>
    <переменные>
      <переменная>
        <имя>dSelDateS</имя>
        <начальное_значение>oSystem.DateBegin</начальное_значение>
        <!--Период формирования-->
      </переменная>
      <переменная>
        <имя>dSelDatePo</имя>
        <начальное_значение>oSystem.Date</начальное_значение>
        <!--Период формирования-->
      </переменная>
      <переменная>
        <имя>dDateBegin</имя>
        <начальное_значение>""</начальное_значение>
        <!--Дата С-->
      </переменная>
      <переменная>
        <имя>dDateEnd</имя>
        <начальное_значение>""</начальное_значение>
        <!--Дата По-->
      </переменная>
      <переменная>
        <имя>cOrg</имя>
        <начальное_значение>""</начальное_значение>
        <!--Контрагент-->
      </переменная>
      <переменная>
        <имя>cWhereOrg</имя>
        <начальное_значение>""</начальное_значение>
        <!--Условие по контрагентам-->
      </переменная>          
      <переменная>
        <имя>cBalUnits</имя>
        <начальное_значение>""</начальное_значение>
        <!--Бал. единицы-->
      </переменная>
      <переменная>
        <имя>cWhereBal</имя>
        <начальное_значение>""</начальное_значение>
        <!--Условие по балансовым единицам-->
      </переменная>  
      <переменная>
        <имя>nAnLevelAlt</имя>
        <начальное_значение>5</начальное_значение>
        <!--Уровень аналитики КОСГУ-->
      </переменная>
      <переменная>
        <имя>nChkAdAn3</имя>
        <начальное_значение>1</начальное_значение>
        <!--Сворачивать КОСГУ до 3-х символов-->
      </переменная>
      <переменная>
        <имя>nAccType</имя>
        <начальное_значение>1</начальное_значение>
        <!--Тип счёта-->
      </переменная>
      <переменная>
        <имя>CTxt18B1</имя>
        <начальное_значение>"1"</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B2</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B3</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B4</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B5</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B6</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B7</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B8</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B9</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B10</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>cUsl18</имя>
        <начальное_значение>""</начальное_значение>
        <!--Условие для 18 знака счета-->
      </переменная>
      <переменная>
        <имя>nChk50222</имя>
        <начальное_значение>0</начальное_значение>
        <!--Учитывать кредитовые остатки по счетам 50222 для расчета показателей по принятым бюджетным обязательствам-->
      </переменная>
      <переменная>
        <имя>nChk31_33</имя>
        <начальное_значение>0</начальное_значение>
        <!--Исключать расходные бюджетные ассигнования по КВР, отличным от 31Х и 33Х, при расчете показателей раздела 3-->
      </переменная>
      <переменная>
        <имя>nChkExclBA</имя>
        <начальное_значение>1</начальное_значение>
        <!--Исключать бюджетные ассигнования из утвержденных бюджетных назначений при расчете показателей раздела 3-->
      </переменная>
      <переменная>
        <имя>nChkExclNBN</имя>
        <начальное_значение>1</начальное_значение>
        <!--Исключать нераспределенные бюджетные назначения при расчете показателей раздела 3-->
      </переменная>
      <переменная>
        <имя>nSumLimit1</имя>
        <начальное_значение>100000000</начальное_значение>
        <!--Предельный размер неисполненных обязательств (раздел 1)-->
      </переменная>
      <переменная>
        <имя>nSumLimit2</имя>
        <начальное_значение>100000000</начальное_значение>
        <!--Предельный размер неисполненных денежных обязательств (раздел 2)-->
      </переменная>
      <переменная>
        <имя>cComDicGroup</имя>
        <начальное_значение>""</начальное_значение>
        <!--Группировка по символам номера счета-->
      </переменная>
      <переменная>
         <имя>arrGroupMask</имя>
         <начальное_значение>""</начальное_значение>
         <!--Маска для группировки по символам номера счета-->
      </переменная>
      <переменная>
        <имя>cAccIFO</имя>
        <начальное_значение>"|??????????????????30405*"</начальное_значение>
        <!--Счета: Исполнение обязательств (через финансовые органы)-->
      </переменная>
      <переменная>
        <имя>cAccIBS</имя>
        <начальное_значение>"|??????????????????з18*"</начальное_значение>
        <!--Счета: Исполнение обязательств (через банковские счета)-->
      </переменная>
      <переменная>
        <имя>cWhereAccIFO</имя>
        <начальное_значение>""</начальное_значение>
        <!--Условие по счетам исполнения обязательств (через финансовые органы)-->
      </переменная>          
      <переменная>
        <имя>cWhereAccIBS</имя>
        <начальное_значение>""</начальное_значение>
        <!--Условие по счетам исполнения обязательств (через банковские счета)-->
      </переменная>          
      <переменная>
        <имя>cUnlPath</имя>
        <начальное_значение>""</начальное_значение>
        <!--Каталог выгрузки-->
      </переменная>
      <переменная>
        <имя>cFileName</имя>
        <начальное_значение>""</начальное_значение>
        <!--Файл выгрузки-->
      </переменная>
      <переменная>
        <имя>cIST</имя>
        <начальное_значение>""</начальное_значение>
        <!--ИСТ-->
      </переменная>
      <переменная>
        <имя>cDicIsp</имя>
        <начальное_значение>""</начальное_значение>
        <!--Исполнитель-->
      </переменная>
      <переменная>
        <имя>cIspName</имя>
        <начальное_значение>""</начальное_значение>
        <!--ФИО исполнителя-->
      </переменная>
      <переменная>
        <имя>cIspTel</имя>
        <начальное_значение>""</начальное_значение>
        <!--Телефон исполнителя-->
      </переменная>
      <переменная>
        <имя>RepG151</имя>
        <начальное_значение>CreateObject("form0503buxrepd")</начальное_значение>
      </переменная>
      <переменная>
        <имя>dReportDate</имя>
        <начальное_значение>Date(2021,12,31)</начальное_значение>
      </переменная>
      <переменная>
        <имя>lNoError</имя>
        <начальное_значение>.T.</начальное_значение>
      </переменная>            
    </переменные>
    <запуск_формы>
      <ид>f_0503175_191n_217n_2021</ид>
    </запуск_формы>
    <вычисление>
      <сообщение>Ждите, идет выборка данных ...</сообщение>
      <FPC_><![CDATA[*[VFP]
 dDateBegin = DOX(m.dSelDateS,  3)
 dDateEnd   = DOX(m.dSelDatePo, 4) 
   ]]></FPC_>
    </вычисление>
    <печать>
      <!--Печать отчета--><MSE>
        <!--Печать в MS Excel-->
        <FPC_><![CDATA[*[VFP]
*ON ERROR
Private lOrgPO, nInitPos, cAnLevel
Local i, s, cVFO, cSumm

* Аналитические счета для учреждений
lOrgPO = !Empty(m.cWhereOrg)

* Длинный или короткий план счетов
nInitPos = Iif(m.nAccType = 1, 18, 1)

* Уровень аналитики КОСГУ
cAnLevel = Str(m.nAnLevelAlt, 1)

** Формирование вспомогательной таблицы "Исполнено обязательств"
Create CURSOR curIsp (KBK C(17), VFO C(1), KOSGU C(15), Sum N (18,2))
Index On KBK + VFO + KOSGU Tag UNI

If !Empty(m.cWhereAccIFO)
  oSystem.ShowMessage("Подсчёт сумм: Исполнение обязательств через финансовые органы...")
  GetTurnsFormIsp(1, m.cWhereAccIFO)
EndIf

If !Empty(m.cWhereAccIBS)
  oSystem.ShowMessage("Подсчёт сумм: Исполнение обязательств через банковские счета...")
  GetTurnsFormIsp(2, m.cWhereAccIBS)
EndIf

** Формирование вспомогательной таблицы "Принято бюджетных обязательств"
Create CURSOR curPBO (KBK C(17), VFO C(1), KOSGU C(15), C34 C(1), Sum N (18,2))
Index On KBK + VFO + KOSGU + C34 Tag UNI

oSystem.ShowMessage("Подсчёт сумм: Принято бюджетных обязательств...")
GetTurnsOblig("50211", "curPBO")
If m.nChk50222 = 1
  GetTurnsOblig("50222", "curPBO", .T.)
EndIf

** 1. Сведения о неисполненных бюджетных обязательствах
Select KBK, VFO, KosGu, Sum(Sum) As Sum ;
  From curPBO ;
  Group By 1, 2, 3 ;
  Into CURSOR curPBO1

Select a.KBK, a.VFO, a.KosGu, a.Sum - Nvl(b.Sum, 000000000000000.00) As Sum ;
  From curPBO1 a ;
    Left Join curIsp b On a.KBK + a.VFO + a.KosGu = b.KBK + b.VFO + b.KosGu ;
  Into CURSOR curSpec1 READWRITE

Delete For Sum = 0 Or Sum < m.nSumLimit1

Index On VFO + KosGu + KBK Tag UNI

Use In curPBO1

** Формирование вспомогательной таблицы "Принято денежных обязательств"
Create CURSOR curPDO (KBK C(17), VFO C(1), KOSGU C(15), Sum N (18,2))
Index On KBK + VFO + KOSGU Tag UNI

oSystem.ShowMessage("Подсчёт сумм: Принято денежных обязательств...")
GetTurnsOblig("50212", "curPDO")

** 2. Сведения о неисполненных денежных обязательствах
Select a.KBK, a.VFO, a.KosGu, a.Sum - Nvl(b.Sum, 000000000000000.00) As Sum ;
  From curPDO a ;
    Left Join curIsp b On a.KBK + a.VFO + a.KosGu = b.KBK + b.VFO + b.KosGu ;
  Into CURSOR curSpec2 READWRITE

Delete For Sum = 0 Or Sum < m.nSumLimit2

Index On VFO + KosGu + KBK Tag UNI

** Формирование вспомогательной таблицы "Утверждено бюджетных назначений"
Create CURSOR curUtv (KBK C(17), VFO C(1), KOSGU C(15), C34 C(1), Sum N (18,2))
Index On KBK + VFO + KOSGU + C34 Tag UNI

oSystem.ShowMessage("Подсчёт сумм: Утверждено бюджетных назначений...")
GetTurnsUtv()

** 3. Сведения о бюджетных обязательствах, принятых сверх утвержденных бюджетных назначений
Select a.KBK, a.VFO, a.KosGu, a.C34, a.Sum - Nvl(b.Sum, 000000000000000.00) As Sum ;
  From curPBO a ;
    Left Join curUtv b On a.KBK + a.VFO + a.KosGu + a.C34 = b.KBK + b.VFO + b.KosGu + b.C34 ;
  Into CURSOR curSpec31

Select KBK, VFO, KosGu, Sum, ;
       Iif(C34 = "3", Sum, 000000000000000.00) As Sum3, ;
       Iif(C34 = "4", Sum, 000000000000000.00) As Sum4  ;
  From curSpec31 ;
  Into CURSOR curSpec32

Use In curSpec31

Select KBK, VFO, KosGu, Sum(Sum) As Sum2, Sum(Sum3) As Sum3, Sum(Sum4) As Sum4 ;
  From curSpec32 ;
  Group By 1, 2, 3 ;
  Into CURSOR curSpec3 READWRITE

Delete For Sum2 <= 0

Index On VFO + KosGu + KBK Tag UNI

Use In curSpec32

** 4. Аналитическая информация об экономии при заключении договоров с применением конкурентных способов
Create CURSOR curSpec4 (KBK C(17), ACC C(6), KOSGU C(15), Sum2 N (18,2), Sum3 N (18,2), Sum4 N (18,2))
Index On Acc + KosGu + KBK Tag UNI

oSystem.ShowMessage("Подсчёт сумм: Принимаемые обязательства...")
GetTurnsEconom()

Delete For Sum2 = 0 And Sum3 = 0 And Sum4 = 0 In curSpec4

CurClose("curSbfTotal;curKldRN;curIsp;curPBO;curPDO;curUtv")

* Формирую имя файла для выгрузки
If !Empty(m.cUnlPath)
  Local nNum, cNum, nN, cTmpWhere
  Local Array aFiles[1], arBP[1]
  cUnlPath  = AllTrim(m.cUnlPath)
  cFileName = "275Y"
  nNum = 0
  If ADir(aFiles, m.cUnlPath + m.cFileName + "??.txt") # 0
    For m.i = 1 To ALen(aFiles) / 5
      nN = At(".", aFiles(m.i, 1))
      cNum = SubStr(aFiles(m.i, 1), 5, m.nN - 5)
      If m.nNum < Val(m.cNum)
        nNum = Val(m.cNum)
      EndIf 
      If m.nNum = 99
        nNum = 0
      EndIf
    EndFor
  EndIf
  cFileName = m.cUnlPath + m.cFileName + PadL(Int(m.nNum) + 1, 2, "0") + ".txt"

  cTmpWhere = IIF(!Empty(m.cWhereOrg) And AT(" Or ", m.cWhereOrg) = 0, m.cWhereOrg, "OrgBase.RN = ?oSystem.OwnerOrgRN")

  * Глава по БК
  Select fBudMg.Rasp_Code ;
    From fBudMg ;
      Inner Join OrgBase On fBudMg.OrgBase_RN = OrgBase.RN ;
    Where &cTmpWhere ;
    Into Array arBP

  cIST = IIF(_Tally # 0, arBP[1], "")
EndIf

oSystem.ShowMessage("Печать ...")

* Печать отчета
Local oPrint, nSheet
oPrint = objCaller.objExcelRep

* Заголовок
oPrint.PrintRange("Header")

For m.i = 1 To 4
  s = Str(m.i, 1)
  Local Array aRepParts[2]
  aRepParts[ 1 ] = "Spec" + m.s
  aRepParts[ 2 ] = "SpecItog" + m.s
  oPrint.ReportPrepare( @aRepParts)

  If m.i <= 2
    cSumm = "Sum(Sum) As Sum"
    cVFO  = "VFO"
  Else
    cSumm = "Sum(Sum2) As Sum2, Sum(Sum3) As Sum3, Sum(Sum4) As Sum4"
    cVFO  = Iif(m.i = 3, "VFO", "Acc")
  EndIf

  Select &cVFO, KosGu, &cSumm ;
    From curSpec&s ;
    Group By 1, 2 ;
    Order By 1, 2 ;
    Into CURSOR curItog&s

  Scan
    Select curSpec&s
    Seek curItog&s..&cVFO + curItog&s..KosGu
    Scan While &cVFO + KosGu = curItog&s..&cVFO + curItog&s..KosGu
      oPrint.PrintReportPart("Spec" + m.s)
    EndScan
    oPrint.PrintReportPart("SpecItog" + m.s)
  EndScan

  oPrint.ReportFinal()
Next

* Подвал
oPrint.PrintRange("Footer")

CurClose("curSpec1;curItog1;curSpec2;curItog2;curSpec3;curItog3;curSpec4;curItog4")

* Удаление листа со сценарием выгрузки
If Empty(m.cFileName)
  nSheet = oPrint.GetSheetNum("Выгрузка в МинФин")
  If m.nSheet > 0 
     oPrint.Book.Sheet = m.nSheet
     oPrint.Book.EditDeleteSheets()
  EndIf
  oPrint.Book.Sheet = 1
EndIf

oPrint = NULL 

Return

             
*ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
*     Подсчёт сумм: Исполнение обязательств   *
*ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
Procedure GetTurnsFormIsp

LParameters nOpt, cWhere

Local cJoinAnD, cJoinAnK, cWhereCorr
Store "" To cJoinAnD, cJoinAnK
cWhereCorr = Iif(m.nOpt = 1, " And !Like('" + Replicate("?", m.nInitPos) + "4013*', C.Account) And !Like('" + Replicate("?", m.nInitPos) + "30404*', C.Account)", "")

* Выборка счетов
MakeCurAcc(, m.cWhere, "curAccIsp")

* Аналитика для БУ
GetAnOrg("curAccIsp")

Select curAccIsp
Scan For Seek(RN, "AccBase", "RN")
  * Аналитика для БУ
  If m.lOrgPO
    cJoinAnD = "Inner Join crsAnOrg AO On S.RN_DB_A" + Str(curAccIsp.Org_Level, 1) + " = AO.RN "
    cJoinAnK = StrTran(m.cJoinAnD, "_DB_", "_KR_")
  EndIf

  * Отбираем нужные обороты
  Select S.RN_KR_A1 As RN_AN1, S.RN_KR_A2 As RN_AN2, S.RN_KR_A3 As RN_AN3, S.RN_KR_A4 As RN_AN4, S.RN_KR_A5 As RN_AN5, ;
         GU.SAccount As KOSGU, S.SUM_EQUAL As Summ ;
    From EopBase B ;
      Inner Join EopSpec S  On B.RN = S.Master_RN ;
      Inner Join AccSpec GU On S.RN_KR_A&cAnLevel = GU.RN ;
      Left  Join AccBase C  On S.RN_DB = C.RN ;
      &cJoinAnK ;
    Where Between(B.Date_EOP, ?m.dDateBegin, ?m.dDateEnd) And S.RN_KR = ?curAccIsp.RN &cWhereCorr ;
  UNION ALL ;
  Select S.RN_DB_A1 As RN_AN1, S.RN_DB_A2 As RN_AN2, S.RN_DB_A3 As RN_AN3, S.RN_DB_A4 As RN_AN4, S.RN_DB_A5 As RN_AN5, ;
         GU.SAccount As KOSGU, -S.SUM_EQUAL As Summ ;
    From EopBase B ;
      Inner Join EopSpec S  On B.RN = S.Master_RN ;
      Inner Join AccSpec GU On S.RN_DB_A&cAnLevel = GU.RN ;
      Left  Join AccBase C  On S.RN_KR = C.RN ;
      &cJoinAnD ;
    Where Between(B.Date_EOP, ?m.dDateBegin, ?m.dDateEnd) And S.RN_DB = ?curAccIsp.RN &cWhereCorr ;
    Into CURSOR curTurns1

  * Группируем и заполняем КБК, добавляем суммы в курсор curIsp (Исполнено обязательств)
  FillKBKandPutSumm2("curIsp")
EndScan

CurClose("curAccIsp,crsAnOrg")

EndProc


*ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
*     Подсчёт сумм: Принято обязательств                       *
*ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
Procedure GetTurnsOblig(cSubs, cCursor, lRest)

Local cJoinAnK, cJoinAn
Store "" To cJoinAnK, cJoinAn

* Выборка счетов
MakeCurAcc(m.cSubs,, "curAccOblig")

* Аналитика для БУ
GetAnOrg("curAccOblig")

Select curAccOblig
Scan For Seek(RN, "AccBase", "RN")
  * Аналитика для БУ
  If m.lOrgPO
    cJoinAnK = "Inner Join crsAnOrg AO On S.RN_KR_A" + Str(curAccOblig.Org_Level, 1) + " = AO.RN "
  EndIf

  If m.lRest
    * Остатки на начало
    cJoinAn = StrTran(m.cJoinAnK, "_KR_", "_AC_")

    Select S.RN_AC_A1 As RN_AN1, S.RN_AC_A2 As RN_AN2, S.RN_AC_A3 As RN_AN3, S.RN_AC_A4 As RN_AN4, S.RN_AC_A5 As RN_AN5, ;
           GU.SAccount As KOSGU, S.SUMM_KR_EQUAL - S.SUMM_DB_EQUAL As Summ ;
      From AcRest B ;
        Inner Join AcAnRest S On B.RN = S.Master_RN ;
        Inner Join AccSpec GU On S.RN_AC_A&cAnLevel = GU.RN ;
        &cJoinAn ;
      Where B.Date_Rest = ?m.dDateBegin And B.RN_ACCOUNT = ?curAccOblig.RN ;
      Into CURSOR curTurns1
  Else
    * Отбираем нужные обороты
    Select S.RN_KR_A1 As RN_AN1, S.RN_KR_A2 As RN_AN2, S.RN_KR_A3 As RN_AN3, S.RN_KR_A4 As RN_AN4, S.RN_KR_A5 As RN_AN5, ;
           GU.SAccount As KOSGU, S.SUM_EQUAL As Summ ;
      From EopBase B ;
        Inner Join EopSpec S  On B.RN = S.Master_RN ;
        Inner Join AccSpec GU On S.RN_KR_A&cAnLevel = GU.RN ;
        &cJoinAnK ;
      Where Between(B.Date_EOP, ?m.dDateBegin, ?m.dDateEnd) And S.RN_KR = ?curAccOblig.RN ;
      Into CURSOR curTurns1
  EndIf

  * Группируем и заполняем КБК, добавляем суммы в рабочий курсор
  FillKBKandPutSumm2(m.cCursor)
EndScan

CurClose("curAccOblig,crsAnOrg")

EndProc


*ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
*     Подсчёт сумм: Утверждено бюджетных назначений            *
*ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
Procedure GetTurnsUtv

Local cJoinAnD, cJoinAnK
Store "" To cJoinAnD, cJoinAnK

* Выборка счетов 50111, 50115
MakeCurAcc("50111")
MakeCurAcc("50115")
Select * From curAcc50111 UNION ALL Select * From curAcc50115 Into CURSOR curAcc501Db
CurClose("curAcc50111,curAcc50115")

* Аналитика для БУ
GetAnOrg("curAcc501Db")

Select curAcc501Db
Scan For Seek(RN, "AccBase", "RN")
  * Аналитика для БУ
  If m.lOrgPO
    cJoinAnD = "Inner Join crsAnOrg AO On S.RN_DB_A" + Str(curAcc501Db.Org_Level, 1) + " = AO.RN "
  EndIf

  * Отбираем нужные обороты
  Select S.RN_DB_A1 As RN_AN1, S.RN_DB_A2 As RN_AN2, S.RN_DB_A3 As RN_AN3, S.RN_DB_A4 As RN_AN4, S.RN_DB_A5 As RN_AN5, ;
         GU.SAccount As KOSGU, S.SUM_EQUAL As Summ ;
    From EopBase B ;
      Inner Join EopSpec S  On B.RN = S.Master_RN ;
      Inner Join AccSpec GU On S.RN_DB_A&cAnLevel = GU.RN ;
      &cJoinAnD ;
    Where Between(B.Date_EOP, ?m.dDateBegin, ?m.dDateEnd) And S.RN_DB = ?curAcc501Db.RN ;
    Into CURSOR curTurns1

  * Группируем и заполняем КБК, добавляем суммы в рабочий курсор
  FillKBKandPutSumm2("curUtv")
EndScan

CurClose("curAcc501Db,crsAnOrg")

* Выборка счетов 50114
MakeCurAcc("50114")

* Аналитика для БУ
GetAnOrg("curAcc50114")

Select curAcc50114
Scan For Seek(RN, "AccBase", "RN")
  * Аналитика для БУ
  If m.lOrgPO
    cJoinAnK = "Inner Join crsAnOrg AO On S.RN_KR_A" + Str(curAcc50114.Org_Level, 1) + " = AO.RN "
  EndIf

  * Отбираем нужные обороты
  Select S.RN_KR_A1 As RN_AN1, S.RN_KR_A2 As RN_AN2, S.RN_KR_A3 As RN_AN3, S.RN_KR_A4 As RN_AN4, S.RN_KR_A5 As RN_AN5, ;
         GU.SAccount As KOSGU, -S.SUM_EQUAL As Summ ;
    From EopBase B ;
      Inner Join EopSpec S  On B.RN = S.Master_RN ;
      Inner Join AccSpec GU On S.RN_KR_A&cAnLevel = GU.RN ;
      &cJoinAnK ;
    Where Between(B.Date_EOP, ?m.dDateBegin, ?m.dDateEnd) And S.RN_KR = ?curAcc50114.RN ;
    Into CURSOR curTurns1

  * Группируем и заполняем КБК, добавляем суммы в рабочий курсор
  FillKBKandPutSumm2("curUtv")
EndScan

CurClose("curAcc50114,crsAnOrg")

If m.nChkExclBA = 0   && НЕ Исключать бюджетные ассигнования...
  * Выборка счетов 50311, 50315
  MakeCurAcc("50311")
  MakeCurAcc("50315")
  Select * From curAcc50311 UNION ALL Select * From curAcc50315 Into CURSOR curAcc503Db
  CurClose("curAcc50311,curAcc50315")

  * Аналитика для БУ
  GetAnOrg("curAcc503Db")

  Select curAcc503Db
  Scan For Seek(RN, "AccBase", "RN")
    * Аналитика для БУ
    If m.lOrgPO
      cJoinAnD = "Inner Join crsAnOrg AO On S.RN_DB_A" + Str(curAcc503Db.Org_Level, 1) + " = AO.RN "
    EndIf

    * Отбираем нужные обороты
    Select S.RN_DB_A1 As RN_AN1, S.RN_DB_A2 As RN_AN2, S.RN_DB_A3 As RN_AN3, S.RN_DB_A4 As RN_AN4, S.RN_DB_A5 As RN_AN5, ;
           GU.SAccount As KOSGU, S.SUM_EQUAL As Summ ;
      From EopBase B ;
        Inner Join EopSpec S  On B.RN = S.Master_RN ;
        Inner Join AccSpec GU On S.RN_DB_A&cAnLevel = GU.RN ;
        &cJoinAnD ;
      Where Between(B.Date_EOP, ?m.dDateBegin, ?m.dDateEnd) And S.RN_DB = ?curAcc503Db.RN ;
      Into CURSOR curTurns1

    * Группируем и заполняем КБК, добавляем суммы в рабочий курсор
    FillKBKandPutSumm2("curUtv",, .T.)
  EndScan

  CurClose("curAcc503Db,crsAnOrg")

  * Выборка счетов 50314
  MakeCurAcc("50314")

  * Аналитика для БУ
  GetAnOrg("curAcc50314")

  Select curAcc50314
  Scan For Seek(RN, "AccBase", "RN")
    * Аналитика для БУ
    If m.lOrgPO
      cJoinAnK = "Inner Join crsAnOrg AO On S.RN_KR_A" + Str(curAcc50314.Org_Level, 1) + " = AO.RN "
    EndIf

    * Отбираем нужные обороты
    Select S.RN_KR_A1 As RN_AN1, S.RN_KR_A2 As RN_AN2, S.RN_KR_A3 As RN_AN3, S.RN_KR_A4 As RN_AN4, S.RN_KR_A5 As RN_AN5, ;
           GU.SAccount As KOSGU, -S.SUM_EQUAL As Summ ;
      From EopBase B ;
        Inner Join EopSpec S  On B.RN = S.Master_RN ;
        Inner Join AccSpec GU On S.RN_KR_A&cAnLevel = GU.RN ;
        &cJoinAnK ;
      Where Between(B.Date_EOP, ?m.dDateBegin, ?m.dDateEnd) And S.RN_KR = ?curAcc50314.RN ;
      Into CURSOR curTurns1

    * Группируем и заполняем КБК, добавляем суммы в рабочий курсор
    FillKBKandPutSumm2("curUtv",, .T.)
  EndScan

  CurClose("curAcc50314,crsAnOrg")
EndIf

If m.nChkExclNBN = 1   && Исключать нераспределенные бюджетные назначения...
  * Выборка счетов 50112, 50312
  MakeCurAcc("50112")
  If m.nChkExclBA = 0
    MakeCurAcc("50312")
    Select *, .F. As LVidR From curAcc50112 UNION ALL Select *, .T. As LVidR From curAcc50312 Into CURSOR curAcc50X12
  Else
    Select *, .F. As LVidR From curAcc50112 Into CURSOR curAcc50X12
  EndIf
  CurClose("curAcc50112,curAcc50312")

  * Аналитика для БУ
  GetAnOrg("curAcc50X12")

  Select curAcc50X12
  Scan For Seek(RN, "AccBase", "RN")
    * Аналитика для БУ
    If m.lOrgPO
      cJoinAnD = "Inner Join crsAnOrg AO On S.RN_DB_A" + Str(curAcc50X12.Org_Level, 1) + " = AO.RN "
      cJoinAnK = StrTran(m.cJoinAnD, "_DB_", "_KR_")
    EndIf

    * Отбираем нужные обороты
    Select S.RN_DB_A1 As RN_AN1, S.RN_DB_A2 As RN_AN2, S.RN_DB_A3 As RN_AN3, S.RN_DB_A4 As RN_AN4, S.RN_DB_A5 As RN_AN5, ;
           GU.SAccount As KOSGU, S.SUM_EQUAL As Summ ;
      From EopBase B ;
        Inner Join EopSpec S  On B.RN = S.Master_RN ;
        Inner Join AccSpec GU On S.RN_DB_A&cAnLevel = GU.RN ;
        &cJoinAnD ;
      Where Between(B.Date_EOP, ?m.dDateBegin, ?m.dDateEnd) And S.RN_DB = ?curAcc50X12.RN ;
    UNION ALL ;
    Select S.RN_KR_A1 As RN_AN1, S.RN_KR_A2 As RN_AN2, S.RN_KR_A3 As RN_AN3, S.RN_KR_A4 As RN_AN4, S.RN_KR_A5 As RN_AN5, ;
           GU.SAccount As KOSGU, -S.SUM_EQUAL As Summ ;
      From EopBase B ;
        Inner Join EopSpec S  On B.RN = S.Master_RN ;
        Inner Join AccSpec GU On S.RN_KR_A&cAnLevel = GU.RN ;
        &cJoinAnK ;
      Where Between(B.Date_EOP, ?m.dDateBegin, ?m.dDateEnd) And S.RN_KR = ?curAcc50X12.RN ;
      Into CURSOR curTurns1

    * Группируем и заполняем КБК, добавляем суммы в курсор curIsp (Исполнено обязательств)
    FillKBKandPutSumm2("curUtv",, curAcc50X12.LVidR)
  EndScan

  CurClose("curAcc50X12,crsAnOrg")
EndIf

EndProc


*ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
*     Подсчёт сумм: Принимаемые обязательства                  *
*ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
Procedure GetTurnsEconom

Local cJoinAnD, cJoinAnK, cWhereCorr
Store "" To cJoinAnD, cJoinAnK

* Выборка счетов
MakeCurAcc("502?7",, "curAcc502x7")

* Аналитика для БУ
GetAnOrg("curAcc502x7")

Select curAcc502x7
Scan For Seek(RN, "AccBase", "RN")
  * Аналитика для БУ
  If m.lOrgPO
    cJoinAnD = "Inner Join crsAnOrg AO On S.RN_DB_A" + Str(curAcc502x7.Org_Level, 1) + " = AO.RN "
    cJoinAnK = StrTran(m.cJoinAnD, "_DB_", "_KR_")
  EndIf

  * Отбираем обороты - Колонка 2
  Select S.RN_KR_A1 As RN_AN1, S.RN_KR_A2 As RN_AN2, S.RN_KR_A3 As RN_AN3, S.RN_KR_A4 As RN_AN4, S.RN_KR_A5 As RN_AN5, ;
         GU.SAccount As KOSGU, S.SUM_EQUAL As Summ ;
    From EopBase B ;
      Inner Join EopSpec S  On B.RN = S.Master_RN ;
      Inner Join AccSpec GU On S.RN_KR_A&cAnLevel = GU.RN ;
      &cJoinAnK ;
    Where Between(B.Date_EOP, ?m.dDateBegin, ?m.dDateEnd) And S.RN_KR = ?curAcc502x7.RN ;
    Into CURSOR curTurns1

  * Группируем и заполняем КБК, добавляем суммы в рабочий курсор
  FillKBKandPutSumm2("curSpec4", 2)

  * Отбираем обороты - Колонка 3
  cWhereCorr = " And Like('" + Replicate("?", m.nInitPos) + "502?1*', C.Account)"
  Select S.RN_DB_A1 As RN_AN1, S.RN_DB_A2 As RN_AN2, S.RN_DB_A3 As RN_AN3, S.RN_DB_A4 As RN_AN4, S.RN_DB_A5 As RN_AN5, ;
         GU.SAccount As KOSGU, S.SUM_EQUAL As Summ ;
    From EopBase B ;
      Inner Join EopSpec S  On B.RN = S.Master_RN ;
      Inner Join AccSpec GU On S.RN_DB_A&cAnLevel = GU.RN ;
      Inner Join AccBase C  On S.RN_KR = C.RN ;
      &cJoinAnD ;
    Where Between(B.Date_EOP, ?m.dDateBegin, ?m.dDateEnd) And S.RN_DB = ?curAcc502x7.RN &cWhereCorr ;
    Into CURSOR curTurns1

  * Группируем и заполняем КБК, добавляем суммы в рабочий курсор
  FillKBKandPutSumm2("curSpec4", 3)

  * Отбираем обороты - Колонка 4
  cWhereCorr = " And (Like('" + Replicate("?", m.nInitPos) + "501?3*', C.Account) Or Like('" + Replicate("?", m.nInitPos) + "503?3*', C.Account))"
  Select S.RN_DB_A1 As RN_AN1, S.RN_DB_A2 As RN_AN2, S.RN_DB_A3 As RN_AN3, S.RN_DB_A4 As RN_AN4, S.RN_DB_A5 As RN_AN5, ;
         GU.SAccount As KOSGU, S.SUM_EQUAL As Summ ;
    From EopBase B ;
      Inner Join EopSpec S  On B.RN = S.Master_RN ;
      Inner Join AccSpec GU On S.RN_DB_A&cAnLevel = GU.RN ;
      Inner Join AccBase C  On S.RN_KR = C.RN ;
      &cJoinAnD ;
    Where Between(B.Date_EOP, ?m.dDateBegin, ?m.dDateEnd) And S.RN_DB = ?curAcc502x7.RN &cWhereCorr ;
    Into CURSOR curTurns1

  * Группируем и заполняем КБК, добавляем суммы в рабочий курсор
  FillKBKandPutSumm2("curSpec4", 4)
EndScan

CurClose("curAcc502x7,crsAnOrg")

EndProc


*ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
*     Выборка счетов                                           *
*ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
Procedure MakeCurAcc(cAcc, cFilter, cCursor)

Local cWhereTmp

* Фильтр для счетов
cWhereTmp = m.cUsl18 + m.cWhereBal + Iif(Empty(m.cWhereBal), "", " And ")
If !Empty(m.cAcc) And !IsNull(m.cAcc)
  cWhereTmp = m.cWhereTmp + "Like('" + Replicate("?", m.nInitPos) + m.cAcc + "*', AccBase.Account)"
EndIf
If !Empty(m.cFilter) And !IsNull(m.cFilter)
  cWhereTmp = m.cWhereTmp + Iif(Empty(m.cAcc), "", " And ") + m.cFilter
EndIf
RepG151.GetComRepPrm151("0503175", @lNoError, m.cWhereTmp)
cWhereTmp = m.cWhereTmp + " And m.lNoError"

* Курсор для отобранных счетов
If Empty(m.cCursor)
  cCursor = "curAcc" + m.cAcc
EndIf

Select AccBase.RN, AccBase.Account, ;
       AT("1", AccBase.Org_An) As Org_Level ;
  From AccBase ;
    Left Join BalUnit On AccBase.RN_BalUnit = BalUnit.RN ;
  Where &cWhereTmp ;
  Into CURSOR (m.cCursor)

EndProc


*ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
*     Аналитика для БУ                                         *
*ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
Procedure GetAnOrg(cCursor)

If m.lOrgPO
  Select S.RN, S.Master_RN ;
    From &cCursor A ;
      Inner Join AccSpec S On A.RN = S.Master_RN ;
      Inner Join OrgBase   On S.RN_TOrg = OrgBase.RN ;
    Where &cWhereOrg And S.Level = A.Org_Level ;
    Into CURSOR crsAnOrg

  Select * From (m.cCursor) Where RN In (Select Master_RN From crsAnOrg) Into CURSOR (m.cCursor)

  Select RN From crsAnOrg Into CURSOR crsAnOrg
  Index On RN Tag RN
EndIf

EndProc


*ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
*     Заполнение КБК и перенос сумм в рабочий курсор           *
*ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
Procedure FillKBKandPutSumm2(cCursor, nCol, lVidR)

Local cVFO, cKBK, cFld, cCol, cExp, cSbF, i, ni, cAcc, cAcc1, nLen, lC34, cC34
lC34 = Type(m.cCursor + ".C34") = "C"

* Вид финансового обеспечения / Счёт
If Empty(m.nCol) Or IsNull(m.nCol)
  cVFO = SubStr(AccBase.Account, m.nInitPos, 1)
  cFld = "VFO"
  cCol = ""
  cExp = "m.cKBK + m.cVFO + curTurns3.KOSGU" + Iif(m.lC34, " + curTurns3.C34", "")
Else
  cVFO = SubStr(AccBase.Account, m.nInitPos, 6)
  cFld = "ACC"
  cCol = Str(m.nCol, 1)
  cExp = "m.cVFO + curTurns3.KOSGU + m.cKBK"
EndIf

* Группируем и заполняем КБК
If m.nAccType = 1  && Размерность плана счетов - 26 символов
  && Исключать расходные бюджетные ассигнования по КВР, отличным от 31Х и 33Х
  If m.lVidR And m.nChk31_33 = 1 And (AccBase.TFin_Type # 1 Or Empty(AccBase.RN_TFIN) Or !Seek(AccBase.RN_TFIN, "curSbfTotal", "RN") Or !InList(Left(AllTrim(curSbfTotal.VidR), 2), "31", "33"))
    Use In curTurns1
    Return
  EndIf

  cKBK = Left(AccBase.Account, 17)
  cC34 = Space(1)

  If m.lC34 And AccBase.TFin_Type = 1 And !Empty(AccBase.RN_TFIN) And Seek(AccBase.RN_TFIN, "curSbfTotal", "RN") And InList(Left(AllTrim(curSbfTotal.VidR), 2), "85", "31", "33")
    cC34 = Iif(Left(AllTrim(curSbfTotal.VidR), 2) = "85", "3", "4")
  EndIf

  Select ?m.cKBK As KBK, ;
         Iif(?m.nChkAdAn3 = 1, PadR(Left(AllTrim(KOSGU), 3), 15), KOSGU) As KOSGU, ;
         m.cC34 As C34, ;
         Sum(Summ) As Summ ;
    From curTurns1 ;
    Group By 1, 2, 3 ;
    Into CURSOR curTurns3
Else                && Размерность плана счетов - 9 символов
  Select RN_AN1, RN_AN2, RN_AN3, RN_AN4, RN_AN5, ;
         Iif(?m.nChkAdAn3 = 1, PadR(Left(AllTrim(KOSGU), 3), 15), KOSGU) As KOSGU, ;
         Space(17) As KBK, ;
         Space(1)  As C34, ;
         Sum(Summ) As Summ ;
    From curTurns1 ;
    Group By 1, 2, 3, 4, 5, 6 ;
    Into CURSOR curTurns2 READWRITE

  Scan
    cSbF = ""
    cKBK = GetOtherKBK("curTurns2", @cSbF)
    If m.lVidR And m.nChk31_33 = 1 And (Empty(m.cSbF) Or !Seek(m.cSbF, "curSbfTotal", "RN") Or !InList(Left(AllTrim(curSbfTotal.VidR), 2), "31", "33"))
      Delete In curTurns2
      Loop
    EndIf
    Replace KBK With m.cKBK In curTurns2
    If m.lC34 And !Empty(m.cSbF) And Seek(m.cSbF, "curSbfTotal", "RN") And InList(Left(AllTrim(curSbfTotal.VidR), 2), "85", "31", "33")
      Replace C34 With Iif(Left(AllTrim(curSbfTotal.VidR), 2) = "85", "3", "4") In curTurns2
    EndIf
  EndScan

  Select KBK, KOSGU, C34, Sum(Summ) As Summ ;
    From curTurns2 ;
    Group By 1, 2, 3 ;
   Into CURSOR curTurns3
EndIf

CurClose("curTurns1;curTurns2")

* Добавляем суммы в курсор (m.cCursor)
Select curTurns3
Scan
  * Группировка по символам номера счета
  cKBK = curTurns3.KBK
  If !Empty(arrGroupMask)
    ni = ALen(arrGroupMask, 1)
    cAcc1 = m.cKBK + m.cVFO
    If Len(m.cAcc1) > arrGroupMask(m.ni, 2) + 3
      cAcc1 = Left(m.cAcc1, arrGroupMask(m.ni, 2)) + "000"
    EndIf
    nLen = Len(m.cAcc1)
    cAcc = Replicate("0", m.nLen)
    For m.i = 1 To m.ni
      cAcc = Iif(arrGroupMask(m.i, 1) = 1, "", Left(m.cAcc, arrGroupMask(m.i, 1) - 1)) + ;
             SubStr(m.cAcc1, arrGroupMask(m.i, 1), arrGroupMask(m.i, 2) - arrGroupMask(m.i, 1) + 1) + ;
             SubStr(m.cAcc, arrGroupMask(m.i, 2) + 1)
    Next
    cKBK = Left(m.cAcc, 17)
    cVFO = SubStr(m.cAcc, 18)
  EndIf

  If !Seek(Evaluate(m.cExp), m.cCursor, "UNI")
    Insert Into (m.cCursor) (KBK, &cFld, KOSGU) VALUES (m.cKBK, m.cVFO, curTurns3.KOSGU)
    If m.lC34
      Replace C34 With curTurns3.C34 In (m.cCursor)
    EndIf
  EndIf
  Replace Sum&cCol With Sum&cCol + curTurns3.Summ In (m.cCursor)
EndScan

USE In curTurns3

EndProc


*ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
*     Формирование показателя КБК для прочих счетов            *
*ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
Procedure GetOtherKBK(cAlias, cSbF)

Local cKBK, cLev, cRN
cKBK = ""

If m.nAccType = 1   && Размерность плана счетов - 26 символов
  Return Left(AccBase.Account, 17)
Else              && Размерность плана счетов - 9 символов
  If AccBase.TFin_Type = 2 And AT('9', AccBase.SMETA_AN) # 0   && ШФ
    cLev = Str(AT('9', AccBase.SMETA_AN), 1)
    cRN  = Evaluate(m.cAlias + ".RN_AN" + m.cLev)
    If !Empty(m.cRN) And Seek(m.cRN, "AccSpec", "RN") And !Empty(AccSpec.RN_TFIN) And Seek(AccSpec.RN_TFIN, "curSbfTotal", "RN")
      cSbF = curSbfTotal.RN
      cKBK = curSbfTotal.BcrCode
    EndIf
  EndIf

  If Empty(m.cKBK) And AT("3", AccBase.ORG_AN) # 0             && КБК
    cLev = Str(AT("3", AccBase.ORG_AN), 1)
    cRN  = Evaluate(m.cAlias + ".RN_AN" + m.cLev)
    If !Empty(m.cRN) And Seek(m.cRN, "AccSpec", "RN") And !Empty(AccSpec.RN_KLSDOH) And Seek(AccSpec.RN_KLSDOH, "curKldRN", "RN")
      cKBK = curKldRN.Code
    EndIf
  EndIf
EndIf

Return PadR(m.cKBK, 17)

EndProc

]]></FPC_></MSE>
      <FPC_><![CDATA[*[VFP]
RepG151.GetOutS(.T.)
]]></FPC_>
    </печать>
  </отчет>
  <форма>
    <ид>f_0503175_191n_217n_2021</ид>
    <тип>XML</тип>
    <описание>
      <дополнительно>
        <desc_version>1.0</desc_version>
      </дополнительно>
      <VFP_свойство имя="Name">f_0503175</VFP_свойство>
      <VFP_свойство имя="Caption">Форма 0503175-191н_ред217н_2021</VFP_свойство>
      <VFP_свойство имя="Height">490</VFP_свойство>
      <VFP_свойство имя="Width">470</VFP_свойство>
      <VFP_метод имя="Valid"><![CDATA[LParam oThis, oThisform
Local nMinLen, nMaxLen, cSub, ni, n1, n2, nR, cS, lOk, oPage, nPos, c18, i, cSymb
Dimension arrGroupMask[1, 2]
Store "" To arrGroupMask, cUsl18
nMinLen = 23
nMaxLen = 29

oPage = oThisForm.TPageMain.Page1

dSelDateS  = oPage.cntSelDateS.RestDate.Value
dSelDatePo = oPage.cntSelDatePo.RestDate.Value

If m.dSelDateS > m.dSelDatePo
   =ExclMes("Неправильно задан диапазон дат!")
   oPage.cntSelDateS.SetFocus()
   Return .F.
EndIf

c18 = oPage.Txt18B1.Value + oPage.Txt18B2.Value + oPage.Txt18B3.Value + oPage.Txt18B4.Value + ;
      oPage.Txt18B5.Value + oPage.Txt18B6.Value + oPage.Txt18B7.Value + oPage.Txt18B8.Value + ;
      oPage.Txt18B9.Value + oPage.Txt18B10.Value

If Empty(m.c18)
  =exclmes("Для счетов не указан Код вида деятельности!")
  oPage.Txt18B1.SetFocus()
  Return .F.
EndIf

c18 = StrTran(m.c18,  " ", "", 1)

For m.i = 1 To Len(m.c18)
  cSymb  = SubStr(m.c18, m.i, 1)
  cUsl18 = m.cUsl18 + Iif(!Empty(m.cUsl18), ",'", "'") + m.cSymb + "'"
Next

* cUsl18 - строка с условиями отбора по мнемокоду счёта по маске 18-го (1-го для короткого плана счетов) символа
cUsl18 = "InList(SubStr(AccBase.Account, " + Iif(m.nAccType = 1, "18", "1") + ", 1), " + m.cUsl18 + ") And "

cWhereBal = oPage.Balunits.GetCond()
cWhereOrg = oPage.OrgFrom.GetCond()

cOrg      = oPage.OrgFrom.GetSaveValue()
cBalUnits = oPage.Balunits.GetSaveValue()

oPage = oThisForm.TPageMain.Page2

* Группировка по символам номера счета
cComDicGroup = oPage.GroupAcc.GetSaveValue()

If !Empty(m.cComDicGroup) And Len(m.cComDicGroup) > 1
   oPage.GroupAcc.SetSaveValue(m.cComDicGroup)
   cSub = oPage.GroupAcc.DisplayValue
   cSub = ChrTran(m.cSub, " ", "")
   cSub = ChrTran(m.cSub, ",", ";")
   ni   = 0
   n1   = Val(m.cSub)
   n2   = 0
   lOk  = Between(m.n1, 1, m.nMaxLen)
   cS   = LTrim(Str(m.n1, 15))
   cSub = SubStr(m.cSub, Len(m.cS) + 1)
   lOk  = m.lOk And !Empty(m.cSub)
   DO While !Empty(m.cSub) And m.lOk
     cS = Left(m.cSub, 1)
     If m.cS = "-" And m.n1 # 0 And m.n2 = 0
        cSub = SubStr(m.cSub, 2)
        n2   = Val(m.cSub)
        nR   = m.n2
        cS   = LTrim(Str(m.n2, 15))
        cSub = SubStr(m.cSub, Len(m.cS) + 1)
        lOk  = Between(m.n2, m.n1, m.nMaxLen)
        If m.lOk
          ni = m.ni + 1
          Dimension arrGroupMask(m.ni, 2)
          arrGroupMask(m.ni, 1) = m.n1
          arrGroupMask(m.ni, 2) = m.n2
        EndIf
     Else
        If m.cS = ";" And m.n1 # 0 And m.n2 # 0
           cSub = SubStr(m.cSub, 2)
           n1   = Val(m.cSub)
           cS   = LTrim(Str(m.n1, 15))
           cSub = SubStr(m.cSub, Len(m.cS) + 1)
           lOk  = Between(m.n1, m.n2 + 1, m.nMaxLen) And !Empty(m.cSub)
           n2   = 0
        Else
           lOk = .F.
        EndIf
     EndIf
   EndDO
   *
   If !m.lOk Or m.nR < m.nMinLen
      oPage.Parent.ActivePage = 2
      = ExclMes("Группировка по символам номера счета задана некорректно!")
      oPage.GroupAcc.SetFocus()
      Return .F.
   EndIf
EndIf

* без этого не всегда сохраняет последнее выбранное значение
cAccIFO = oPage.DicAccountIFO. GetSaveValue()
cAccIBS = oPage.DicAccountIBS. GetSaveValue()

* Условия отбора по счетам, заданным вручную
cWhereAccIFO = oPage.DicAccountIFO. GetCond()
cWhereAccIBS = oPage.DicAccountIBS. GetCond()

oPage = oThisForm.TPageMain.Page3

* Каталог для выгрузки
cUnlPath = oPage.Catalog.Text.Value
If !Empty(cUnlPath) And !Directory(cUnlPath, 1)
   =ExclMes("Каталог " + Allt(cUnlPath) + Chr(13) + "не существует!")
   oThisForm.TPageMain.ActivePage = 3
   oPage.Catalog.SetFocus()
   Return .F.
EndIf

cDicIsp = oPage.DicIsp.GetSaveValue()

Select F.RN, ;
       Nvl(bE.CODE, Space(8)) As VidR, ;
       PadR(Iif(F.RASP_INCL = 1, AllTrim(F.RASP_CODE), "") + ;
       AllTrim(Nvl(PR.CODE, Nvl(R.CODE, Space(6)))) + ;
       AllTrim(Nvl(bC.CODE, Space(10))) + ;
       AllTrim(F.PRG_CODE) + ;
       AllTrim(Nvl(bE.CODE, Space(8))), 33) As BcrCode ;
   From fSbfBase F ;
     Left Join fFuncCl  R  ON F.FKRR_RN  = R.RN  ;
     Left Join fFuncCl  PR ON F.FKRPR_RN = PR.RN ;
     Left Join bCeleSta bC ON F.RN_CSR   = bC.RN ;
     Left Join bExpKind bE ON F.RN_VidR  = bE.RN ;
  Into Cursor curSbfTotal

Index On RN Tag RN

If m.nAccType # 1
  Select B.RN, ;
         PadR(Iif(B.ADMIN_INCL = 1, AllTrim(Nvl(D.CODE, Space(4))), "") + ;
         AllTrim(Nvl(K.MNEMO, Space(8))) + ;
         AllTrim(Nvl(E.MNEMO, Space(2))) + ;
         AllTrim(Nvl(P.MNEMO, Space(7))) + ;
         Iif(B.ADMIN_INCL = 1, "", AllTrim(Nvl(C.MNEMO, Space(3)))), 21) As Code ;
     From BKlsDoh B ;
       Left Join fDirRec  D On B.ADMIN_RN   = D.RN ;
       Left Join PRF_KIND K On B.KIND_RN    = K.RN ;
       Left Join PRF_ELEM E On B.ELEMENT_RN = E.RN ;
       Left Join PRF_PROG P On B.PROGRAM_RN = P.RN ;
       Left Join PRF_ECLS C On B.ECONCL_RN  = C.RN ;
    Into Cursor curKldRN

  Index On RN Tag RN
EndIf
]]></VFP_метод>
      <VFP_метод имя="PostInit"><![CDATA[LParam oThis, oThisform
************************************************************
Local oPage

oPage = oThisForm.TPageMain.Page1
    
oPage.cntSelDateS. InitThis(m.dSelDateS)
oPage.cntSelDatePo.InitThis(m.dSelDatePo)
oPage.OrgFrom.SetSaveValue(m.cOrg)
oPage.BalUnits.SetSaveValue(m.cBalUnits)
oPage.ChkExclBA.ValueChanged()

oPage = oThisForm.TPageMain.Page2

oPage.GroupAcc.SetSaveValue(m.cComDicGroup)

* Без AddToHistory первоначальное значение чистится при попытке выбора из списка
oPage.DicAccountIFO. AddToHistory("??????????????????30405*")
oPage.DicAccountIFO. SetSaveValue(m.cAccIFO)
oPage.DicAccountIBS. AddToHistory("??????????????????з18*")
oPage.DicAccountIBS. SetSaveValue(m.cAccIBS)

oPage = oThisForm.TPageMain.Page3
oPage.Catalog.Text.Value = m.cUnlPath
oPage.DicIsp.SetSaveValue(m.cDicIsp)
oPage.fldIspName.Value = m.cIspName
]]></VFP_метод>
      <элемент>
        <VFP_имя>Tbtndialog1</VFP_имя>
        <VFP_свойство имя="Left">190</VFP_свойство>
        <VFP_свойство имя="Top">453</VFP_свойство>
      </элемент>
        <элемент>
          <VFP_класс>TPageFrame</VFP_класс>
          <VFP_свойство имя="Name">TPageMain</VFP_свойство>
          <VFP_свойство имя="Height">450</VFP_свойство>
          <VFP_свойство имя="Width">470</VFP_свойство>
          <VFP_свойство имя="PageCount">3</VFP_свойство>
          <элемент>
            <VFP_имя>Page1</VFP_имя>
            <VFP_свойство имя="Caption">Параметры формирования</VFP_свойство>
            <VFP_свойство имя="Fontname">MS Sans Serif</VFP_свойство>
            <VFP_свойство имя="FontSize">8</VFP_свойство>            
            <элемент>
              <VFP_класс>T3dShape</VFP_класс>
              <VFP_свойство имя="Height">405</VFP_свойство>
              <VFP_свойство имя="Left">10</VFP_свойство>
              <VFP_свойство имя="Top">10</VFP_свойство>
              <VFP_свойство имя="Width">450</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Caption">Параметры</VFP_свойство>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">5</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Caption">С:</VFP_свойство>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">25</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>Month_year_m</VFP_класс>
              <VFP_свойство имя="Name">cntSelDateS</VFP_свойство>
              <VFP_свойство имя="ControlSource">dSelDateS</VFP_свойство>
              <VFP_свойство имя="Left">95</VFP_свойство>
              <VFP_свойство имя="Top">20</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Caption">По:</VFP_свойство>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">55</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>Month_year_m</VFP_класс>
              <VFP_свойство имя="Name">cntSelDatePo</VFP_свойство>
              <VFP_свойство имя="ControlSource">dSelDatePo</VFP_свойство>
              <VFP_свойство имя="Left">95</VFP_свойство>
              <VFP_свойство имя="Top">50</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">85</VFP_свойство>
              <VFP_свойство имя="Caption">Бюджетное учреждение:</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TDicHist</VFP_класс>
              <VFP_свойство имя="Name">OrgFrom</VFP_свойство>
              <VFP_свойство имя="Left">175</VFP_свойство>
              <VFP_свойство имя="Top">80</VFP_свойство>
              <VFP_свойство имя="Width">275</VFP_свойство>
              <VFP_свойство имя="AreaName" тип="C">OrgBase</VFP_свойство>
              <VFP_свойство имя="DictName" тип="C">Agnt_bms</VFP_свойство>
              <VFP_свойство имя="RetField" тип="C">rmnemo_org</VFP_свойство>
              <VFP_свойство имя="HistoryName" тип="C">H_AGENTS175_217N_2021</VFP_свойство>
              <VFP_свойство имя="sourceIsVar" тип="L">.T.</VFP_свойство>
              <VFP_свойство имя="condfield" тип="C">OrgBase.rmnemo_org</VFP_свойство>
              <VFP_свойство имя="condfieldrn" тип="C">OrgBase.rn</VFP_свойство>
              <VFP_свойство имя="enablewildcards" тип="L">.T.</VFP_свойство>
              <элемент>
                <VFP_имя>DicTable</VFP_имя>
                <дополнительно>
                  <отложенная_инициализация/>
                </дополнительно>
              </элемент>
            </элемент>
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Caption">Балансовая единица:</VFP_свойство>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">115</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>S_balunits</VFP_класс>
              <VFP_свойство имя="Name">Balunits</VFP_свойство>
              <VFP_свойство имя="Left">175</VFP_свойство>
              <VFP_свойство имя="Top">110</VFP_свойство>
              <VFP_свойство имя="Width">275</VFP_свойство>
              <VFP_свойство имя="sourceIsVar" тип="L">.T.</VFP_свойство>
              <VFP_свойство имя="condfield" тип="C">balunit.mnemo</VFP_свойство>
              <VFP_свойство имя="condfieldrn" тип="C">balunit.rn</VFP_свойство>
              <VFP_свойство имя="enablewildcards" тип="L">.T.</VFP_свойство>
              <элемент>
                <VFP_имя>DicTable</VFP_имя>
                <дополнительно>
                  <отложенная_инициализация/>
                </дополнительно>
              </элемент>
            </элемент>
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Caption">Уровень аналитики КОСГУ:</VFP_свойство>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">145</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TSpinner</VFP_класс>
              <VFP_метод имя="InteractiveChange"><![CDATA[LParam oThis, oThisform
oThisform.Recalc()
]]></VFP_метод>
              <VFP_свойство имя="ControlSource">nAnLevelAlt</VFP_свойство>
              <VFP_свойство имя="Increment">1.00</VFP_свойство>
              <VFP_свойство имя="Inputmask">9</VFP_свойство>
              <VFP_свойство имя="KeyboardHighValue">5</VFP_свойство>
              <VFP_свойство имя="KeyboardLowValue">1</VFP_свойство>
              <VFP_свойство имя="Name">aLevelAlt</VFP_свойство>
              <VFP_свойство имя="SpinnerHighValue">5.00</VFP_свойство>
              <VFP_свойство имя="SpinnerLowValue">1.00</VFP_свойство>
              <VFP_свойство имя="Left">175</VFP_свойство>
              <VFP_свойство имя="Top">140</VFP_свойство>
              <VFP_свойство имя="Width">40</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TCheckBox</VFP_класс>
              <VFP_свойство имя="Left">245</VFP_свойство>
              <VFP_свойство имя="Top">145</VFP_свойство>
              <VFP_свойство имя="ControlSource">nChkAdAn3</VFP_свойство>
              <VFP_свойство имя="Name">ChkAdAn3</VFP_свойство>
              <VFP_свойство имя="Caption">Сворачивать КОСГУ до 3-х символов</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">175</VFP_свойство>
              <VFP_свойство имя="Caption">Код вида деятельности:</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TTextBox</VFP_класс>
              <VFP_свойство имя="Left">241</VFP_свойство>
              <VFP_свойство имя="Top">170</VFP_свойство>
              <VFP_свойство имя="Width">16</VFP_свойство>
              <VFP_свойство имя="InputMask">N</VFP_свойство>
              <VFP_свойство имя="ControlSource">cTxt18B1</VFP_свойство>
              <VFP_свойство имя="Name">Txt18B1</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TTextBox</VFP_класс>
              <VFP_свойство имя="Left">262</VFP_свойство>
              <VFP_свойство имя="Top">170</VFP_свойство>
              <VFP_свойство имя="Width">16</VFP_свойство>
              <VFP_свойство имя="InputMask">N</VFP_свойство>
              <VFP_свойство имя="ControlSource">cTxt18B2</VFP_свойство>
              <VFP_свойство имя="Name">Txt18B2</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TTextBox</VFP_класс>
              <VFP_свойство имя="Left">283</VFP_свойство>
              <VFP_свойство имя="Top">170</VFP_свойство>
              <VFP_свойство имя="Width">16</VFP_свойство>
              <VFP_свойство имя="InputMask">N</VFP_свойство>
              <VFP_свойство имя="ControlSource">cTxt18B3</VFP_свойство>
              <VFP_свойство имя="Name">Txt18B3</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TTextBox</VFP_класс>
              <VFP_свойство имя="Left">304</VFP_свойство>
              <VFP_свойство имя="Top">170</VFP_свойство>
              <VFP_свойство имя="Width">16</VFP_свойство>
              <VFP_свойство имя="InputMask">N</VFP_свойство>
              <VFP_свойство имя="ControlSource">cTxt18B4</VFP_свойство>
              <VFP_свойство имя="Name">Txt18B4</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TTextBox</VFP_класс>
              <VFP_свойство имя="Left">325</VFP_свойство>
              <VFP_свойство имя="Top">170</VFP_свойство>
              <VFP_свойство имя="Width">16</VFP_свойство>
              <VFP_свойство имя="InputMask">N</VFP_свойство>
              <VFP_свойство имя="ControlSource">cTxt18B5</VFP_свойство>
              <VFP_свойство имя="Name">Txt18B5</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TTextBox</VFP_класс>
              <VFP_свойство имя="Left">346</VFP_свойство>
              <VFP_свойство имя="Top">170</VFP_свойство>
              <VFP_свойство имя="Width">16</VFP_свойство>
              <VFP_свойство имя="InputMask">N</VFP_свойство>
              <VFP_свойство имя="ControlSource">cTxt18B6</VFP_свойство>
              <VFP_свойство имя="Name">Txt18B6</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TTextBox</VFP_класс>
              <VFP_свойство имя="Left">367</VFP_свойство>
              <VFP_свойство имя="Top">170</VFP_свойство>
              <VFP_свойство имя="Width">16</VFP_свойство>
              <VFP_свойство имя="InputMask">N</VFP_свойство>
              <VFP_свойство имя="ControlSource">cTxt18B7</VFP_свойство>
              <VFP_свойство имя="Name">Txt18B7</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TTextBox</VFP_класс>
              <VFP_свойство имя="Left">388</VFP_свойство>
              <VFP_свойство имя="Top">170</VFP_свойство>
              <VFP_свойство имя="Width">16</VFP_свойство>
              <VFP_свойство имя="InputMask">N</VFP_свойство>
              <VFP_свойство имя="ControlSource">cTxt18B8</VFP_свойство>
              <VFP_свойство имя="Name">Txt18B8</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TTextBox</VFP_класс>
              <VFP_свойство имя="Left">409</VFP_свойство>
              <VFP_свойство имя="Top">170</VFP_свойство>
              <VFP_свойство имя="Width">16</VFP_свойство>
              <VFP_свойство имя="InputMask">N</VFP_свойство>
              <VFP_свойство имя="ControlSource">cTxt18B9</VFP_свойство>
              <VFP_свойство имя="Name">Txt18B9</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TTextBox</VFP_класс>
              <VFP_свойство имя="Left">430</VFP_свойство>
              <VFP_свойство имя="Top">170</VFP_свойство>
              <VFP_свойство имя="Width">16</VFP_свойство>
              <VFP_свойство имя="InputMask">N</VFP_свойство>
              <VFP_свойство имя="ControlSource">cTxt18B10</VFP_свойство>
              <VFP_свойство имя="Name">Txt18B10</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">205</VFP_свойство>
              <VFP_свойство имя="Caption">Размерность плана счетов</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TComboBox</VFP_класс>
              <VFP_свойство имя="Left">330</VFP_свойство>
              <VFP_свойство имя="Name">Cmb_AccType</VFP_свойство>
              <VFP_свойство имя="Top">200</VFP_свойство>
              <VFP_свойство имя="Height">23</VFP_свойство>
              <VFP_свойство имя="Width">120</VFP_свойство>
              <VFP_свойство имя="BoundTo">2</VFP_свойство>
              <VFP_свойство имя="RowSourceType">1</VFP_свойство>
              <VFP_свойство имя="RowSource">26 символов,9 символов</VFP_свойство>
              <VFP_свойство имя="Style">2</VFP_свойство>
              <VFP_свойство имя="ControlSource">nAccType</VFP_свойство>
              <VFP_свойство имя="Delenabled">.F.</VFP_свойство>
              <VFP_свойство имя="NotEmpty">.T.</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TCheckBox</VFP_класс>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">230</VFP_свойство>
              <VFP_свойство имя="WordWrap">.T.</VFP_свойство>
              <VFP_свойство имя="Width">430</VFP_свойство>
              <VFP_свойство имя="PicturePosition">0</VFP_свойство>
              <VFP_свойство имя="ControlSource">nChk50222</VFP_свойство>
              <VFP_свойство имя="Name">Chk50222</VFP_свойство>
              <VFP_свойство имя="Caption">Учитывать кредитовые остатки по счетам 50222 для расчета показателей по принятым бюджетным обязательствам</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TCheckBox</VFP_класс>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">260</VFP_свойство>
              <VFP_свойство имя="WordWrap">.T.</VFP_свойство>
              <VFP_свойство имя="Width">430</VFP_свойство>
              <VFP_свойство имя="PicturePosition">0</VFP_свойство>
              <VFP_свойство имя="ControlSource">nChk31_33</VFP_свойство>
              <VFP_свойство имя="Name">Chk31_33</VFP_свойство>
              <VFP_свойство имя="Caption">Исключать расходные бюджетные ассигнования по КВР, отличным от 31Х и 33Х, при расчете показателей раздела 3</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TCheckBox</VFP_класс>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">290</VFP_свойство>
              <VFP_свойство имя="WordWrap">.T.</VFP_свойство>
              <VFP_свойство имя="Width">430</VFP_свойство>
              <VFP_свойство имя="PicturePosition">0</VFP_свойство>
              <VFP_свойство имя="ControlSource">nChkExclBA</VFP_свойство>
              <VFP_свойство имя="Name">ChkExclBA</VFP_свойство>
              <VFP_свойство имя="Caption">Исключать бюджетные ассигнования из утвержденных бюджетных назначений при расчете показателей раздела 3</VFP_свойство>
              <VFP_метод имя="ValueChanged"><![CDATA[LParam oThis, oThisForm
oThis.Parent.Chk31_33.Enabled = oThis.Value = 0
]]></VFP_метод>
            </элемент>
            <элемент>
              <VFP_класс>TCheckBox</VFP_класс>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">320</VFP_свойство>
              <VFP_свойство имя="WordWrap">.T.</VFP_свойство>
              <VFP_свойство имя="Width">430</VFP_свойство>
              <VFP_свойство имя="PicturePosition">0</VFP_свойство>
              <VFP_свойство имя="ControlSource">nChkExclNBN</VFP_свойство>
              <VFP_свойство имя="Name">ChkExclNBN</VFP_свойство>
              <VFP_свойство имя="Caption">Исключать нераспределенные бюджетные назначения при расчете показателей раздела 3</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">350</VFP_свойство>
              <VFP_свойство имя="Caption">Предельный размер неисполненных обязательств</VFP_свойство>
            </элемент>            
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">363</VFP_свойство>
              <VFP_свойство имя="Caption">(раздел 1):</VFP_свойство>
            </элемент>            
            <элемент>
              <VFP_класс>TTextSum</VFP_класс>
              <VFP_свойство имя="ControlSource">nSumLimit1</VFP_свойство>
              <VFP_свойство имя="Left">300</VFP_свойство>
              <VFP_свойство имя="Name">SumLimit1</VFP_свойство>
              <VFP_свойство имя="Top">350</VFP_свойство>
              <VFP_свойство имя="Width">150</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">380</VFP_свойство>
              <VFP_свойство имя="Caption">Предельный размер неисполненных денежных</VFP_свойство>
            </элемент>            
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">393</VFP_свойство>
              <VFP_свойство имя="Caption">обязательств (раздел 2):</VFP_свойство>
            </элемент>            
            <элемент>
              <VFP_класс>TTextSum</VFP_класс>
              <VFP_свойство имя="ControlSource">nSumLimit2</VFP_свойство>
              <VFP_свойство имя="Left">300</VFP_свойство>
              <VFP_свойство имя="Name">SumLimit2</VFP_свойство>
              <VFP_свойство имя="Top">380</VFP_свойство>
              <VFP_свойство имя="Width">150</VFP_свойство>
            </элемент>
          </элемент>
          <элемент>
            <VFP_имя>Page2</VFP_имя>
            <VFP_свойство имя="Caption">Счета</VFP_свойство>
            <VFP_свойство имя="FontName">MS Sans Serif</VFP_свойство>
            <VFP_свойство имя="FontSize">8</VFP_свойство>                  
            <элемент>
              <VFP_класс>T3dShape</VFP_класс>
              <VFP_свойство имя="Height">45</VFP_свойство>
              <VFP_свойство имя="Left">10</VFP_свойство>
              <VFP_свойство имя="Top">10</VFP_свойство>
              <VFP_свойство имя="Width">450</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Caption">Группировка</VFP_свойство>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">5</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">25</VFP_свойство>
              <VFP_свойство имя="Caption">Группировать по символам номера счета:</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TDicHist</VFP_класс>
              <VFP_метод имя="AddUpdate"><![CDATA[LParam oThis, oThisform  
=CurOpen("ComDicBS;ComDicTp")
If !Empty(oThis.Value) and Seek(oThis.Value, "ComDicBS", "RN") and Seek(ComDicBS.ComDicTp_RN, "ComDicTp", "RN") and ComDicTp.Num # oThis.AddInfo
  =ExclMes("Выбранная позиция относится к некорректному разделу!")  
  oThis.Clear()  
EndIf
]]></VFP_метод>
              <VFP_свойство имя="Name">GroupAcc</VFP_свойство>
              <VFP_свойство имя="Left">260</VFP_свойство>
              <VFP_свойство имя="Top">20</VFP_свойство>
              <VFP_свойство имя="Width">190</VFP_свойство>
              <VFP_свойство имя="AreaName" тип="C">ComDicBs</VFP_свойство>
              <VFP_свойство имя="DictName" тип="C">ComDic_mc</VFP_свойство>
              <VFP_свойство имя="RetField" тип="C">Code</VFP_свойство>
              <VFP_свойство имя="HistoryName" тип="C">H_Group175_217N_2021</VFP_свойство>
              <VFP_свойство имя="sourceIsVar" тип="L">.T.</VFP_свойство>
              <VFP_свойство имя="condfield" тип="C">ComDicBs.code</VFP_свойство>
              <VFP_свойство имя="condfieldrn" тип="C">ComDicBs.ComDicBs_RN</VFP_свойство>
              <VFP_свойство имя="enablewildcards" тип="L">.T.</VFP_свойство>
              <VFP_свойство имя="addinfo" тип="N">120</VFP_свойство>
              <VFP_свойство имя="runfromexe" тип="L">.T.</VFP_свойство>
              <элемент>
                <VFP_имя>DicTable</VFP_имя>
                <дополнительно>
                  <отложенная_инициализация/>
                </дополнительно>
              </элемент>
            </элемент>
            <элемент>
              <VFP_класс>T3dShape</VFP_класс>
              <VFP_свойство имя="Height">75</VFP_свойство>
              <VFP_свойство имя="Left">10</VFP_свойство>
              <VFP_свойство имя="Top">65</VFP_свойство>
              <VFP_свойство имя="Width">450</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Caption">Исполнение обязательств</VFP_свойство>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">60</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">80</VFP_свойство>
              <VFP_свойство имя="Caption">Через финансовые органы:</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>S_Account</VFP_класс>
              <VFP_свойство имя="Left">220</VFP_свойство>
              <VFP_свойство имя="Width">230</VFP_свойство>
              <VFP_свойство имя="Name">DicAccountIFO</VFP_свойство>
              <VFP_свойство имя="Top">75</VFP_свойство>
              <VFP_свойство имя="HistoryName" тип="C">H_ACCIFO175_217N_2021</VFP_свойство>
              <VFP_свойство имя="sourceIsVar" тип="L">.T.</VFP_свойство>
              <VFP_свойство имя="condfield" тип="C">AccBase.Account</VFP_свойство>
              <VFP_свойство имя="condfieldrn" тип="C">AccBase.RN</VFP_свойство>
              <VFP_свойство имя="enablewildcards" тип="L">.T.</VFP_свойство>
              <VFP_свойство имя="runfromexe" тип="L">.T.</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">110</VFP_свойство>
              <VFP_свойство имя="Caption">Через банковские счета:</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>S_Account</VFP_класс>
              <VFP_свойство имя="Left">220</VFP_свойство>
              <VFP_свойство имя="Width">230</VFP_свойство>
              <VFP_свойство имя="Name">DicAccountIBS</VFP_свойство>
              <VFP_свойство имя="Top">105</VFP_свойство>
              <VFP_свойство имя="HistoryName" тип="C">H_ACCIBS175_217N_2021</VFP_свойство>
              <VFP_свойство имя="sourceIsVar" тип="L">.T.</VFP_свойство>
              <VFP_свойство имя="condfield" тип="C">AccBase.Account</VFP_свойство>
              <VFP_свойство имя="condfieldrn" тип="C">AccBase.RN</VFP_свойство>
              <VFP_свойство имя="enablewildcards" тип="L">.T.</VFP_свойство>
              <VFP_свойство имя="runfromexe" тип="L">.T.</VFP_свойство>
            </элемент>
          </элемент>
          <элемент>
            <VFP_имя>Page3</VFP_имя>
            <VFP_свойство имя="Caption">Параметры выгрузки</VFP_свойство>
            <VFP_свойство имя="FontName">MS Sans Serif</VFP_свойство>
            <VFP_свойство имя="FontSize">8</VFP_свойство>                  
            <элемент>
              <VFP_класс>T3dShape</VFP_класс>
              <VFP_свойство имя="Height">135</VFP_свойство>
              <VFP_свойство имя="Left">10</VFP_свойство>
              <VFP_свойство имя="Top">10</VFP_свойство>
              <VFP_свойство имя="Width">450</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">5</VFP_свойство>
              <VFP_свойство имя="Caption">Параметры</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Caption">Каталог:</VFP_свойство>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">25</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TDirSelect</VFP_класс>
              <VFP_свойство имя="Name">Catalog</VFP_свойство>
              <VFP_свойство имя="Left">80</VFP_свойство>
              <VFP_свойство имя="Top">20</VFP_свойство>
              <VFP_свойство имя="Width">370</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Caption">Исполнитель:</VFP_свойство>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">55</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TDicHist</VFP_класс>
              <VFP_метод имя="AddUpdate"><![CDATA[LParam oThis, oThisform
= CurOpen("OrgBase,Person")

Local oPage
oPage = oThis.Parent

If !Empty(oPage.dicIsp.Value)
  = Seek(oPage.dicIsp.Value, "OrgBase", "RN")
  If OrgBase.type # '2'
    ErrMes("Выбранный контрагент не является физическим лицом.")
    oPage.dicIsp.Clear()
  Else    
    = Seek(oPage.dicIsp.Value, "Person", "RN")
    oPage.fldIspName.Value = Alltrim(Person.SURNAME) + " " + Left(Alltrim(Person.FIRSTNAME), 1) + "." + Left(Alltrim(Person.SECONDNAME), 1) + "."
  EndIf
EndIf
]]></VFP_метод>
              <VFP_свойство имя="Name">dicIsp</VFP_свойство>
              <VFP_свойство имя="Left">200</VFP_свойство>
              <VFP_свойство имя="Top">50</VFP_свойство>
              <VFP_свойство имя="Width">250</VFP_свойство>
              <VFP_свойство имя="AreaName" тип="C">OrgBase</VFP_свойство>
              <VFP_свойство имя="DictName" тип="C">Agnt_bms</VFP_свойство>
              <VFP_свойство имя="RetField" тип="C">rmnemo_org</VFP_свойство>
              <VFP_свойство имя="HistoryName" тип="C">H_AgentFIO175_217N_2021</VFP_свойство>
              <VFP_свойство имя="filter">OrgBase.Type='2'</VFP_свойство>
              <элемент>
                <VFP_имя>DicTable</VFP_имя>
                <дополнительно>
                  <отложенная_инициализация/>
                </дополнительно>
              </элемент>
            </элемент>
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Caption">ФИО:</VFP_свойство>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">85</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TTextBox</VFP_класс>
              <VFP_свойство имя="Left">200</VFP_свойство>
              <VFP_свойство имя="Top">80</VFP_свойство>
              <VFP_свойство имя="Width">250</VFP_свойство>
              <VFP_свойство имя="ControlSource">cIspName</VFP_свойство>
              <VFP_свойство имя="Name">fldIspName</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TLabel</VFP_класс>
              <VFP_свойство имя="Caption">Телефон:</VFP_свойство>
              <VFP_свойство имя="Left">20</VFP_свойство>
              <VFP_свойство имя="Top">115</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_класс>TTextBox</VFP_класс>
              <VFP_свойство имя="Left">200</VFP_свойство>
              <VFP_свойство имя="Top">110</VFP_свойство>
              <VFP_свойство имя="Width">250</VFP_свойство>
              <VFP_свойство имя="ControlSource">cIspTel</VFP_свойство>
              <VFP_свойство имя="Name">fldIspTel</VFP_свойство>
            </элемент>
          </элемент>
        </элемент>
    </описание>
  </форма>
</Модуль>
