<?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">
  <интерфейс>
    <отчет>
      <наименование>Форма 0503164-191н_ред13н_2020</наименование>
      <код_раздела>Reports5n</код_раздела>
      <номер_код>f0503164_13n_2020</номер_код>
      <шаблон>
        <тип>MSE</тип>
        <мнемокод>ar_form0503164_13n_2020</мнемокод>
        <файл>Форма0503164_191н_ред13н_2020.xlt</файл>
      </шаблон>
    </отчет>
  </интерфейс>
  <отчет>
    <реализует>f0503164_13n_2020</реализует>
    <дополнительно>
      <запомнить_переменные>
        <список_переменных>dDateBegin;dDateEnd;cOrg;cBalUnitsB;nProcentFewer;nProcentOver;nSumNeisp;nChkDeltaMin;nChkLBO;nChkNoCalcNBN;nChk31_33;nChkNoCalcDBD;cAccNCD;cAccIBSD;cComDicD;cAccNCR;cAccIBSR;cComDicR;cAccNCF;cComDicF;cUnlPath;cIST;cDicIsp;cIspName;cIspTel</список_переменных>
        <мемофайл>ar_form0503164_191n_13n_2020;ar_form0503164_191n_244n_2019</мемофайл>
      </запомнить_переменные>
    </дополнительно>
    <переменные>
      <переменная>
        <имя>dDateBegin</имя>
        <начальное_значение>oSystem.DateBegin</начальное_значение>
        <!--Дата начала формирования-->
      </переменная>
      <переменная>
        <имя>dDateEnd</имя>
        <начальное_значение>oSystem.DateEnd</начальное_значение>
        <!--Дата окончания формирования-->
      </переменная>
      <переменная>
        <имя>cOrg</имя>
        <начальное_значение>""</начальное_значение>
        <!--Бюждетное учреждение-->
      </переменная>
      <переменная>
        <имя>nAnLevel</имя>
        <начальное_значение>5</начальное_значение>
        <!--Уровень аналитики КОСГУ-->
      </переменная>
      <переменная>
        <имя>nProcentFewer</имя>
        <начальное_значение>0</начальное_значение>
        <!--Процент исполнения бюджета с-->
      </переменная>
      <переменная>
        <имя>nProcentOver</имя>
        <начальное_значение>0</начальное_значение>
        <!--Процент исполнения бюджета по-->
      </переменная>
      <переменная>
        <имя>nSumNeisp</имя>
        <начальное_значение>0</начальное_значение>
        <!--Сумма неисполненных назначений-->
      </переменная>
      <переменная>
        <имя>nChkDeltaMin</имя>
        <начальное_значение>1</начальное_значение>
        <!--Гр.7 = Гр.5 - Гр.3-->
      </переменная>
      <переменная>
        <имя>nChkLBO</имя>
        <начальное_значение>1</начальное_значение>
        <!--Включать ЛБО в расчет утвержденных бюджетных назначений по расходам-->
      </переменная>
      <переменная>
        <имя>nChkNoCalcNBN</имя>
        <начальное_значение>0</начальное_значение>
        <!--Не рассчитывать показатели по нераспределенным бюджетным назначениям-->
      </переменная>
      <переменная>
        <имя>nChk31_33</имя>
        <начальное_значение>0</начальное_значение>
        <!--Исключать расходные БА по КВР, отличным от 31Х и 33Х-->
      </переменная>
      <переменная>
        <имя>nChkNoCalcDBD</имя>
        <начальное_значение>0</начальное_значение>
        <!--Не рассчитывать доведенные бюджетные данные (графа 4)-->
      </переменная>
      <переменная>
        <имя>cWhereKontragent</имя>
        <начальное_значение>""</начальное_значение>
        <!--Условие по контрагентам-->
      </переменная>
      <переменная>
        <имя>cAccNCD</имя>
        <начальное_значение>""</начальное_значение>
        <!--Счета для некассовых операций (доходы)-->
      </переменная>
      <переменная>
        <имя>cWhereAccNCD</имя>
        <начальное_значение>""</начальное_значение>
      </переменная>
      <переменная>
        <имя>cAccIBSD</имя>
        <начальное_значение>"|??????????????????з17*"</начальное_значение>
        <!--Исполнение через банковские счета (доходы)-->
      </переменная>
      <переменная>
        <имя>cWhereAccIBSD</имя>
        <начальное_значение>""</начальное_значение>
      </переменная>          
      <переменная>
        <имя>cComDicD</имя>
        <начальное_значение>""</начальное_значение>
        <!--Группировка доходов-->
      </переменная>
      <переменная>
        <имя>cAccNCR</имя>
        <начальное_значение>""</начальное_значение>
        <!--Счета для некассовых операций (расходы)-->
      </переменная>
      <переменная>
        <имя>cWhereAccNCR</имя>
        <начальное_значение>""</начальное_значение>
      </переменная>
      <переменная>
        <имя>cAccIBSR</имя>
        <начальное_значение>"|??????????????????з18*"</начальное_значение>
        <!--Исполнение через банковские счета (расходы)-->
      </переменная>
      <переменная>
        <имя>cWhereAccIBSR</имя>
        <начальное_значение>""</начальное_значение>
      </переменная>          
      <переменная>
         <имя>cComDicR</имя>
         <начальное_значение>""</начальное_значение>
         <!--Группировка расходов-->
      </переменная>
      <переменная>
        <имя>cAccNCF</имя>
        <начальное_значение>""</начальное_значение>
        <!--Счета для некассовых операций (источники)-->
      </переменная>
      <переменная>
        <имя>cWhereAccNCF</имя>
        <начальное_значение>""</начальное_значение>
      </переменная>
      <переменная>
         <имя>cComDicF</имя>
         <начальное_значение>""</начальное_значение>
         <!--Группировка дефицитов-->
      </переменная>
      <переменная>
         <имя>cGroupMaskD</имя>
         <начальное_значение>""</начальное_значение>
         <!--Маска для группировки доходов-->
      </переменная>
      <переменная>
         <имя>cGroupMaskR</имя>
         <начальное_значение>""</начальное_значение>
         <!--Маска для группировки расходов-->
      </переменная>
      <переменная>
         <имя>cGroupMaskF</имя>
         <начальное_значение>""</начальное_значение>
         <!--Маска для группировки дефицитов-->
      </переменная>
      <переменная>
        <имя>cBalUnitsB</имя>
        <начальное_значение>""</начальное_значение>
        <!--Бал. единицы-->
      </переменная>
      <переменная>
        <имя>cWhereBalUnits</имя>
        <начальное_значение>""</начальное_значение>
        <!--Условие по балансовым единицам-->
      </переменная>
      <переменная>
         <имя>nItD3</имя>
         <начальное_значение>0.00</начальное_значение>
         <!--итог доходов3-->
       </переменная>
       <переменная>
         <имя>nItD5</имя>
         <начальное_значение>0.00</начальное_значение>
         <!--итог доходов4-->
       </переменная>
       <переменная>
         <имя>nItR3</имя>
         <начальное_значение>0.00</начальное_значение>
         <!--итог расходов3-->
       </переменная>
       <переменная>
         <имя>nItR4</имя>
         <начальное_значение>0.00</начальное_значение>
         <!--итог расходов3-->
       </переменная>
       <переменная>
         <имя>nItR5</имя>
         <начальное_значение>0.00</начальное_значение>
         <!--итог расходов4-->
        </переменная>
      <переменная>
         <имя>nItF31</имя>
         <начальное_значение>0.00</начальное_значение>
         <!--итог дефицитов3 (внутреннее финансирование)-->
       </переменная>
      <переменная>
         <имя>nItF51</имя>
         <начальное_значение>0.00</начальное_значение>
         <!--итог дефицитов4 (внутреннее финансирование)-->
       </переменная>
       <переменная>
         <имя>nItF32</имя>
         <начальное_значение>0.00</начальное_значение>
         <!--итог дефицитов3 (внешнее финансирование)-->
       </переменная>
       <переменная>
         <имя>nItF52</имя>
         <начальное_значение>0.00</начальное_значение>
         <!--итог дефицитов4 (внешнее финансирование)-->
       </переменная>
       <переменная>
         <имя>nF500</имя>
         <начальное_значение>0.00</начальное_значение>
         <!--Вспомогательный показатель для расчета строки 500-->
       </переменная>
       <переменная>
        <имя>cUnlPath</имя>
        <начальное_значение>""</начальное_значение>
        <!--Каталог выгрузки-->
       </переменная>
       <переменная>
        <имя>cFileName</имя>
        <начальное_значение>""</начальное_значение>
        <!--Файл выгрузки-->
      </переменная>
      <переменная>
        <имя>cIST</имя>
        <начальное_значение>""</начальное_значение>
        <!--ИСТ-->
      </переменная>
      <переменная>
        <имя>cDicIsp</имя>
        <начальное_значение>""</начальное_значение>
        <!--Исполнитель-->
      </переменная>
      <переменная>
        <имя>cIspName</имя>
        <начальное_значение>""</начальное_значение>
        <!--ФИО исполнителя-->
      </переменная>
      <переменная>
        <имя>cIspTel</имя>
        <начальное_значение>""</начальное_значение>
        <!--Телефон исполнителя-->
      </переменная>
      <переменная>
        <имя>RepG151</имя>
        <начальное_значение>CreateObject("form0503buxrepd")</начальное_значение>
      </переменная>
      <переменная>
        <имя>dReportDate</имя>
        <начальное_значение>Date(2020,09,30)</начальное_значение>
      </переменная>
      <переменная>
        <имя>lNoError</имя>
        <начальное_значение>.T.</начальное_значение>
      </переменная>
    </переменные>
    <запуск_формы>
      <ид>f_0503164_191n_13n_2020</ид>
    </запуск_формы>
    <вычисление>
      <сообщение>Ждите, идет выборка данных ...</сообщение>
      <FPC_><![CDATA[*[VFP]
            ]]></FPC_>
    </вычисление>
    <печать>
      <!--Печать отчета--><MSE>
        <!--Печать в MS Excel-->
        <FPC_><![CDATA[*[VFP]
*ON ERROR

Private cJoinAn, cJoinAn_D, cJoinAn_K, cOrgPO, glBK
Local ARRAY arBP[1]

NoError = RepG151.GetComRepPrm151("0503164", m.lNoError, m.dDateBegin, m.dDateEnd, m.cWhereAccNCD, m.cWhereAccNCR, m.cWhereAccNCF)

&&Отбор счетов по контрагенту 
Store "" To cJoinAn, cJoinAn_D, cJoinAn_K, glBK
Store "And .F." To cOrgPO

If m.lNoError
  If Empty(m.cWhereKontragent)
    Store "" To cOrgPO
  Else
    * Глава по БК
    Select DIST fBudMG.Rasp_Code ;
      From OrgBase ;
        Inner Join fBudMG On OrgBase.RN = fBudMG.OrgBase_RN ;
      Where &cWhereKontragent ;
      Into Array arBP
    *
    If _Tally = 1 And !Empty(arBP[1])
      glBK = AllTrim(arBP[1])
    EndIf 

    * Отбор проводок по БУ
    Select AccSpec.RN ;
      From AccSpec ;
        Inner Join OrgBase On AccSpec.RN_TOrg = OrgBase.RN ;
      Where &cWhereKontragent ;
      Into Cursor crsAccSpRN

    If _Tally # 0
      Index On RN Tag RN
      cJoinAn   = "Left Join crsAccSpRN A1 On S.RN_AC_A1 = A1.RN " ;
                + "Left Join crsAccSpRN A2 On S.RN_AC_A2 = A2.RN " ;
                + "Left Join crsAccSpRN A3 On S.RN_AC_A3 = A3.RN " ;
                + "Left Join crsAccSpRN A4 On S.RN_AC_A4 = A4.RN " ;
                + "Left Join crsAccSpRN A5 On S.RN_AC_A5 = A5.RN "
      cJoinAn_D = StrTran(m.cJoinAn, "_AC_", "_DB_")
      cJoinAn_K = StrTran(m.cJoinAn, "_AC_", "_KR_")
      cOrgPO    = "And (!IsNull(A1.RN) Or !IsNull(A2.RN) Or !IsNull(A3.RN) Or !IsNull(A4.RN) Or !IsNull(A5.RN))"
    EndIf
  EndIf
EndIf

= CurOpen("AccSpec,BKlsDoh")

* Коды расходов из ШФ
Select F.RN, ;
       Nvl(bE.CODE, Space(8)) As VidR, ;
       PadR(Iif(Empty(?m.glBK), AllTrim(F.RASP_CODE), ?m.glBK) + ;
       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 Code ;
  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 curSbF

Index On RN Tag RN

&& доходы
= ProcD()

&& расходы
= ProcR()

&& дефициты
= ProcF()

&& Вспомогательный показатель для расчета строки 500 (скрытый статический)
= Proc500()

= CurClose("crsAccSpRN;curSbF")

Local i, oPrint
oPrint = objCaller.objExcelRep
oPrint.PrintRange("Header")

* 1. Доходы бюджета
Select crsSpecD164
i = 0
Scan
   i = m.i + 1
   * Печать строки
   If m.i > 1
     oPrint.InsertRange()
   EndIf
   oPrint.PrintRange("Spec164D")
EndScan

* 2. Расходы бюджета
Select crsSpecR164
i = 0
Scan
   i = m.i + 1
   * Печать строки
   If m.i > 1
     oPrint.InsertRange()
   EndIf
   oPrint.PrintRange("Spec164R")
EndScan

* 3. Источники внутреннего финансирования дефицита бюджета
Select crsSpecF164
i = 0
Scan For Kls_Type = 1
   i = m.i + 1
   * Печать строки
   If m.i > 1
     oPrint.InsertRange()
   EndIf
   oPrint.PrintRange("Spec164F1")
EndScan

* 3. Источники внешнего финансирования дефицита бюджета
i = 0
Scan For Kls_Type = 2
   i = m.i + 1
   * Печать строки
   If m.i > 1
     oPrint.InsertRange()
   EndIf
   oPrint.PrintRange("Spec164F2")
EndScan

= MakeFileName()

oPrint.PrintRange("Footer")

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

oPrint = NULL

CurClose("crsSpec164D;crsSpec164R;crsSpec164F")

Return


*********************************************************************
Procedure ProcD   && Доходы
*********************************************************************
Local nKlsType

&& Утвержденные бюджетные назначения
Select AccBase.RN ;
  From AccBase ;
    Left Join BalUnit On AccBase.RN_BalUnit = BalUnit.RN ;
  Where SubStr(AccBase.Account, 19, 4) = "5041" &cWhereBalUnits ;
  Into CURSOR crsAcc5041

Select S.RN_DB As RN_ACC, 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, ;
       0 As Kls_Type, ;
       -S.Sum_Equal As Sum, Space(20) as NameS ;
  From EopBase B ;
    Inner Join EopSpec    S ON B.RN = S.Master_RN ;
    Inner Join crsAcc5041 A ON S.RN_DB = A.RN ;
    &cJoinAn_D ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO ;
UNION ALL ;
Select S.RN_KR As RN_ACC, 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, ;
       0 As Kls_Type, ;
       S.Sum_Equal As Sum, Space(20) as NameS ;
  From EopBase B ;
    Inner Join EopSpec    S ON B.RN = S.Master_RN ;
    Inner Join crsAcc5041 A ON S.RN_KR = A.RN ;
    &cJoinAn_K ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO ;
  INTO CURSOR crs3_ READWRITE

Replace ALL NameS    With GetBKlsDoh(@nKlsType), ;
            Kls_Type With m.nKlsType

Select NameS, SUM(Sum) as Sum ;
  From crs3_ ;
  Where Kls_Type = 0 And !Empty(NameS) ;
  Group By 1 ;
  Into CURSOR crs3

CurClose("crs3_;crsAcc5041")

&& Исполнено
Select AccBase.RN ;
  From AccBase ;
    Left Join BalUnit On AccBase.RN_BalUnit = BalUnit.RN ;
  Where SubStr(AccBase.Account, 19, 5) = "21002" &cWhereBalUnits ;
  Into CURSOR crsAcc21002

If Empty(m.cWhereAccNCD)
  cWhereAccNCD = ".F."
EndIf
If Empty(m.cWhereAccIBSD)
  cWhereAccIBSD = ".F."
EndIf

Select AccBase.RN ;
  From AccBase ;
    Left Join BalUnit On AccBase.RN_BalUnit = BalUnit.RN ;
  Where (&cWhereAccIBSD. Or &cWhereAccNCD.) &cWhereBalUnits ;
  Into CURSOR crsAcc2

Select S.RN_DB As RN_ACC, 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, ;
       0 As Kls_Type, ;
       S.Sum_Equal As Sum, Space(20) as NameS ;
  From EopBase B ;
    Inner Join EopSpec     S ON B.RN = S.Master_RN ;
    Inner Join crsAcc21002 A ON S.RN_DB = A.RN ;
    Left  Join AccBase     K ON S.RN_KR = K.RN ;
    &cJoinAn_D ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO And SubStr(K.Account, 19, 4) # "4013" ;
UNION ALL ;
Select S.RN_KR As RN_ACC, 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, ;
       0 As Kls_Type, ;
       -S.Sum_Equal As Sum, Space(20) as NameS ;
  From EopBase B ;
    Inner Join EopSpec     S ON B.RN = S.Master_RN ;
    Inner Join crsAcc21002 A ON S.RN_KR = A.RN ;
    Left  Join AccBase     K ON S.RN_DB = K.RN ;
    &cJoinAn_K ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO And SubStr(K.Account, 19, 4) # "4013" ;
UNION ALL ;
Select S.RN_DB As RN_ACC, 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, ;
       0 As Kls_Type, ;
       S.Sum_Equal As Sum, Space(20) as NameS ;
  From EopBase B ;
    Inner Join EopSpec S ON B.RN = S.Master_RN ;
    Inner Join crsAcc2 A ON S.RN_DB = A.RN ;
    &cJoinAn_D ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO ;
UNION ALL ;
Select S.RN_KR As RN_ACC, 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, ;
       0 As Kls_Type, ;
       -S.Sum_Equal As Sum, Space(20) as NameS ;
  From EopBase B ;
    Inner Join EopSpec S ON B.RN = S.Master_RN ;
    Inner Join crsAcc2 A ON S.RN_KR = A.RN ;
    &cJoinAn_K ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO ;
  INTO CURSOR crs5_ READWRITE

Replace ALL NameS    With GetBKlsDoh(@nKlsType), ;
            Kls_Type With m.nKlsType

Select NameS, SUM(Sum) as Sum ;
  From crs5_ ;
  Where Kls_Type = 0 And !Empty(NameS) ;
  Group By 1 ;
  Into CURSOR crs5

CurClose("crs5_;crsAcc21002;crsAcc2")

* Объединяем данные по доходам
Select NameS From crs3 UNION ALL Select NameS From crs5 Into CURSOR crsNameS_
Select DISTINCT NameS From crsNameS_ Order By 1 Into CURSOR crsNameS
Use In crsNameS_

Select S.NameS, Nvl(S3.Sum, 000000000000000.00) As Col3, Nvl(S5.Sum, 000000000000000.00) As Col5 ;
  From crsNameS S ;
    Left Join crs3 As S3 On S.NameS = S3.NameS ;
    Left Join crs5 As S5 On S.NameS = S5.NameS ;
 Into CURSOR crsSpecD164 READWRITE

CurClose("crsNameS;crs3;crs5")

Delete For Col3 = 0 And Col5 = 0 In crsSpecD164

* Группировка по БК
If !Empty(m.cGroupMaskD)
  Local ni, n1, n2, cSub, cS, i, cNameS, nLenS
  Local ARRAY arrGrpMask(1, 2)
  cSub = m.cGroupMaskD
  ni   = 0
  n1   = Val(m.cSub)
  n2   = 0
  cS   = LTrim(Str(m.n1, 15))
  cSub = SubStr(m.cSub, Len(m.cS) + 2)

  DO While !Empty(m.cSub)
    If m.n2 = 0
      n2   = Val(m.cSub)
      cS   = LTrim(Str(m.n2, 15))
      cSub = SubStr(m.cSub, Len(m.cS) + 2)
      ni   = m.ni + 1
      Dimension arrGrpMask(m.ni, 2)
      arrGrpMask(m.ni, 1) = m.n1
      arrGrpMask(m.ni, 2) = m.n2
    Else
      n1   = Val(m.cSub)
      cS   = LTrim(Str(m.n1, 15))
      cSub = SubStr(m.cSub, Len(m.cS) + 2)
      n2   = 0
    EndIf
  EndDO

  Select crsSpecD164
  Scan
    nLenS  = Len(RTrim(NameS))
    cNameS = Replicate("0", m.nLenS)
    For m.i = 1 To m.ni
      If arrGrpMask(m.i,1) <= m.nLenS
        cNameS = Iif(arrGrpMask(m.i,1) = 1, "", Left(m.cNameS, arrGrpMask(m.i,1) - 1)) ;
               + SubStr(NameS, arrGrpMask(m.i,1), arrGrpMask(m.i,2) - arrGrpMask(m.i,1) + 1) ;
               + SubStr(m.cNameS, arrGrpMask(m.i,2) + 1)
      EndIf
    Next
    Replace NameS With m.cNameS
  EndScan

  Select NameS, Sum(Col3) As Col3, Sum(Col5) As Col5 ;
    From crsSpecD164 ;
    Group By 1 ;
    Into CURSOR crsSpecD164 READWRITE
EndIf

* Суммы "Доходы бюджета, всего"
Local ARRAY arrItog[1]

Select Sum(Col3) As Sum3, Sum(Col5) As Sum5 From crsSpecD164 Into ARRAY arrItog

If _Tally # 0
  nItD3 = arrItog[1]
  nItD5 = arrItog[2]
EndIf

* Процент исполнения бюджета
Select crsSpecD164
Do Case
  Case m.nProcentFewer > 0 And m.nProcentOver > 0
    Delete For Col3 = 0 Or Between(Round(Col5/Col3*100, 2), m.nProcentFewer, m.nProcentOver)
  Case m.nProcentFewer > 0
    Delete For Col3 = 0 Or Round(Col5/Col3*100, 2) => m.nProcentFewer
  Case m.nProcentOver > 0
    Delete For Col3 = 0 Or Round(Col5/Col3*100, 2) <= m.nProcentOver
EndCase

ENDPROC


*********************************************************************
Procedure ProcR   && Расходы
*********************************************************************
&& Утвержденные бюджетные назначения
Select AccBase.RN, SubStr(AccBase.Account, 19, 3) = "503" As LVidR ;
  From AccBase ;
    Left Join BalUnit On AccBase.RN_BalUnit = BalUnit.RN ;
  Where (InList(SubStr(AccBase.Account, 19, 5), "50311", "50315") Or ?m.nChkLBO = 1 And InList(SubStr(AccBase.Account, 19, 5), "50111", "50115")) &cWhereBalUnits ;
  Into CURSOR crsAcc50311

Select AccBase.RN, SubStr(AccBase.Account, 19, 3) = "503" As LVidR ;
  From AccBase ;
    Left Join BalUnit On AccBase.RN_BalUnit = BalUnit.RN ;
  Where (SubStr(AccBase.Account, 19, 5) = "50314" Or ?m.nChkLBO = 1 And SubStr(AccBase.Account, 19, 5) = "50114") &cWhereBalUnits ;
  Into CURSOR crsAcc50314

Select S.RN_DB As RN_ACC, 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, ;
       S.Sum_Equal As Sum, A.LVidR, Space(33) as NameS ;
  From EopBase B ;
    Inner Join EopSpec     S ON B.RN = S.Master_RN ;
    Inner Join crsAcc50311 A ON S.RN_DB = A.RN ;
    &cJoinAn_D ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO ;
UNION ALL ;
Select S.RN_KR As RN_ACC, 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, ;
       -S.Sum_Equal As Sum, A.LVidR, Space(33) as NameS ;
  From EopBase B ;
    Inner Join EopSpec     S ON B.RN = S.Master_RN ;
    Inner Join crsAcc50314 A ON S.RN_KR = A.RN ;
    &cJoinAn_K ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO ;
  INTO CURSOR crs3_ READWRITE

CurClose("crsAcc50311;crsAcc50314")

If m.nChkNoCalcNBN = 1   && выставлен чек "Не рассчитывать показатели по нераспределенным бюджетным назначениям"
  Select AccBase.RN, SubStr(AccBase.Account, 19, 3) = "503" As LVidR ;
    From AccBase ;
      Left Join BalUnit On AccBase.RN_BalUnit = BalUnit.RN ;
    Where (SubStr(AccBase.Account, 19, 5) = "50312" Or ?m.nChkLBO = 1 And SubStr(AccBase.Account, 19, 5) = "50112") &cWhereBalUnits ;
    Into CURSOR crsAcc50312

  Select * From crs3_ ;
  UNION ALL ;
  Select B.RN_ACCOUNT As RN_ACC, 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, ;
         S.SUMM_DB_EQUAL - S.SUMM_KR_EQUAL As Sum, A.LVidR, Space(33) as NameS ;
    From AcRest B ;
      Inner Join crsAcc50312 A ON B.RN_ACCOUNT = A.RN ;
      Inner Join AcAnRest    S ON B.RN = S.Master_RN ;
      &cJoinAn ;
    Where B.DATE_REST = ?m.dDateBegin &cOrgPO ;
  UNION ALL ;
  Select S.RN_DB As RN_ACC, 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, ;
         S.Sum_Equal As Sum, A.LVidR, Space(33) as NameS ;
    From EopBase B ;
      Inner Join EopSpec     S ON B.RN = S.Master_RN ;
      Inner Join crsAcc50312 A ON S.RN_DB = A.RN ;
      &cJoinAn_D ;
    Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO ;
  UNION ALL ;
  Select S.RN_KR As RN_ACC, 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, ;
         -S.Sum_Equal As Sum, A.LVidR, Space(33) as NameS ;
    From EopBase B ;
      Inner Join EopSpec     S ON B.RN = S.Master_RN ;
      Inner Join crsAcc50312 A ON S.RN_KR = A.RN ;
      &cJoinAn_K ;
    Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO ;
    INTO CURSOR crs3_ READWRITE

  CurClose("crsAcc50312")
EndIf

Replace ALL NameS With GetRashodCode(LVidR)

Select NameS, SUM(Sum) as Sum ;
  From crs3_ ;
  Where !Empty(NameS) ;
  Group By 1 ;
  Into CURSOR crs3

Use In crs3_

&& Доведенные бюджетные данные
If m.nChkNoCalcDBD = 0
  Select AccBase.RN, SubStr(AccBase.Account, 19, 3) = "503" As LVidR ;
    From AccBase ;
      Left Join BalUnit On AccBase.RN_BalUnit = BalUnit.RN ;
    Where (SubStr(AccBase.Account, 19, 5) = "50312" Or ?m.nChkLBO = 1 And SubStr(AccBase.Account, 19, 5) = "50112") &cWhereBalUnits ;
    Into CURSOR crsAcc50312

  Select S.RN_DB As RN_ACC, 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, ;
         S.Sum_Equal As Sum, A.LVidR, Space(33) as NameS ;
    From EopBase B ;
      Inner Join EopSpec     S ON B.RN = S.Master_RN ;
      Inner Join crsAcc50312 A ON S.RN_DB = A.RN ;
      &cJoinAn_D ;
    Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO ;
    INTO CURSOR crs4_ READWRITE

  CurClose("crsAcc50312")

  Replace ALL NameS With GetRashodCode(LVidR)

  Select NameS, SUM(Sum) as Sum ;
    From crs4_ ;
    Where !Empty(NameS) ;
    Group By 1 ;
    Into CURSOR crs4

  Use In crs4_
Else
  Create CURSOR crs4 (NameS C(33), Sum N(18, 2))
EndIf

&& Исполнено
Select AccBase.RN ;
  From AccBase ;
    Left Join BalUnit On AccBase.RN_BalUnit = BalUnit.RN ;
  Where SubStr(AccBase.Account, 19, 5) = "30405" &cWhereBalUnits ;
  Into CURSOR crsAcc30405

If Empty(m.cWhereAccNCR)
  cWhereAccNCR = ".F."
EndIf
If Empty(m.cWhereAccIBSR)
  cWhereAccIBSR = ".F."
EndIf

Select AccBase.RN ;
  From AccBase ;
    Left Join BalUnit On AccBase.RN_BalUnit = BalUnit.RN ;
  Where (&cWhereAccIBSR. Or &cWhereAccNCR.) &cWhereBalUnits ;
  Into CURSOR crsAcc2

Select S.RN_DB As RN_ACC, 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, ;
       -S.Sum_Equal As Sum, Space(20) as NameS ;
  From EopBase B ;
    Inner Join EopSpec     S ON B.RN = S.Master_RN ;
    Inner Join crsAcc30405 A ON S.RN_DB = A.RN ;
    Left  Join AccBase     K ON S.RN_KR = K.RN ;
    &cJoinAn_D ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO And SubStr(K.Account, 19, 4) # "4013" And SubStr(K.Account, 19, 5) # "30404" ;
UNION ALL ;
Select S.RN_KR As RN_ACC, 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, ;
       S.Sum_Equal As Sum, Space(20) as NameS ;
  From EopBase B ;
    Inner Join EopSpec     S ON B.RN = S.Master_RN ;
    Inner Join crsAcc30405 A ON S.RN_KR = A.RN ;
    Left  Join AccBase     K ON S.RN_DB = K.RN ;
    &cJoinAn_K ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO And SubStr(K.Account, 19, 4) # "4013" And SubStr(K.Account, 19, 5) # "30404" ;
UNION ALL ;
Select S.RN_DB As RN_ACC, 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, ;
       -S.Sum_Equal As Sum, Space(20) as NameS ;
  From EopBase B ;
    Inner Join EopSpec S ON B.RN = S.Master_RN ;
    Inner Join crsAcc2 A ON S.RN_DB = A.RN ;
    &cJoinAn_D ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO ;
UNION ALL ;
Select S.RN_KR As RN_ACC, 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, ;
       S.Sum_Equal As Sum, Space(20) as NameS ;
  From EopBase B ;
    Inner Join EopSpec S ON B.RN = S.Master_RN ;
    Inner Join crsAcc2 A ON S.RN_KR = A.RN ;
    &cJoinAn_K ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO ;
  INTO CURSOR crs5_ READWRITE

Replace ALL NameS With GetRashodCode()

Select NameS, SUM(Sum) as Sum ;
  From crs5_ ;
  Where !Empty(NameS) ;
  Group By 1 ;
  Into CURSOR crs5

CurClose("crs5_;crsAcc30405;crsAcc2")

* Объединяем данные по расходам
Select NameS From crs3 UNION ALL Select NameS From crs4 UNION ALL Select NameS From crs5 Into CURSOR crsNameS_
Select DISTINCT NameS From crsNameS_ Order By 1 Into CURSOR crsNameS
Use In crsNameS_

Select S.NameS, Nvl(S3.Sum, 000000000000000.00) As Col3, Nvl(S4.Sum, 000000000000000.00) As Col4, Nvl(S5.Sum, 000000000000000.00) As Col5 ;
  From crsNameS S ;
    Left Join crs3 As S3 On S.NameS = S3.NameS ;
    Left Join crs4 As S4 On S.NameS = S4.NameS ;
    Left Join crs5 As S5 On S.NameS = S5.NameS ;
 Into CURSOR crsSpecR164 READWRITE

CurClose("crsNameS;crs3;crs4;crs5")

Delete For Col3 = 0 And Col4 = 0 And Col5 = 0 In crsSpecR164

* Группировка по БК
If !Empty(m.cGroupMaskR)
  Local ni, n1, n2, cSub, cS, i, cNameS, nLenS
  Local ARRAY arrGrpMask(1, 2)
  cSub = m.cGroupMaskR
  ni   = 0
  n1   = Val(m.cSub)
  n2   = 0
  cS   = LTrim(Str(m.n1, 15))
  cSub = SubStr(m.cSub, Len(m.cS) + 2)

  DO While !Empty(m.cSub)
    If m.n2 = 0
      n2   = Val(m.cSub)
      cS   = LTrim(Str(m.n2, 15))
      cSub = SubStr(m.cSub, Len(m.cS) + 2)
      ni   = m.ni + 1
      Dimension arrGrpMask(m.ni, 2)
      arrGrpMask(m.ni, 1) = m.n1
      arrGrpMask(m.ni, 2) = m.n2
    Else
      n1   = Val(m.cSub)
      cS   = LTrim(Str(m.n1, 15))
      cSub = SubStr(m.cSub, Len(m.cS) + 2)
      n2   = 0
    EndIf
  EndDO

  Select crsSpecR164
  Scan
    nLenS  = Len(RTrim(NameS))
    cNameS = Replicate("0", m.nLenS)
    For m.i = 1 To m.ni
      If arrGrpMask(m.i,1) <= m.nLenS
        cNameS = Iif(arrGrpMask(m.i,1) = 1, "", Left(m.cNameS, arrGrpMask(m.i,1) - 1)) ;
               + SubStr(NameS, arrGrpMask(m.i,1), arrGrpMask(m.i,2) - arrGrpMask(m.i,1) + 1) ;
               + SubStr(m.cNameS, arrGrpMask(m.i,2) + 1)
      EndIf
    Next
    Replace NameS With m.cNameS
  EndScan

  Select NameS, Sum(Col3) As Col3, Sum(Col4) As Col4, Sum(Col5) As Col5 ;
    From crsSpecR164 ;
    Group By 1 ;
    Into CURSOR crsSpecR164 READWRITE
EndIf

* Суммы "Расходы бюджета, всего"
Local ARRAY arrItog[1]

Select Sum(Col3) As Sum3, Sum(Col4) As Sum4, Sum(Col5) As Sum5 From crsSpecR164 Into ARRAY arrItog

If _Tally # 0
  nItR3 = arrItog[1]
  nItR4 = arrItog[2]
  nItR5 = arrItog[3]
EndIf

* Сумма неисполненных назначений
Local cWhereSumNeisp
cWhereSumNeisp = ""
If m.nSumNeisp # 0
  cWhereSumNeisp = "And Col3 - Col5 < m.nSumNeisp"
EndIf

* Процент исполнения бюджета
Select crsSpecR164
Do Case
   Case m.nProcentFewer > 0 And m.nProcentOver > 0
     Delete For Col3 = 0 Or Between(Round(Col5/Col3*100, 2), m.nProcentFewer, m.nProcentOver) &cWhereSumNeisp
   Case m.nProcentFewer > 0
     Delete For Col3 = 0 Or Round(Col5/Col3*100, 2) => m.nProcentFewer &cWhereSumNeisp
   Case m.nProcentOver > 0
     Delete For Col3 = 0 Or Round(Col5/Col3*100, 2) <= m.nProcentOver &cWhereSumNeisp
   Case m.nSumNeisp # 0
     Delete For Col3 - Col5 < m.nSumNeisp
EndCase

ENDPROC


*********************************************************************
Procedure ProcF   && Источники финансирования дефицита бюджета
*********************************************************************
Local nKlsType

&& Утвержденные бюджетные назначения
Select AccBase.RN ;
  From AccBase ;
    Left Join BalUnit On AccBase.RN_BalUnit = BalUnit.RN ;
  Where (SubStr(AccBase.Account, 19, 4) = "5041" Or InList(SubStr(AccBase.Account, 19, 5), "50311", "50315") Or ?m.nChkNoCalcNBN = 1 And SubStr(AccBase.Account, 19, 5) = "50312") &cWhereBalUnits ;
  Into CURSOR crsAccDb

Select AccBase.RN ;
  From AccBase ;
    Left Join BalUnit On AccBase.RN_BalUnit = BalUnit.RN ;
  Where (SubStr(AccBase.Account, 19, 4) = "5041" Or SubStr(AccBase.Account, 19, 5) = "50314" Or ?m.nChkNoCalcNBN = 1 And SubStr(AccBase.Account, 19, 5) = "50312") &cWhereBalUnits ;
  Into CURSOR crsAccKr

Select S.RN_DB As RN_ACC, 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, ;
       0 As Kls_Type, ;
       -S.Sum_Equal As Sum, Space(20) as NameS ;
  From EopBase B ;
    Inner Join EopSpec  S ON B.RN = S.Master_RN ;
    Inner Join crsAccDb A ON S.RN_DB = A.RN ;
    &cJoinAn_D ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO ;
UNION ALL ;
Select S.RN_KR As RN_ACC, 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, ;
       0 As Kls_Type, ;
       S.Sum_Equal As Sum, Space(20) as NameS ;
  From EopBase B ;
    Inner Join EopSpec  S ON B.RN = S.Master_RN ;
    Inner Join crsAccKr A ON S.RN_KR = A.RN ;
    &cJoinAn_K ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO ;
  INTO CURSOR crs3_ READWRITE

If m.nChkNoCalcNBN = 1   &&    && выставлен чек "Не рассчитывать показатели по нераспределенным бюджетным назначениям"
  Select AccBase.RN ;
    From AccBase ;
      Left Join BalUnit On AccBase.RN_BalUnit = BalUnit.RN ;
    Where SubStr(AccBase.Account, 19, 5) = "50312" &cWhereBalUnits ;
    Into CURSOR crsAcc50312

  Select * From crs3_ ;
  UNION ALL ;
  Select B.RN_ACCOUNT As RN_ACC, 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, ;
         0 As Kls_Type, ;
         S.SUMM_KR_EQUAL - S.SUMM_DB_EQUAL As Sum, Space(20) as NameS ;
    From AcRest B ;
      Inner Join crsAcc50312 A ON B.RN_ACCOUNT = A.RN ;
      Inner Join AcAnRest    S ON B.RN = S.Master_RN ;
      &cJoinAn ;
    Where B.DATE_REST = ?m.dDateBegin &cOrgPO ;
    INTO CURSOR crs3_ READWRITE
EndIf

Replace ALL NameS    With GetBKlsDoh(@nKlsType), ;
            Kls_Type With m.nKlsType

Select Kls_Type, NameS, SUM(Sum) as Sum ;
  From crs3_ ;
  Where Kls_Type # 0 And !Empty(NameS) ;
  Group By 1, 2 ;
  Into CURSOR crs3

CurClose("crs3_;crsAccDb;crsAccKr;crsAcc50312")

&& Исполнено
Select AccBase.RN ;
  From AccBase ;
    Left Join BalUnit On AccBase.RN_BalUnit = BalUnit.RN ;
  Where InList(SubStr(AccBase.Account, 19, 5), "21002", "30405") &cWhereBalUnits ;
  Into CURSOR crsAcc21002

If Empty(m.cWhereAccNCF)
  cWhereAccNCF = ".F."
EndIf

Select AccBase.RN ;
  From AccBase ;
    Left Join BalUnit On AccBase.RN_BalUnit = BalUnit.RN ;
  Where (&cWhereAccIBSD. Or &cWhereAccIBSR. Or &cWhereAccNCF.) &cWhereBalUnits ;
  Into CURSOR crsAcc2

Select S.RN_DB As RN_ACC, 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, ;
       0 As Kls_Type, ;
       S.Sum_Equal As Sum, Space(20) as NameS ;
  From EopBase B ;
    Inner Join EopSpec     S ON B.RN = S.Master_RN ;
    Inner Join crsAcc21002 A ON S.RN_DB = A.RN ;
    Left  Join AccBase     K ON S.RN_KR = K.RN ;
    &cJoinAn_D ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO And SubStr(K.Account, 19, 4) # "4013" And SubStr(K.Account, 19, 5) # "30404" ;
UNION ALL ;
Select S.RN_KR As RN_ACC, 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, ;
       0 As Kls_Type, ;
       -S.Sum_Equal As Sum, Space(20) as NameS ;
  From EopBase B ;
    Inner Join EopSpec     S ON B.RN = S.Master_RN ;
    Inner Join crsAcc21002 A ON S.RN_KR = A.RN ;
    Left  Join AccBase     K ON S.RN_DB = K.RN ;
    &cJoinAn_K ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO And SubStr(K.Account, 19, 4) # "4013" And SubStr(K.Account, 19, 5) # "30404" ;
UNION ALL ;
Select S.RN_DB As RN_ACC, 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, ;
       0 As Kls_Type, ;
       S.Sum_Equal As Sum, Space(20) as NameS ;
  From EopBase B ;
    Inner Join EopSpec S ON B.RN = S.Master_RN ;
    Inner Join crsAcc2 A ON S.RN_DB = A.RN ;
    &cJoinAn_D ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO ;
UNION ALL ;
Select S.RN_KR As RN_ACC, 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, ;
       0 As Kls_Type, ;
       -S.Sum_Equal As Sum, Space(20) as NameS ;
  From EopBase B ;
    Inner Join EopSpec S ON B.RN = S.Master_RN ;
    Inner Join crsAcc2 A ON S.RN_KR = A.RN ;
    &cJoinAn_K ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO ;
  INTO CURSOR crs5_ READWRITE

Replace ALL NameS    With GetBKlsDoh(@nKlsType), ;
            Kls_Type With m.nKlsType

Select Kls_Type, NameS, SUM(Sum) as Sum ;
  From crs5_ ;
  Where Kls_Type # 0 And !Empty(NameS) ;
  Group By 1, 2 ;
  Into CURSOR crs5

CurClose("crs5_;crsAcc21002;crsAcc2")

* Объединяем данные по источникам
Select Kls_Type, NameS From crs3 UNION ALL Select Kls_Type, NameS From crs5 Into CURSOR crsNameS_
Select DISTINCT Kls_Type, NameS From crsNameS_ Order By 1, 2 Into CURSOR crsNameS
Use In crsNameS_

Select S.Kls_Type, S.NameS, Nvl(S3.Sum, 000000000000000.00) As Col3, Nvl(S5.Sum, 000000000000000.00) As Col5 ;
  From crsNameS S ;
    Left Join crs3 As S3 On S.Kls_Type = S3.Kls_Type And S.NameS = S3.NameS ;
    Left Join crs5 As S5 On S.Kls_Type = S5.Kls_Type And S.NameS = S5.NameS ;
 Into CURSOR crsSpecF164 READWRITE

CurClose("crsNameS;crs3;crs5")

Delete For Col3 = 0 And Col5 = 0 In crsSpecF164

* Группировка по БК
If !Empty(m.cGroupMaskF)
  Local ni, n1, n2, cSub, cS, i, cNameS, nLenS
  Local ARRAY arrGrpMask(1, 2)
  cSub = m.cGroupMaskF
  ni   = 0
  n1   = Val(m.cSub)
  n2   = 0
  cS   = LTrim(Str(m.n1, 15))
  cSub = SubStr(m.cSub, Len(m.cS) + 2)

  DO While !Empty(m.cSub)
    If m.n2 = 0
      n2   = Val(m.cSub)
      cS   = LTrim(Str(m.n2, 15))
      cSub = SubStr(m.cSub, Len(m.cS) + 2)
      ni   = m.ni + 1
      Dimension arrGrpMask(m.ni, 2)
      arrGrpMask(m.ni, 1) = m.n1
      arrGrpMask(m.ni, 2) = m.n2
    Else
      n1   = Val(m.cSub)
      cS   = LTrim(Str(m.n1, 15))
      cSub = SubStr(m.cSub, Len(m.cS) + 2)
      n2   = 0
    EndIf
  EndDO

  Select crsSpecF164
  Scan
    nLenS  = Len(RTrim(NameS))
    cNameS = Replicate("0", m.nLenS)
    For m.i = 1 To m.ni
      If arrGrpMask(m.i,1) <= m.nLenS
        cNameS = Iif(arrGrpMask(m.i,1) = 1, "", Left(m.cNameS, arrGrpMask(m.i,1) - 1)) ;
               + SubStr(NameS, arrGrpMask(m.i,1), arrGrpMask(m.i,2) - arrGrpMask(m.i,1) + 1) ;
               + SubStr(m.cNameS, arrGrpMask(m.i,2) + 1)
      EndIf
    Next
    Replace NameS With m.cNameS
  EndScan

  Select Kls_Type, NameS, Sum(Col3) As Col3, Sum(Col5) As Col5 ;
    From crsSpecF164 ;
    Group By 1, 2 ;
    Into CURSOR crsSpecF164 READWRITE
EndIf

* Суммы "всего"
Local ARRAY arrItog[1]

Select Sum(Col3) As Sum3, Sum(Col5) As Sum5 From crsSpecF164 Where Kls_Type = 1 Into ARRAY arrItog

If _Tally # 0
  nItF31 = arrItog(1,1)
  nItF51 = arrItog(1,2)
EndIf

Select Sum(Col3) As Sum3, Sum(Col5) As Sum5 From crsSpecF164 Where Kls_Type = 2 Into ARRAY arrItog

If _Tally # 0
  nItF32 = arrItog(1,1)
  nItF52 = arrItog(1,2)
EndIf

* Процент исполнения бюджета
Select crsSpecF164
Do Case
  Case m.nProcentFewer > 0 And m.nProcentOver > 0
    Delete For Col3 = 0 Or Between(Round(Col5/Col3*100, 2), m.nProcentFewer, m.nProcentOver)
  Case m.nProcentFewer > 0
    Delete For Col3 = 0 Or Round(Col5/Col3*100, 2) => m.nProcentFewer
  Case m.nProcentOver > 0
    Delete For Col3 = 0 Or Round(Col5/Col3*100, 2) <= m.nProcentOver
EndCase

ENDPROC


***********************************************************************************************
Procedure Proc500   && Вспомогательный показатель для расчета строки 500 (скрытый статический)
***********************************************************************************************
Select AccBase.RN ;
  From AccBase ;
    Left Join BalUnit On AccBase.RN_BalUnit = BalUnit.RN ;
  Where InList(SubStr(AccBase.Account, 19, 5), "20121", "20122", "20123", "20127") &cWhereBalUnits ;
  Into CURSOR crsAcc1

Select AccBase.RN ;
  From AccBase ;
    Left Join BalUnit On AccBase.RN_BalUnit = BalUnit.RN ;
  Where InList(SubStr(AccBase.Account, 19, 5), "21002", "30405") &cWhereBalUnits ;
  Into CURSOR crsAcc2

Select AccBase.RN ;
  From AccBase ;
    Left Join BalUnit On AccBase.RN_BalUnit = BalUnit.RN ;
  Where SubStr(AccBase.Account, 19, 5) = "30404" &cWhereBalUnits ;
  Into CURSOR crsAcc3

Select -S.Sum_Equal As Sum ;
  From EopBase B ;
    Inner Join EopSpec S ON B.RN = S.Master_RN ;
    Inner Join crsAcc1 A ON S.RN_DB = A.RN ;
    &cJoinAn_D ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO ;
UNION ALL ;
Select S.Sum_Equal As Sum ;
  From EopBase B ;
    Inner Join EopSpec  S ON B.RN = S.Master_RN ;
    Inner Join crsAcc1 A ON S.RN_KR = A.RN ;
    &cJoinAn_K ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO ;
UNION ALL ;
Select -S.Sum_Equal As Sum ;
  From EopBase B ;
    Inner Join EopSpec S ON B.RN = S.Master_RN ;
    Inner Join crsAcc2 A ON S.RN_DB = A.RN ;
    Left  Join AccBase K ON S.RN_KR = K.RN ;
    &cJoinAn_D ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO And SubStr(K.Account, 19, 4) # "4013" ;
UNION ALL ;
Select S.Sum_Equal As Sum ;
  From EopBase B ;
    Inner Join EopSpec S ON B.RN = S.Master_RN ;
    Inner Join crsAcc2 A ON S.RN_KR = A.RN ;
    Left  Join AccBase K ON S.RN_DB = K.RN ;
    &cJoinAn_K ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO And SubStr(K.Account, 19, 4) # "4013" ;
UNION ALL ;
Select -S.Sum_Equal As Sum ;
  From EopBase B ;
    Inner Join EopSpec S ON B.RN = S.Master_RN ;
    Inner Join crsAcc3 A ON S.RN_DB = A.RN ;
    Left  Join AccBase K ON S.RN_KR = K.RN ;
    &cJoinAn_D ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO And InList(SubStr(K.Account, 19, 5), "30405", "20121", "20122", "20123", "20127") ;
UNION ALL ;
Select S.Sum_Equal As Sum ;
  From EopBase B ;
    Inner Join EopSpec S ON B.RN = S.Master_RN ;
    Inner Join crsAcc3 A ON S.RN_KR = A.RN ;
    Left  Join AccBase K ON S.RN_DB = K.RN ;
    &cJoinAn_K ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cOrgPO And InList(SubStr(K.Account, 19, 5), "30405", "20121", "20122", "20123", "20127") ;
  INTO CURSOR crs5

SUM Sum To nF500

CurClose("crsAcc1;crsAcc2;crsAcc3;crs5")

ENDPROC


*********************************************************************
Procedure GetBKlsDoh(nKlsType)
*********************************************************************
* классификация доходов
Local cSName, nKBKLevel, cAnalitRN, cKBK_RN, cSelect
Store "" To cSName, cKBK_RN
Store 0  To nKlsType
cSelect = Select()

If Seek(RN_ACC, "AccBase", "RN")
  If !Empty(AccBase.RN_KLSDOH)   && КБК указан в счете
    cKBK_RN = AccBase.RN_KLSDOH
  Else                           && КБК указан в аналитике
    nKBKLevel = AT("3", AccBase.ORG_AN)
    If m.nKBKLevel # 0
      cAnalitRN = Evaluate("RN_AN" + Str(m.nKBKLevel, 1))
      If !Empty(m.cAnalitRN) And Seek(m.cAnalitRN, "AccSpec", "RN") And !Empty(AccSpec.RN_KLSDOH)
        cKBK_RN = AccSpec.RN_KLSDOH
      EndIf
    EndIf
  EndIf
EndIf

If !Empty(m.cKBK_RN) And Seek(m.cKBK_RN, "BKlsDoh", "RN")
  cSName = BKlsDoh.CODE
  If !Empty(m.glBK)
    cSName = m.glBK + SubStr(m.cSName, Len(m.glBK) + 1)
  EndIf
  nKlsType = BKlsDoh.KLS_TYPE
EndIf

Select (m.cSelect)

Return m.cSName

ENDPROC


*********************************************************************
Procedure GetRashodCode(lVidR)
*********************************************************************
* классификация расходов (из ШФ)
Local cSName, nSbFLevel, cAnalitRN, cSbF_RN
Store "" To cSName, cSbF_RN

If Seek(RN_ACC, "AccBase", "RN")
  If AccBase.TFIN_TYPE = 1   && ШФ указан в счете
    cSbF_RN = AccBase.RN_TFIN
  Else                       && ШФ указан в аналитике
    nSbFLevel = AT("9", AccBase.SMETA_AN)
    If m.nSbFLevel # 0
      cAnalitRN = Evaluate("RN_AN" + Str(m.nSbFLevel, 1))
      If !Empty(m.cAnalitRN) And Seek(m.cAnalitRN, "AccSpec", "RN") And !Empty(AccSpec.RN_TFIN)
        cSbF_RN = AccSpec.RN_TFIN
      EndIf
    EndIf
  EndIf
EndIf

If !Empty(m.cSbF_RN) And Seek(m.cSbF_RN, "curSbF") And (!m.lVidR Or m.nChk31_33 = 0 Or InList(Left(AllTrim(curSbF.VidR), 2), "31", "33"))
  cSName = curSbF.CODE
EndIf

Return m.cSName

ENDPROC


*********************************************************************
Procedure MakeFileName   && Формирую имя файла
*********************************************************************
cFileName = ""

If !Empty(m.cUnlPath)
  Local ARRAY aFiles(1)
  Local nNum, cNum, nN, i, nFls
  cUnlPath  = AllTrim(m.cUnlPath)
  cFileName = "264"
  Do Case
    Case Month(m.dDateEnd + 1) = 1   && год
      cFileName = m.cFileName + "Y"
    Case InList(Month(m.dDateEnd + 1), 4, 7, 10)   && квартал
      cFileName = m.cFileName + "Q"
    Otherwise   && месяц
      cFileName = m.cFileName + "M"
  EndCase
  nNum = 0
  nFls = ADir(aFiles, m.cUnlPath + m.cFileName + "??.txt")
  For m.i = 1 To m.nFls
    nN   = AT(".", aFiles(m.i, 1))
    cNum = Val(SubStr(aFiles(m.i, 1), m.nN - 2, 2))
    If m.nNum < m.cNum
      nNum = m.cNum
    EndIf 
    If m.nNum = 99
      nNum = 0
    EndIf
  Next
  cFileName = m.cUnlPath + m.cFileName + PadL(Int(m.nNum) + 1, 2, "0") + ".txt"
EndIf

ENDPROC
]]></FPC_></MSE>
  <FPC_><![CDATA[*[VFP]
RepG151.GetOutS(.T.)
]]></FPC_>
    </печать>
  </отчет>
  <форма>
    <ид>f_0503164_191n_13n_2020</ид>
    <тип>XML</тип>
    <описание>
      <дополнительно>
        <desc_version>1.0</desc_version>
      </дополнительно>
      <VFP_свойство имя="Name">f_0503164_2010</VFP_свойство>
      <VFP_свойство имя="Caption">Форма 0503164-191н_ред13н_2020</VFP_свойство>
      <VFP_свойство имя="Height">415</VFP_свойство>
      <VFP_свойство имя="Width">465</VFP_свойство>
      <VFP_метод имя="Valid"><![CDATA[LParam oThis, oThisform
Local nMaxLenD, nMaxLenR, cSub, n1, n2, cS, lOk, oPg1, oPg2, oPg3
Store "" To cGroupMaskD, cGroupMaskR, cGroupMaskF
nMaxLenD = 20
nMaxLenR = 33

oPg1 = oThisForm.PF.Page1
oPg2 = oThisForm.PF.Page2
oPg3 = oThisForm.PF.Page3

cAccNCD  = oPg2.DicAccountNCD.GetSaveValue()
cAccIBSD = oPg2.DicAccountIBSD.GetSaveValue()
cComDicD = oPg2.GroupD.GetSaveValue()
cAccNCR  = oPg2.DicAccountNCR.GetSaveValue()
cAccIBSR = oPg2.DicAccountIBSR.GetSaveValue()
cComDicR = oPg2.GroupR.GetSaveValue()
cAccNCF  = oPg2.DicAccountNCF.GetSaveValue()
cComDicF = oPg2.GroupF.GetSaveValue()

cWhereAccNCD  = oPg2.DicAccountNCD.GetCond()
cWhereAccIBSD = oPg2.DicAccountIBSD.GetCond()
cWhereAccNCR  = oPg2.DicAccountNCR.GetCond()
cWhereAccIBSR = oPg2.DicAccountIBSR.GetCond()
cWhereAccNCF  = oPg2.DicAccountNCF.GetCond()

* Группировка доходов
If !Empty(m.cComDicD) And Len(m.cComDicD) > 1
   oPg2.GroupD.SetSaveValue(m.cComDicD)
   cGroupMaskD = oPg2.GroupD.DisplayValue
   cGroupMaskD = ChrTran(m.cGroupMaskD, " ", "")
   cGroupMaskD = ChrTran(m.cGroupMaskD, ",", ";")
   cSub = m.cGroupMaskD
   n1   = Val(m.cSub)
   n2   = 0
   lOk  = Between(m.n1, 1, m.nMaxLenD)
   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)
        cS   = LTrim(Str(m.n2, 15))
        cSub = SubStr(m.cSub, Len(m.cS) + 1)
        lOk  = Between(m.n2, m.n1, m.nMaxLenD)
     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.nMaxLenD) And !Empty(m.cSub)
           n2   = 0
        Else
           lOk = .F.
        EndIf
     EndIf
   EndDO
   *
   If !m.lOk
      = ExclMes("Группировка для доходов задана некорректно!")
      oThisForm.PF.ActivePage = 2
      oPg2.GroupD.SetFocus()
      Return .F.
   EndIf
EndIf

* Группировка расходов
If !Empty(m.cComDicR) And Len(m.cComDicR) > 1
   oPg2.GroupR.SetSaveValue(m.cComDicR)
   cGroupMaskR = oPg2.GroupR.DisplayValue
   cGroupMaskR = ChrTran(m.cGroupMaskR, " ", "")
   cGroupMaskR = ChrTran(m.cGroupMaskR, ",", ";")
   cSub = m.cGroupMaskR
   n1   = Val(m.cSub)
   n2   = 0
   lOk  = Between(m.n1, 1, m.nMaxLenR)
   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)
        cS   = LTrim(Str(m.n2, 15))
        cSub = SubStr(m.cSub, Len(m.cS) + 1)
        lOk  = Between(m.n2, m.n1, m.nMaxLenR)
     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.nMaxLenR) And !Empty(m.cSub)
           n2   = 0
        Else
           lOk = .F.
        EndIf
     EndIf
   EndDO
   *
   If !m.lOk
      = ExclMes("Группировка для расходов задана некорректно!")
      oThisForm.PF.ActivePage = 2
      oPg2.GroupR.SetFocus()
      Return .F.
   EndIf
EndIf

* Группировка дефицитов
If !Empty(m.cComDicF) And Len(m.cComDicF) > 1
   oPg2.GroupF.SetSaveValue(m.cComDicF)
   cGroupMaskF = oPg2.GroupF.DisplayValue
   cGroupMaskF = ChrTran(m.cGroupMaskF, " ", "")
   cGroupMaskF = ChrTran(m.cGroupMaskF, ",", ";")
   cSub = m.cGroupMaskF
   n1   = Val(m.cSub)
   n2   = 0
   lOk  = Between(m.n1, 1, m.nMaxLenD)
   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)
        cS   = LTrim(Str(m.n2, 15))
        cSub = SubStr(m.cSub, Len(m.cS) + 1)
        lOk  = Between(m.n2, m.n1, m.nMaxLenD)
     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.nMaxLenD) And !Empty(m.cSub)
           n2   = 0
        Else
           lOk = .F.
        EndIf
     EndIf
   EndDO
   *
   If !m.lOk
      = ExclMes("Группировка для дефицитов задана некорректно!")
      oThisForm.PF.ActivePage = 2
      oPg2.GroupF.SetFocus()
      Return .F.
   EndIf
EndIf

* Каталог для выгрузки
cUnlPath = oPg3.Catalog.Text.Value
cDicIsp  = oPg3.DicIsp.GetSaveValue()
If !Empty(m.cUnlPath) And !Directory(m.cUnlPath, 1)
   =exclmes("Каталог " + AllTrim(m.cUnlPath) + Chr(13) + "не существует!")
   oThisForm.PF.ActivePage = 3
   oPg3.Catalog.SetFocus()
   Return .F.
EndIf

cWhereBalUnits = oPg1.BalunitsB.GetCond()
cBalUnitsB = oPg1.BalunitsB.GetSaveValue()

If !Empty(m.cWhereBalUnits)
  cWhereBalUnits = ' And ' + m.cWhereBalUnits 
EndIf

cOrg       = oPg1.OrgFrom.GetSaveValue()
dDateBegin = DOX(oPg1.cntSelDateBegin.restDate.Value, 3)
dDateEnd   = DOX(oPg1.cntSelDateEnd.restDate.Value, 4)
cWhereKontragent = oPg1.OrgFrom.GetCond()
]]></VFP_метод>
      <VFP_метод имя="PostInit"><![CDATA[LParam oThis, oThisform
Local oPg1, oPg2, oPg3
oPg1 = oThisForm.PF.Page1
oPg2 = oThisForm.PF.Page2
oPg3 = oThisForm.PF.Page3

oPg1.cntSelDateBegin.InitThis(m.dDateBegin)
oPg1.cntSelDateEnd.InitThis(m.dDateEnd)
oPg1.OrgFrom.SetSaveValue(m.cOrg)
oPg1.BalunitsB.SetSaveValue(m.cBalUnitsB)

oPg2.DicAccountNCD.SetSaveValue(m.cAccNCD)
oPg2.DicAccountIBSD.AddToHistory("??????????????????з17*")
oPg2.DicAccountIBSD.SetSaveValue(m.cAccIBSD)
oPg2.GroupD.SetSaveValue(m.cComDicD)
oPg2.DicAccountNCR.SetSaveValue(m.cAccNCR)
oPg2.DicAccountIBSR.AddToHistory("??????????????????з18*")
oPg2.DicAccountIBSR.SetSaveValue(m.cAccIBSR)
oPg2.GroupR.SetSaveValue(m.cComDicR)
oPg2.DicAccountNCF.SetSaveValue(m.cAccNCF)
oPg2.GroupF.SetSaveValue(m.cComDicF)

oPg3.Catalog.Text.Value = m.cUnlPath
oPg3.DicIsp.SetSaveValue(m.cDicIsp)
oPg3.fldIspName.Value = m.cIspName
]]></VFP_метод>
      <элемент>
        <VFP_имя>Tbtndialog1</VFP_имя>
        <VFP_свойство имя="Left">190</VFP_свойство>
        <VFP_свойство имя="Top">378</VFP_свойство>
      </элемент>
      <элемент>
        <VFP_класс>TPageFrame</VFP_класс>
        <VFP_свойство имя="Name">PF</VFP_свойство>
        <VFP_свойство имя="Height">375</VFP_свойство>
        <VFP_свойство имя="Width">465</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">80</VFP_свойство>
            <VFP_свойство имя="Left">10</VFP_свойство>
            <VFP_свойство имя="Top">10</VFP_свойство>
            <VFP_свойство имя="Width">445</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">30</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>Month_year_m</VFP_класс>
            <VFP_свойство имя="Name">cntSelDateBegin</VFP_свойство>
            <VFP_свойство имя="ControlSource">dDateBegin</VFP_свойство>
            <VFP_свойство имя="Left">40</VFP_свойство>
            <VFP_свойство имя="Top">25</VFP_свойство>
            <элемент>
              <VFP_имя>SelYear</VFP_имя>
              <VFP_свойство имя="Left">286</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_имя>LbllYear</VFP_имя>
              <VFP_свойство имя="Left">380</VFP_свойство>
            </элемент>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">по:</VFP_свойство>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">60</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>Month_year_m</VFP_класс>
            <VFP_свойство имя="Name">cntSelDateEnd</VFP_свойство>
            <VFP_свойство имя="ControlSource">dDateEnd</VFP_свойство>
            <VFP_свойство имя="Left">40</VFP_свойство>
            <VFP_свойство имя="Top">55</VFP_свойство>
            <элемент>
              <VFP_имя>SelYear</VFP_имя>
              <VFP_свойство имя="Left">286</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_имя>LbllYear</VFP_имя>
              <VFP_свойство имя="Left">380</VFP_свойство>
            </элемент>
          </элемент>
          <элемент>
            <VFP_класс>T3dShape</VFP_класс>
            <VFP_свойство имя="Height">240</VFP_свойство>
            <VFP_свойство имя="Left">10</VFP_свойство>
            <VFP_свойство имя="Top">100</VFP_свойство>
            <VFP_свойство имя="Width">445</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">Параметры формирования</VFP_свойство>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">95</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">115</VFP_свойство>
            <VFP_свойство имя="Caption">Учреждение:</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TDicHist</VFP_класс>
            <VFP_свойство имя="Name">OrgFrom</VFP_свойство>
            <VFP_свойство имя="Left">150</VFP_свойство>
            <VFP_свойство имя="Top">110</VFP_свойство>
            <VFP_свойство имя="Width">291</VFP_свойство>
            <VFP_свойство имя="AreaName" тип="C">OrgBase</VFP_свойство>
            <VFP_свойство имя="DictName" тип="C">Agnt_bms</VFP_свойство>
            <VFP_свойство имя="RetField" тип="C">rmnemo_org</VFP_свойство>
            <VFP_свойство имя="HistoryName" тип="C">H_AGENTS164_13N_2020</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_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">145</VFP_свойство>
            <VFP_свойство имя="Caption">Балансовая единица:</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>S_balunits</VFP_класс>
            <VFP_свойство имя="Name">BalunitsB</VFP_свойство>
            <VFP_свойство имя="Left">150</VFP_свойство>
            <VFP_свойство имя="Top">140</VFP_свойство>
            <VFP_свойство имя="Width">291</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">175</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">менее:</VFP_свойство>
            <VFP_свойство имя="Left">240</VFP_свойство>
            <VFP_свойство имя="Top">175</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TTextSum</VFP_класс>
            <VFP_свойство имя="ControlSource">nProcentFewer</VFP_свойство>
            <VFP_свойство имя="InputMask">999.99</VFP_свойство>
            <VFP_свойство имя="positive">.T.</VFP_свойство>
            <VFP_свойство имя="Left">285</VFP_свойство>
            <VFP_свойство имя="Name">ProcentFewer</VFP_свойство>
            <VFP_свойство имя="Top">170</VFP_свойство>
            <VFP_свойство имя="Width">50</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">более:</VFP_свойство>
            <VFP_свойство имя="Left">350</VFP_свойство>
            <VFP_свойство имя="Top">175</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TTextSum</VFP_класс>
            <VFP_свойство имя="ControlSource">nProcentOver</VFP_свойство>
            <VFP_свойство имя="InputMask">999.99</VFP_свойство>
            <VFP_свойство имя="positive">.T.</VFP_свойство>
            <VFP_свойство имя="Left">391</VFP_свойство>
            <VFP_свойство имя="Name">ProcentOver</VFP_свойство>
            <VFP_свойство имя="Top">170</VFP_свойство>
            <VFP_свойство имя="Width">50</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">Сумма неисполненных назначений:</VFP_свойство>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">205</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TTextSum</VFP_класс>
            <VFP_свойство имя="ControlSource">nSumNeisp</VFP_свойство>
            <VFP_свойство имя="positive">.T.</VFP_свойство>
            <VFP_свойство имя="Left">291</VFP_свойство>
            <VFP_свойство имя="Name">SumNeisp</VFP_свойство>
            <VFP_свойство имя="Top">200</VFP_свойство>
            <VFP_свойство имя="Width">150</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TCheckBox</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">235</VFP_свойство>
            <VFP_свойство имя="ControlSource">nChkDeltaMin</VFP_свойство>
            <VFP_свойство имя="Name">ChkDeltaMin</VFP_свойство>
            <VFP_свойство имя="Caption">Гр.7 = Гр.5 - Гр.3</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TCheckBox</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">255</VFP_свойство>
            <VFP_свойство имя="ControlSource">nChkLBO</VFP_свойство>
            <VFP_свойство имя="Name">ChkLBO</VFP_свойство>
            <VFP_свойство имя="Caption">Включать ЛБО в расчет утвержденных бюджетных назначений по расходам</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TCheckBox</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">275</VFP_свойство>
            <VFP_свойство имя="ControlSource">nChkNoCalcNBN</VFP_свойство>
            <VFP_свойство имя="Name">ChkNoCalcNBN</VFP_свойство>
            <VFP_свойство имя="Caption">Не рассчитывать показатели по нераспределенным бюджетным назначениям</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TCheckBox</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">295</VFP_свойство>
            <VFP_свойство имя="ControlSource">nChk31_33</VFP_свойство>
            <VFP_свойство имя="Name">Chk31_33</VFP_свойство>
            <VFP_свойство имя="Caption">Исключать расходные БА по КВР, отличным от 31Х и 33Х</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TCheckBox</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">315</VFP_свойство>
            <VFP_свойство имя="ControlSource">nChkNoCalcDBD</VFP_свойство>
            <VFP_свойство имя="Name">ChkNoCalcDBD</VFP_свойство>
            <VFP_свойство имя="Caption">Не рассчитывать доведенные бюджетные данные (графа 4)</VFP_свойство>
          </элемент>
        </элемент>
       <элемент>
        <VFP_имя>Page2</VFP_имя>
          <VFP_свойство имя="Caption">Счета</VFP_свойство>
          <VFP_свойство имя="FontName">MS Sans Serif</VFP_свойство>
          <VFP_свойство имя="FontSize">8</VFP_свойство>
          <элемент>
            <VFP_класс>T3dShape</VFP_класс>
            <VFP_свойство имя="Height">110</VFP_свойство>
            <VFP_свойство имя="Left">10</VFP_свойство>
            <VFP_свойство имя="Top">10</VFP_свойство>
            <VFP_свойство имя="Width">445</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">5</VFP_свойство>
            <VFP_свойство имя="Caption">Доходы</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">30</VFP_свойство>
            <VFP_свойство имя="Caption">Счета для некассовых операций:</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>S_Account</VFP_класс>
            <VFP_свойство имя="Left">200</VFP_свойство>
            <VFP_свойство имя="Width">245</VFP_свойство>
            <VFP_свойство имя="Name">DicAccountNCD</VFP_свойство>
            <VFP_свойство имя="Top">25</VFP_свойство>
            <VFP_свойство имя="HistoryName" тип="C">H_EO164_13N_2020_ACCNCD</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">55</VFP_свойство>
            <VFP_свойство имя="Caption">Исполнение через банковские</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">68</VFP_свойство>
            <VFP_свойство имя="Caption">счета:</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>S_Account</VFP_класс>
            <VFP_свойство имя="Left">200</VFP_свойство>
            <VFP_свойство имя="Width">245</VFP_свойство>
            <VFP_свойство имя="Name">DicAccountIBSD</VFP_свойство>
            <VFP_свойство имя="Top">55</VFP_свойство>
            <VFP_свойство имя="HistoryName" тип="C">H_ACCIBSD164_13N_2020</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">90</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">GroupD</VFP_свойство>
            <VFP_свойство имя="Left">200</VFP_свойство>
            <VFP_свойство имя="Top">85</VFP_свойство>
            <VFP_свойство имя="Width">245</VFP_свойство>
            <VFP_свойство имя="AreaName" тип="C">ComDicBs</VFP_свойство>
            <VFP_свойство имя="DictName" тип="C">ComDic_mc</VFP_свойство>
            <VFP_свойство имя="RetField" тип="C">Code</VFP_свойство>
            <VFP_свойство имя="HistoryName" тип="C">H_GroupD164_13N_2020</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">110</VFP_свойство>
            <VFP_свойство имя="Left">10</VFP_свойство>
            <VFP_свойство имя="Top">130</VFP_свойство>
            <VFP_свойство имя="Width">445</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">125</VFP_свойство>
            <VFP_свойство имя="Caption">Расходы</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">150</VFP_свойство>
            <VFP_свойство имя="Caption">Счета для некассовых операций:</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>S_Account</VFP_класс>
            <VFP_свойство имя="Left">200</VFP_свойство>
            <VFP_свойство имя="Width">245</VFP_свойство>
            <VFP_свойство имя="Name">DicAccountNCR</VFP_свойство>
            <VFP_свойство имя="Top">145</VFP_свойство>
            <VFP_свойство имя="HistoryName" тип="C">H_EO164_13N_2020_ACCNCR</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">175</VFP_свойство>
            <VFP_свойство имя="Caption">Исполнение через банковские</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">188</VFP_свойство>
            <VFP_свойство имя="Caption">счета:</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>S_Account</VFP_класс>
            <VFP_свойство имя="Left">200</VFP_свойство>
            <VFP_свойство имя="Width">245</VFP_свойство>
            <VFP_свойство имя="Name">DicAccountIBSR</VFP_свойство>
            <VFP_свойство имя="Top">175</VFP_свойство>
            <VFP_свойство имя="HistoryName" тип="C">H_ACCIBSR164_13N_2020</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">210</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">GroupR</VFP_свойство>
            <VFP_свойство имя="Left">200</VFP_свойство>
            <VFP_свойство имя="Top">205</VFP_свойство>
            <VFP_свойство имя="Width">245</VFP_свойство>
            <VFP_свойство имя="AreaName" тип="C">ComDicBs</VFP_свойство>
            <VFP_свойство имя="DictName" тип="C">ComDic_mc</VFP_свойство>
            <VFP_свойство имя="RetField" тип="C">Code</VFP_свойство>
            <VFP_свойство имя="HistoryName" тип="C">H_GroupR164_13N_2020</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">80</VFP_свойство>
            <VFP_свойство имя="Left">10</VFP_свойство>
            <VFP_свойство имя="Top">250</VFP_свойство>
            <VFP_свойство имя="Width">445</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">245</VFP_свойство>
            <VFP_свойство имя="Caption">Источники</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">270</VFP_свойство>
            <VFP_свойство имя="Caption">Счета для некассовых операций:</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>S_Account</VFP_класс>
            <VFP_свойство имя="Left">200</VFP_свойство>
            <VFP_свойство имя="Width">245</VFP_свойство>
            <VFP_свойство имя="Name">DicAccountNCF</VFP_свойство>
            <VFP_свойство имя="Top">265</VFP_свойство>
            <VFP_свойство имя="HistoryName" тип="C">H_EO164_13N_2020_ACCNCF</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">300</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">GroupF</VFP_свойство>
            <VFP_свойство имя="Left">200</VFP_свойство>
            <VFP_свойство имя="Top">295</VFP_свойство>
            <VFP_свойство имя="Width">245</VFP_свойство>
            <VFP_свойство имя="AreaName" тип="C">ComDicBs</VFP_свойство>
            <VFP_свойство имя="DictName" тип="C">ComDic_mc</VFP_свойство>
            <VFP_свойство имя="RetField" тип="C">Code</VFP_свойство>
            <VFP_свойство имя="HistoryName" тип="C">H_GroupF164_13N_2020</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_имя>Page3</VFP_имя>
          <VFP_свойство имя="Caption">Параметры выгрузки</VFP_свойство>
          <VFP_свойство имя="FontName">MS Sans Serif</VFP_свойство>
          <VFP_свойство имя="FontSize">8</VFP_свойство>
          <элемент>
            <VFP_класс>T3dShape</VFP_класс>
            <VFP_свойство имя="Height">165</VFP_свойство>
            <VFP_свойство имя="Left">10</VFP_свойство>
            <VFP_свойство имя="Top">10</VFP_свойство>
            <VFP_свойство имя="Width">445</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">190</VFP_свойство>
            <VFP_свойство имя="Top">20</VFP_свойство>
            <VFP_свойство имя="Width">250</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">ИСТ:</VFP_свойство>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">55</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TTextBox</VFP_класс>
            <VFP_свойство имя="Left">383</VFP_свойство>
            <VFP_свойство имя="Top">50</VFP_свойство>
            <VFP_свойство имя="Width">57</VFP_свойство>
            <VFP_свойство имя="MaxLength">3</VFP_свойство>
            <VFP_свойство имя="ControlSource">cIST</VFP_свойство>
            <VFP_свойство имя="Name">IST</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">Исполнитель:</VFP_свойство>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">85</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TDicHist</VFP_класс>
             <VFP_метод имя="AddUpdate"><![CDATA[LParam oThis, oThisform
= CurOpen("orgbase, person")

If !Empty(oThisForm.PF.Page3.dicIsp.Value)
  = Seek(oThisForm.PF.Page3.dicIsp.Value, "orgbase", "RN")
  If orgbase.type # '2'
    errmes("Выбранный контрагент не является физическим лицом.")
    oThisForm.PF.Page3.dicIsp.Clear()
  Else    
    = Seek(oThisForm.PF.Page3.dicIsp.Value, "person", "RN")
    oThisForm.PF.Page3.fldIspName.Value = Alltrim(person.SURNAME) + " " + Left(Alltrim(person.FIRSTNAME), 1) + "." + Left(Alltrim(person.SECONDNAME), 1) + "."
  ENDIF
EndIf
]]></VFP_метод>
            <VFP_свойство имя="Name">dicIsp</VFP_свойство>
            <VFP_свойство имя="Left">190</VFP_свойство>
            <VFP_свойство имя="Top">80</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_AgentsIsp164_13N_2020</VFP_свойство>
            <VFP_свойство имя="Filter">orgbase.type='2'</VFP_свойство>
            <элемент>
              <VFP_имя>DicTable</VFP_имя>
              <дополнительно>
          <отложенная_инициализация/>
              </дополнительно>
            </элемент>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">ФИО:</VFP_свойство>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">115</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TTextBox</VFP_класс>
            <VFP_свойство имя="Left">190</VFP_свойство>
            <VFP_свойство имя="Top">110</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">145</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TTextBox</VFP_класс>
            <VFP_свойство имя="Left">190</VFP_свойство>
            <VFP_свойство имя="Top">140</VFP_свойство>
            <VFP_свойство имя="Width">250</VFP_свойство>
            <VFP_свойство имя="ControlSource">cIspTel</VFP_свойство>
            <VFP_свойство имя="Name">fldIspTel</VFP_свойство>
          </элемент>
        </элемент>
      </элемент>
    </описание>
  </форма>
</Модуль>
