<?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">
  <интерфейс>
    <отчет>
      <наименование>Форма 0503738-33н_ред183н_2023</наименование>
      <код_раздела>Reports5n</код_раздела>
      <номер_код>f0503738_183n_2023</номер_код>
      <шаблон>
        <тип>MSE</тип>
        <мнемокод>ar_form0503738_183n_2023</мнемокод>
        <файл>Форма0503738_33н_ред183н_2023.xlt</файл>
      </шаблон>
      <!--Отчет формируется по хозяйственным операциям за период-->
    </отчет>
  </интерфейс>
  <отчет>	
    <реализует>f0503738_183n_2023</реализует>
      <дополнительно>
      <запомнить_переменные>
        <список_переменных>dBalOpen;dSelDate;dReoDate;cOrg;cRN_Found;cBalUnits;cVFO;nAccType;lKBK;lOsKr502x2;nNPrjOnly;nChkKVR;nChkFormAcb;nAnLevelDD;nAnLevel4;nAnLevel5;cTxt18B1;cTxt18B2;cTxt18B3;cTxt18B4;cTxt18B5;cTxt18B6;cTxt18B7;cTxt18B8;cTxt18B9;cTxt18B10;cRN_MarkVPL;cRN_MarkNOO;cUnlPath;cIST;cDicIsp;cIspName;cIspTel</список_переменных>
        <мемофайл>ar_form0503738_33n_183n_2023;ar_form0503738_33n_78n_2022;ar_form0503738_33n_292n_2021;ar_form0503738_33n_166n_2019</мемофайл>
      </запомнить_переменные>
      </дополнительно>
    <переменные>
      <переменная>
        <имя>dBalOpen</имя>
        <начальное_значение>{}</начальное_значение>
        <!--Дата расчета показателей вступительного баланса-->
      </переменная>
      <переменная>
        <имя>dSelDate</имя>
        <начальное_значение>oSystem.Date</начальное_значение>
        <!--Отчетный период-->
      </переменная>
      <переменная>
        <имя>dReoDate</имя>
        <начальное_значение>{}</начальное_значение>
        <!--Дата реорганизации-->
      </переменная>
      <переменная>
        <имя>dDateBegin</имя>
        <начальное_значение>""</начальное_значение>
        <!--Дата С-->
      </переменная>
      <переменная>
        <имя>dDateEnd</имя>
        <начальное_значение>""</начальное_значение>
        <!--Дата По-->
      </переменная>
      <переменная>
        <имя>cOrg</имя>
        <начальное_значение>""</начальное_значение>
        <!--Учреждение-->
      </переменная>
      <переменная>
        <имя>cRN_Found</имя>
        <начальное_значение>""</начальное_значение>
        <!--Учредитель-->
      </переменная>
      <переменная>
        <имя>cBalUnits</имя>
        <начальное_значение>""</начальное_значение>
        <!--Балансовая единица-->
      </переменная>
      <переменная>
        <имя>cVFO</имя>
        <начальное_значение>""</начальное_значение>
        <!--Вид финансового обеспечения-->
      </переменная>
      <переменная>
        <имя>arrVFO</имя>
        <начальное_значение>""</начальное_значение>
        <!--Массив видов финансового обеспечения-->
      </переменная>
      <переменная>
        <имя>lKBK</имя>
        <начальное_значение>.F.</начальное_значение>
        <!--Формировать по КБК-->
      </переменная>
      <переменная>
        <имя>lOsKr502x2</имя>
        <начальное_значение>.F.</начальное_значение>
        <!--Учитывать кредитовые остатки по счетам 502Х2 для расчета показателей по принятым обязательствам-->
      </переменная>
      <переменная>
        <имя>nNPrjOnly</имя>
        <начальное_значение>0</начальное_значение>
        <!--Формировать показатели только о ходе реализации национальных проектов-->
      </переменная>
      <переменная>
        <имя>nChkKVR</имя>
        <начальное_значение>0</начальное_значение>
        <!--Заполнять наименование показателя по расходам из наименования КВР-->
      </переменная>
      <переменная>
        <имя>nChkFormAcb</имя>
        <начальное_значение>0</начальное_значение>
        <!--Формировать исполнение расходов по балансовым счетам-->
      </переменная>
      <переменная>
        <имя>nAnLevel4</имя>
        <начальное_значение>4</начальное_значение>
        <!--Уровень аналитики кодов поступлений (выбытий) для счетов денежных средств-->
      </переменная>
      <переменная>
        <имя>nAnLevelDD</имя>
        <начальное_значение>0</начальное_значение>
        <!--Уровень доп. аналитики классификации расходов для счетов денежных средств-->
      </переменная>
      <переменная>
        <имя>nAnLevel5</имя>
        <начальное_значение>5</начальное_значение>
        <!--Уровень аналитики КОСГУ для счетов "40110"-->
      </переменная>
      <переменная>
        <имя>cWhereKontragent</имя>
        <начальное_значение>""</начальное_значение>
        <!--Условие по контрагентам-->
      </переменная>
      <переменная>
        <имя>cWhereBalUnits</имя>
        <начальное_значение>""</начальное_значение>
        <!--Условие по балансовым единицам-->
      </переменная>  
      <переменная>
        <имя>nAccType</имя>
        <начальное_значение>1</начальное_значение>
        <!--Тип счёта-->
      </переменная>
      <переменная>
        <имя>CTxt18B1</имя>
        <начальное_значение>"2"</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B2</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B3</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B4</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B5</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B6</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B7</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B8</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B9</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B10</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>cUsl18</имя>
        <начальное_значение>""</начальное_значение>
        <!--Условие для 18 знака счета-->
      </переменная>
      <переменная>
        <имя>glBK</имя>
        <начальное_значение>""</начальное_значение>
        <!--Глава по БК-->
      </переменная>
      <переменная>
        <имя>cRN_MarkVPL</имя>
        <начальное_значение>""</начальное_значение>
        <!--Особая отметка (Возвраты прошлых лет)-->
      </переменная>
      <переменная>
        <имя>cRN_MarkNOO</имя>
        <начальное_значение>""</начальное_значение>
        <!--Особая отметка (Не отражать в отчете)-->
      </переменная>
      <переменная>
        <имя>cUnlPath</имя>
        <начальное_значение>""</начальное_значение>
        <!--Каталог выгрузки-->
      </переменная>
      <переменная>
        <имя>cFileName</имя>
        <начальное_значение>""</начальное_значение>
        <!--Файл выгрузки-->
      </переменная>
      <переменная>
        <имя>cFormCode</имя>
        <начальное_значение>""</начальное_значение>
        <!--Код формы-->
      </переменная>
      <переменная>
        <имя>cIST</имя>
        <начальное_значение>""</начальное_значение>
        <!--ИСТ-->
      </переменная>
      <переменная>
        <имя>cDicIsp</имя>
        <начальное_значение>""</начальное_значение>
        <!--Исполнитель-->
      </переменная>
      <переменная>
        <имя>cIspName</имя>
        <начальное_значение>""</начальное_значение>
        <!--ФИО исполнителя-->
      </переменная>
      <переменная>
        <имя>cIspTel</имя>
        <начальное_значение>""</начальное_значение>
        <!--Телефон исполнителя-->
      </переменная>
      <переменная>
        <имя>RepG151</имя>
        <начальное_значение>CreateObject("form0503buxrepd")</начальное_значение>
      </переменная>
      <переменная>
        <имя>dReportDate</имя>
        <начальное_значение>Date(2023,06,30)</начальное_значение>
      </переменная>
      <переменная>
        <имя>lNoError</имя>
        <начальное_значение>.T.</начальное_значение>
      </переменная>            
    </переменные>
    <запуск_формы>
      <ид>f_0503738_33n_183n_2023</ид>
    </запуск_формы>
    <вычисление>
      <сообщение>Ждите, идет выборка данных ...</сообщение>
      <FPC_><![CDATA[*[VFP]
 dDateEnd   = Iif(Empty(m.dReoDate), DOX(m.dSelDate, 4), m.dReoDate)
 dDateBegin = Iif(Empty(m.dBalOpen), DOX(m.dDateEnd, 1), m.dBalOpen)
   ]]></FPC_>
    </вычисление>
    <печать>
      <!--Печать отчета--><MSE>
        <!--Печать в MS Excel-->
        <FPC_><![CDATA[*[VFP]
*ON ERROR
Local cJoinAn, cJoinAn_D, cJoinAn_K, cWhereMark, cWhereOrg, cFieldAc, i, j, s, c22, cTmp, oRec, cWhereSbF, dDate1, dDate2, cUsl18zb
Local ARRAY arrItog[1], arrBP[1]
Private glBK1, nInitPos, cInitPos, nPos22, cPos22, lKBK1, cWhereAccF, cFieldDb, cFieldKr
Store "" To glBK1, cJoinAn, cJoinAn_D, cJoinAn_K, cWhereOrg, cFieldAc, cUsl18zb

* Формировать по КБК
lKBK1 = m.lKBK Or m.nNPrjOnly = 1

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

* Глава по БК
If m.lOrgPO
  Select fBudMG.Rasp_Code ;
    From OrgBase ;
      Inner Join fBudMG On OrgBase.RN = fBudMG.OrgBase_RN ;
    Where &cWhereKontragent ;
    Into Array arrBP
  *
  If _Tally # 0
    glBK = arrBP(1)
    If m.cOrg # "|" And Len(m.cOrg) = 4   && выбрано только одно БУ
      glBK1 = AllTrim(m.glBK)
    EndIf
  EndIf
EndIf

If Empty(m.glBK)
  Select Rasp_Code ;
    From fBudMG ;
    Where OrgBase_RN = ?oSystem.OwnerOrgRN ;
    Into Array arrBP
  *
  If _Tally # 0
    glBK = arrBP(1)
  EndIf 
EndIf

* длинный или короткий план счетов
nInitPos = Iif(m.nAccType = 1, 19, 2)
cInitPos = LTrim(Str(m.nInitPos))
nPos22   = m.nInitPos + 3
cPos22   = LTrim(Str(m.nPos22))

* Особая отметка
cWhereMark = Iif(Empty(m.cRN_MarkVPL), "", " And B.RN_MARK # '" + m.cRN_MarkVPL + "'") ;
           + Iif(Empty(m.cRN_MarkNOO), "", " And B.RN_MARK # '" + m.cRN_MarkNOO + "'") ;

* Отбор аналитических счетов по контрагенту 
If m.lOrgPO
  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
    For m.i = 1 To 5
      s = Str(m.i, 1)
      cJoinAn = m.cJoinAn + "Left Join crsAccSpRN A" + m.s + " On S.RN_AC_A" + m.s + " = A" + m.s + ".RN "
    Next
    cJoinAn_D = StrTran(m.cJoinAn, "_AC_", "_DB_")
    cJoinAn_K = StrTran(m.cJoinAn, "_AC_", "_KR_")
    cWhereOrg = "AND (!IsNull(A1.RN) Or !IsNull(A2.RN) Or !IsNull(A3.RN) Or !IsNull(A4.RN) Or !IsNull(A5.RN))"
  EndIf
EndIf

* остатки для ассигнований и лимитов БО
dDate1 = DOX(m.dDateBegin, 3)
dDate2 = m.dDateBegin - 1

Select R.RN_ACCOUNT, S.RN_AC_A1, S.RN_AC_A2, S.RN_AC_A3, S.RN_AC_A4, S.RN_AC_A5, S.Summ_Db_Equal - S.Summ_Kr_Equal As Sum_Equal ;
  From AcRest R ;
    Inner Join AcAnRest S On R.RN = S.Master_RN ;
    &cJoinAn ;
  Where R.Date_Rest = ?m.dDate1 &cWhereOrg ;
UNION ALL ;
Select RN_DB As RN_ACCOUNT, S.RN_DB_A1 As RN_AC_A1, S.RN_DB_A2 As RN_AC_A2, S.RN_DB_A3 As RN_AC_A3, S.RN_DB_A4 As RN_AC_A4, S.RN_DB_A5 As RN_AC_A5, S.Sum_Equal ;
  From EopBase B ;
    Left Join EopSpec S On B.RN = S.Master_RN ;
    &cJoinAn_D ;
  Where B.Date_EOP BETWEEN ?m.dDate1 AND ?m.dDate2 &cWhereOrg ;
UNION ALL ;
Select RN_KR As RN_ACCOUNT, S.RN_KR_A1 As RN_AC_A1, S.RN_KR_A2 As RN_AC_A2, S.RN_KR_A3 As RN_AC_A3, S.RN_KR_A4 As RN_AC_A4, S.RN_KR_A5 As RN_AC_A5, -S.Sum_Equal As Sum_Equal ;
  From EopBase B ;
    Left Join EopSpec S On B.RN = S.Master_RN ;
    &cJoinAn_K ;
  Where B.Date_EOP BETWEEN ?m.dDate1 AND ?m.dDate2 &cWhereOrg ;
  Into CURSOR crAcAnRest

* обороты для всех колонок
Select RN_DB, S.RN_DB_A1, S.RN_DB_A2, S.RN_DB_A3, S.RN_DB_A4, S.RN_DB_A5, ;
       RN_KR, S.RN_KR_A1, S.RN_KR_A2, S.RN_KR_A3, S.RN_KR_A4, S.RN_KR_A5, ;
       S.Sum_Equal ;
  From EopBase B ;
    Left Join EopSpec S On B.RN = S.Master_RN ;
    &cJoinAn_D ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cWhereMark &cWhereOrg ;
  Into CURSOR crEopSpecD

Select RN_DB, S.RN_DB_A1, S.RN_DB_A2, S.RN_DB_A3, S.RN_DB_A4, S.RN_DB_A5, ;
       RN_KR, S.RN_KR_A1, S.RN_KR_A2, S.RN_KR_A3, S.RN_KR_A4, S.RN_KR_A5, ;
       S.Sum_Equal ;
  From EopBase B ;
    Left Join EopSpec S On B.RN = S.Master_RN ;
    &cJoinAn_K ;
  Where B.Date_EOP BETWEEN ?m.dDateBegin AND ?m.dDateEnd &cWhereMark &cWhereOrg ;
  Into CURSOR crEopSpecK

CurClose("crsAccSpRN")

* Аналитические счета, КБК, ЭКР
CurOpen("AccSpec,fSbSSpec,fEconCl")

* Счета и аналитика из остатков и проводок
For m.i = 1 To 5
  s = Str(m.i, 1)
  cFieldAc = m.cFieldAc + ", S.RN_AC_A" + m.s + " As RN_AN" + m.s
Next
cFieldDb = StrTran(m.cFieldAc, "_AC_", "_DB_")
cFieldKr = StrTran(m.cFieldAc, "_AC_", "_KR_")
cTmp     = ", Space(1) As AccType, .F. As IsSbF,  Space(1) As S22, Space(36) As KBK, Space(4) As KBK_RN"
cFieldAc = "S.RN_ACCOUNT As RN_ACC" + m.cFieldAc + m.cTmp
cFieldDb = "S.RN_DB As RN_ACC"      + m.cFieldDb + m.cTmp
cFieldKr = "S.RN_KR As RN_ACC"      + m.cFieldKr + m.cTmp

* Доп. условие для нац. проектов
cWhereSbF = Iif(m.nNPrjOnly = 0, "", "Where SubStr(AllTrim(bC.Code), 4, 1) $ 'ADEFGIJLNPRSTVY'") 

* Курсор для поиска ШФ
Select F.RN, ;
       Nvl(bE.CODE,  Space(8)) As ExpCode,;
       Nvl(bE.RN,    Space(4)) As ExpRN,  ;
       Nvl(P.Mnemo, Space(3))  As DohCode,;
       Nvl(P.RN, Space(4))     As DohRN,  ;
       PadR(Iif(?m.nNPrjOnly = 0 Or 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))) ;
          + AllTrim(Nvl(P.Mnemo, Space(3))), 36) 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 ;
    Left Join PRF_ECLS P  ON F.RN_ECLSD = P.RN  ;
  &cWhereSbF ;
  Into CURSOR curSbFTotal_

Select * From curSbFTotal_ Where !Empty(ExpRN) Into CURSOR curSbFTotal
Index On RN Tag RN

If m.nNPrjOnly = 0
  Select * From curSbFTotal_ Where InList(DohCode, "171", "510", "610", "540", "640", "710", "810", "720", "820") Into Cursor curSbFD
  Index On RN Tag RN

  * Курсор для поиска КБК
  Select B.RN, ;
         B.Code                 As Code,   ;
         NVL(P.RN, Space(4))    As DohRN,  ;
         NVL(P.Mnemo, Space(3)) As DohCode ;
    From BKlsDoh B ;
      Left Join PRF_ECLS P On P.RN = B.ECONCL_RN ;  
    Where InList(B.KLS_TYPE, 1, 2) ;
    Into CURSOR curKldRN

  Index On RN Tag RN
EndIf

Use In curSbFTotal_

* Курсоры для расчётов
Create CURSOR curItogAcc (AccType C(1), IsSbF L, S22 C(1), KBK C(36), KBK_RN C(4), Col4 N(18,2), Col5 N(18,2), Col6 N(18,2), Col7 N(18,2), Col8 N(18,2), Col9 N(18,2))
Index On AccType + Iif(IsSbF, "1", "0") + S22 + KBK + KBK_RN Tag T1

Create CURSOR curItog860 (KBK C(36), KBK_RN C(4), Col6 N(18,2))
Index On KBK + KBK_RN Tag T1

* Графа 4 (Утверждено плановых назначений)
= GetCrsAccRN("504")

Select &cFieldAc, S.Sum_Equal As Sum ;
  From crAcAnRest S ;
    Inner Join crsAccRN A ON S.RN_ACCOUNT = A.RN ;
UNION ALL ;
Select &cFieldDb, S.Sum_Equal As Sum ;
  From crEopSpecD S ;
    Inner Join crsAccRN A ON S.RN_DB = A.RN ;
UNION ALL ;
Select &cFieldKr, -S.Sum_Equal As Sum ;
  From crEopSpecK S ;
    Inner Join crsAccRN A ON S.RN_KR = A.RN ;
  Into CURSOR crs4 READWRITE

= AnalizAcc("crs4", .F., .F., "", "2,3,5,8")
= InsertToTable(4)

* Графа 5 (Принимаемые обязательства)
= GetCrsAccRN("502?7")

Select &cFieldAc, -S.Sum_Equal As Sum ;
  From crAcAnRest S ;
    Inner Join crsAccRN A ON S.RN_ACCOUNT = A.RN ;
UNION ALL ;
Select &cFieldDb, -S.Sum_Equal As Sum ;
  From crEopSpecD S ;
    Inner Join crsAccRN A ON S.RN_DB = A.RN ;
UNION ALL ;
Select &cFieldKr, S.Sum_Equal As Sum ;
  From crEopSpecK S ;
    Inner Join crsAccRN A ON S.RN_KR = A.RN ;
  Into CURSOR crs5 READWRITE

= AnalizAcc("crs5")
= InsertToTable(5)

* Графа 6 (Принято обязательств всего)
= GetCrsAccRN("502?1")

Select &cFieldKr, S.Sum_Equal As Sum ;
  From crEopSpecK S ;
    Inner Join crsAccRN A ON S.RN_KR = A.RN ;
  Into CURSOR crs6 READWRITE

= AnalizAcc("crs6")
= InsertToTable(6)

If m.lOsKr502x2
  = GetCrsAccRN("502?2", "SubStr(AccBase.Account, " + m.cPos22 + ", 1) # '1'")

  Select &cFieldAc, -S.Sum_Equal As Sum ;
    From crAcAnRest S ;
      Inner Join crsAccRN A ON S.RN_ACCOUNT = A.RN ;
    Into CURSOR crs6 READWRITE

  = AnalizAcc("crs6", .F., .T.)
  = InsertToTable(6)
EndIf

* Графа 6 (Принято обязательств всего - для строки 860)
= GetCrsAccRN("502?9")

Select &cFieldAc, -S.Sum_Equal As Sum ;
  From crAcAnRest S ;
    Inner Join crsAccRN A ON S.RN_ACCOUNT = A.RN ;
UNION ALL ;
Select &cFieldDb, -S.Sum_Equal As Sum ;
  From crEopSpecD S ;
    Inner Join crsAccRN A ON S.RN_DB = A.RN ;
UNION ALL ;
Select &cFieldKr, S.Sum_Equal As Sum ;
  From crEopSpecK S ;
    Inner Join crsAccRN A ON S.RN_KR = A.RN ;
  Into CURSOR crs6 READWRITE

= AnalizAcc("crs6", .T.)

lNoError = RepG151.GetComRepPrm151("_0503738", m.lNoError, 6)

Select crs6
Scan For m.lNoError
  Scatter FIELDS KBK, KBK_RN, Sum NAME oRec
  Select curItog860
  If !Seek(oRec.KBK + oRec.KBK_RN)
    Insert Into curItog860 From NAME oRec
  EndIf
  Replace Col6 With Col6 + oRec.Sum
EndScan

Use In crs6

* Графа 7 (Принятые бюджетные обязательства с применением конкурентных способов)
= GetCrsAccRN("502?7")

Select &cFieldDb, S.Sum_Equal As Sum ;
  From crEopSpecD S ;
    Inner Join crsAccRN A ON S.RN_DB = A.RN ;
    Inner Join AccBase  C ON S.RN_KR = C.RN ;
  Where Like("502?1", SubStr(C.ACCOUNT, ?m.nInitPos, 5)) ;
  Into CURSOR crs7 READWRITE

= AnalizAcc("crs7")
= InsertToTable(7)

* Графа 8 (Денежные обязательства)
= GetCrsAccRN("502?2")

Select &cFieldKr, S.Sum_Equal As Sum ;
  From crEopSpecK S ;
    Inner Join crsAccRN A ON S.RN_KR = A.RN ;
  Into CURSOR crs8 READWRITE

= AnalizAcc("crs8")
= InsertToTable(8)

* Графа 9 (Исполнено денежных обязательств)
cWhereAccF = "AccBase.TFin_Type = 1 And !Empty(AccBase.RN_TFIN)"

If m.nChkFormAcb = 0   && по забалансовым счетам
  If !Empty(m.cUsl18)
    cUsl18zb = " AND (AT('з', AccBase.Account) = 1 Or InList(SubStr(AccBase.Account, AT('з', AccBase.Account) - 1," + SubStr(m.cUsl18, 40) + ")"
  EndIf

  = GetCrsAccRN("", "!AccBase.L_Balance And 'з18' $ AccBase.Account" + m.cUsl18zb)

  Select &cFieldDb, -S.Sum_Equal As Sum ;
    From crEopSpecD S ;
      Inner Join crsAccRN A ON S.RN_DB = A.RN ;
  UNION ALL ;
  Select &cFieldKr, S.Sum_Equal As Sum ;
    From crEopSpecK S ;
      Inner Join crsAccRN A ON S.RN_KR = A.RN ;
    Into CURSOR crs9 READWRITE

  = AnalizAcc("crs9", .F., .F., "1", "!51,61")
  = InsertToTable(9)
Else   && по балансовым счетам
  = GetTurnsFormAcb()
EndIf

* Некассовые операции
= GetTurnsNKO()

CurClose("curSbFTotal;curSbFD;curKldRN;crEopSpecD;crEopSpecK")

 ** 1. Бюджетные обязательства текущего (отчетного) финансового года по расходам
 Select KBK, KBK_RN, Col4, Col5, Col6, Col7, Col8, Col9 ;
   From curItogAcc ;
   Where AccType = "R" And S22 = "1" And !(Col4 = 0 And Col5 = 0 And Col6 = 0 And Col7 = 0 And Col8 = 0 And Col9 = 0) ;
   Order By 1, 2 ;
   Into CURSOR curItogR

 ** 2. Бюджетные обязательства текущего (отчетного) финансового года по выплатам источников финансирования дефицита бюджета
 Select KBK, KBK_RN, IsSbF, Col4, Col5, Col6, Col7, Col8, Col9 ;
   From curItogAcc ;
   Where AccType = "D" And S22 = "1" And !(Col4 = 0 And Col5 = 0 And Col6 = 0 And Col7 = 0 And Col8 = 0 And Col9 = 0) ;
   Order By 1, 2, 3 ;
   Into CURSOR curItogD

 ** 3. Обязательства финансовых годов, следующих за текущим (отчетным) финансовым годом
 Select KBK, KBK_RN, S22, Col4, Col5, Col6, Col7, Col8;
   From curItogAcc ;
   Where AccType = "R" And InList(S22, "2", "3", "4", "9") And !(Col4 = 0 And Col5 = 0 And Col6 = 0 And Col7 = 0 And Col8 = 0) ;
   Order By 1, 2 ;
   Into CURSOR curItog800

 Private ALL LIKE nIt*

 If m.nNPrjOnly = 0
   * 800 (по расходам)
   Select curItog800
   Sum Col4, Col5, Col6, Col7, Col8 To nIt800_4, nIt800_5, nIt800_6, nIt800_7, nIt800_8

   * 860 (из них по отложенным обязательствам)
   Select curItog860
   Sum Col6 To nIt860_6
 EndIf

 * 900 (по выплатам источников финансирования дефицита бюджета)
 Select curItogAcc
 Sum Col4, Col5, Col6, Col7, Col8 For AccType = "D" And InList(S22, "2", "3", "4", "9") To nIt900_4, nIt900_5, nIt900_6, nIt900_7, nIt900_8

 Use In curItogAcc

* Формирую имя файла            
If !Empty(m.cUnlPath)
  Local nNum, cNum, nN, nLen
  Local ARRAY aFiles[1]
  cUnlPath  = AllTrim(m.cUnlPath)
  cFormCode = "338" + Iif(m.nNPrjOnly = 0, "", "np") + Iif(Empty(m.cVFO), "", RTrim(arrVFO(AScan(arrVFO, m.cVFO) + 1)))
  cFileName = m.cFormCode
  Do Case
    Case !Empty(m.dReoDate)                   && реорганизация
      cFileName = m.cFileName + "R"
    Case Month(m.dDateEnd + 1) = 1            && год
      cFileName = m.cFileName + "Y"
    Case Month(m.dDateEnd + 1) = 7            && полугодие
      cFileName = m.cFileName + "P"
    Case InList(Month(m.dDateEnd + 1), 4, 10) && квартал
      cFileName = m.cFileName + "Q"
    Other                                     && месяц
      cFileName = m.cFileName + "M"
  EndCase
  nLen = Len(m.cFileName) + 1
  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), m.nLen, m.nN - m.nLen)
      If m.nNum < Val(m.cNum)
        nNum = Val(m.cNum)
      EndIf 
      If m.nNum = 99
        nNum = 0
      EndIf
    Next
  EndIf
  cFileName = m.cUnlPath + m.cFileName + PadL(Int(m.nNum) + 1, 2, "0") + ".txt"
EndIf

* Печать отчета
Private oPrint
oPrint = objCaller.objExcelRep

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

* 1. Бюджетные обязательства текущего (отчетного) финансового года по расходам
Select curItogR
i = 1
Scan
  * Печать строки
  If m.i # 1
    oPrint.InsertRange()
  EndIf
  oPrint.PrintRange("SpecR")
  i = m.i + 1
EndScan   

* 2. Бюджетные обязательства текущего (отчетного) финансового года по выплатам источников финансирования дефицита бюджета
Select curItogD
i = 1
Scan
  * Печать строки
  If m.i # 1
    oPrint.InsertRange()
  EndIf
  oPrint.PrintRange("SpecD")
  i = m.i + 1
EndScan   

* 3. Обязательства финансовых годов, следующих за текущим (отчетным) финансовым годом
If m.nNPrjOnly = 0
  * в том числе по расходам (800), по отложенным обязательствам (860)
  oPrint.PrintRange("Spec800")
Else
  * 810, 820, 830, 850
  For m.j = 1 To 4
    s = Iif(m.j = 4, "5", Str(m.j, 1))
    c22 = Iif(m.j = 4, "9", Str(m.j + 1, 1))
    Select curItog800
    i = 1
    Scan For S22 = m.c22
      * Печать строки
      If m.i # 1
        oPrint.InsertRange()
      EndIf
      oPrint.PrintRange("Spec8" + m.s + "0")
      i = m.i + 1
    EndScan
  Next

  * 860 - по отложенным обязательствам
  Select curItog860
  i = 1
  Scan For Col6 # 0
    * Печать строки
    If m.i # 1
      oPrint.InsertRange()
    EndIf
    oPrint.PrintRange("Spec860")
    i = m.i + 1
  EndScan   
EndIf

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

CurClose("curItogR;curItogD;curItog800;curItog860")

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

oPrint = NULL


*ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
*     Подсчёт сумм: Исполнение расходов по балансовым счетам   *
*ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
Procedure GetTurnsFormAcb

Local cWhereKosGU, cWhereCorr, cAnLevelDD, cAnLevel4, cAnLevel5, cUnitExpKind
Local ARRAY arrVidR[1]
cAnLevelDD   = Str(m.nAnLevelDD, 1)
cAnLevel4    = Str(m.nAnLevel4, 1)
cAnLevel5    = Str(m.nAnLevel5, 1)
cUnitExpKind = UnitRN("ExpenseKinds")

** Обороты по счетам 20111, 2012, 20134
= GetCrsAccRN("20111,2012,20134", Iif(m.nAnLevelDD = 0, m.cWhereAccF, ""))

* Исключение проводок по корреспонденции
cWhereCorr = " And SubStr(C.Account, ?m.nInitPos, 3) # '201'" ;
           + " And !InList(SubStr(C.Account, ?m.nInitPos, 5), '21003', '21005')" ;
           + " And !(SubStr(C.Account, ?m.nInitPos, 5) = '40110' And Like('171*', AllTrim(Nvl(AnC.SAccount, Space(15)))))"

* Отбор проводок по КОСГУ
cWhereKosGU = "(Like('2*', AllTrim(GU.SAccount)) Or Like('3*', AllTrim(GU.SAccount)) Or Like('53*', AllTrim(GU.SAccount)) Or Like('55*', AllTrim(GU.SAccount)))"

If m.nAnLevelDD = 0   && ШФ ищется в заголовке рассматриваемого счета
  Select A.RN_TFIN, -S.SUM_EQUAL As Summ ;
    From crEopSpecD S ;
      Inner Join crsAccRN A   On S.RN_DB = A.RN ;
      Inner Join AccSpec  GU  On S.RN_DB_A&cAnLevel4 = GU.RN ;
      Inner Join AccBase  C   On S.RN_KR = C.RN ;
      Left  Join AccSpec  AnC On S.RN_KR_A&cAnLevel5 = AnC.RN ;
    Where &cWhereKosGU &cWhereCorr ;
  UNION ALL ;
  Select A.RN_TFIN, S.SUM_EQUAL As Summ ;
    From crEopSpecK S ;
      Inner Join crsAccRN A   On S.RN_KR = A.RN ;
      Inner Join AccSpec  GU  On S.RN_KR_A&cAnLevel4 = GU.RN ;
      Inner Join AccBase  C   On S.RN_DB = C.RN ;
      Left  Join AccSpec  AnC On S.RN_DB_A&cAnLevel5 = AnC.RN ;
    Where &cWhereKosGU &cWhereCorr ;
    Into CURSOR curTurns1

  Select RN_TFIN, Sum(Summ) As Summ From curTurns1 Group By 1 Into CURSOR curTurns2

  USE In curTurns1

  Select Iif(?m.lKBK1, F.RN, F.ExpRN) As KBK_RN, ;
         Iif(?m.lKBK1, F.BcrCode, PadR(F.ExpCode, 36)) As KBK, ;
         .F. As LCode, ;
         Sum(S.Summ) As Col9 ;
    From curTurns2 S ;
      Inner Join curSbfTotal F On S.RN_TFIN = F.RN ;
    GROUP BY 1 ;
    Into CURSOR curTurns201

  USE In curTurns2
Else
  Create CURSOR curTurns4 (KBK_RN C(4), KBK C(36), LCode L, Col9 N (18,2))

  Select crsAccRN
  Scan For Seek(RN, "AccBase", "RN")
    Do Case
      Case AccBase.SLOVAN&cAnLevelDD._RN = m.cUnitExpKind   && Виды расходов
        Select An.SAccount, An.RN_COMMON, -S.SUM_EQUAL As Summ ;
          From crEopSpecD S ;
            Inner Join AccSpec An  On S.RN_DB_A&cAnLevelDD = An.RN ;
            Inner Join AccSpec GU  On S.RN_DB_A&cAnLevel4 = GU.RN ;
            Inner Join AccBase C   On S.RN_KR = C.RN ;
            Left  Join AccSpec AnC On S.RN_KR_A&cAnLevel5 = AnC.RN ;
          Where S.RN_DB = ?crsAccRN.RN And &cWhereKosGU &cWhereCorr ;
        UNION ALL ;
        Select An.SAccount, An.RN_COMMON, S.SUM_EQUAL As Summ ;
          From crEopSpecK S ;
            Inner Join AccSpec An  On S.RN_KR_A&cAnLevelDD = An.RN ;
            Inner Join AccSpec GU  On S.RN_KR_A&cAnLevel4 = GU.RN ;
            Inner Join AccBase C   On S.RN_DB = C.RN ;
            Left  Join AccSpec AnC On S.RN_DB_A&cAnLevel5 = AnC.RN ;
          Where S.RN_KR = ?crsAccRN.RN And &cWhereKosGU &cWhereCorr ;
          Into CURSOR curTurns1

        Select SAccount, RN_COMMON As ExpRN, Sum(Summ) As Summ ;
          From curTurns1 ;
          Group By 1, 2 ;
          Into CURSOR curTurns2 READWRITE

        USE In curTurns1

        Select curTurns2
        Scan For Empty(ExpRN)   && Пытаемся подобрать вид расходов по совпадению кода с кодом аналитики
          Select RN From bExpKind Where CODE = PadR(Left(AllTrim(?curTurns2.SAccount), 3), 8) Into ARRAY arrVidR
          If _Tally # 0
            Replace ExpRN With arrVidR[1] In curTurns2
          EndIf
        EndScan

        Select Iif(?m.lKBK1, Space(4), S.ExpRN) As KBK_RN, ;
               Iif(?m.lKBK1, PadL(AllTrim(Nvl(bE.CODE, Space(8))), 20, "0"), Nvl(bE.CODE, Space(8))) As KBK, ;
               Sum(S.Summ) As Col9 ;
          From curTurns2 S ;
            Left Join bExpKind bE On S.ExpRN = bE.RN ;
          GROUP BY 1, 2 ;
          Into CURSOR curTurns3

        Select curTurns3
        Scan
          Insert Into curTurns4 (KBK_RN, KBK, LCode, Col9) VALUES (curTurns3.KBK_RN, curTurns3.KBK, m.lKBK1, curTurns3.Col9)
        EndScan
        USE In curTurns3

      Case AccBase.TFin_Type = 2 And AT('9', AccBase.SMETA_AN) = m.nAnLevelDD   && ШФ
        Select An.RN_TFIN, -S.SUM_EQUAL As Summ ;
          From crEopSpecD S ;
            Inner Join AccSpec  An  On S.RN_DB_A&cAnLevelDD = An.RN ;
            Inner Join AccSpec  GU  On S.RN_DB_A&cAnLevel4 = GU.RN ;
            Inner Join fSbFBase F   On An.RN_TFIN = F.RN ;
            Inner Join AccBase  C   On S.RN_KR = C.RN ;
            Left  Join AccSpec  AnC On S.RN_KR_A&cAnLevel5 = AnC.RN ;
          Where S.RN_DB = ?crsAccRN.RN And &cWhereKosGU &cWhereCorr ;
        UNION ALL ;
        Select An.RN_TFIN, S.SUM_EQUAL As Summ ;
          From crEopSpecK S ;
            Inner Join AccSpec  An  On S.RN_KR_A&cAnLevelDD = An.RN ;
            Inner Join AccSpec  GU  On S.RN_KR_A&cAnLevel4 = GU.RN ;
            Inner Join fSbFBase F   On An.RN_TFIN = F.RN ;
            Inner Join AccBase  C   On S.RN_DB = C.RN ;
            Left  Join AccSpec  AnC On S.RN_DB_A&cAnLevel5 = AnC.RN ;
          Where S.RN_KR = ?crsAccRN.RN And &cWhereKosGU &cWhereCorr ;
          Into CURSOR curTurns1

        Select RN_TFIN, Sum(Summ) As Summ From curTurns1 Group By 1 Into CURSOR curTurns2

        USE In curTurns1

        Select Iif(?m.lKBK1, F.RN, F.ExpRN) As KBK_RN, ;
               Iif(?m.lKBK1, F.BcrCode, F.ExpCode) As KBK, ;
               Sum(S.Summ) As Col9 ;
          From curTurns2 S ;
            Inner Join curSbfTotal F On S.RN_TFIN = F.RN ;
          GROUP BY 1 ;
          Into CURSOR curTurns3

        USE In curTurns2

        Select curTurns3
        Scan
          Insert Into curTurns4 (KBK_RN, KBK, LCode, Col9) VALUES (curTurns3.KBK_RN, curTurns3.KBK, .F., curTurns3.Col9)
        EndScan
        USE In curTurns3
    EndCase
  EndScan

  Select KBK_RN, KBK, LCode, Sum(Col9) As Col9 ;
    From curTurns4 ;
    GROUP BY 1, 2, 3 ;
    Into CURSOR curTurns201

  Use In curTurns4
EndIf

lNoError = RepG151.GetComRepPrm151("_0503738", m.lNoError, 9)

Select curTurns201
Scan For m.lNoError
  Select curItogAcc
  If curTurns201.LCode
    Locate For AccType = "R" And S22 = "1" And KBK = curTurns201.KBK And Empty(KBK_RN)
  Else
    Locate For AccType = "R" And S22 = "1" And KBK_RN = curTurns201.KBK_RN
  EndIf
  If !Found()
    Insert Into curItogAcc (AccType, S22, KBK_RN, KBK) VALUES ("R", "1", curTurns201.KBK_RN, curTurns201.KBK)
  EndIf
  Replace Col9 With Col9 + curTurns201.Col9
EndScan

USE In curTurns201

** Обороты по счету 208
= GetCrsAccRN("208", m.cWhereAccF)

Select A.RN_TFIN, S.SUM_EQUAL As Summ ;
  From crEopSpecD S ;
    Inner Join crsAccRN A On S.RN_DB = A.RN ;
    Inner Join AccBase  C  On S.RN_KR = C.RN ;
  Where SubStr(C.Account, ?m.nInitPos, 5) = '21003' ;
UNION ALL ;
Select A.RN_TFIN, -S.SUM_EQUAL As Summ ;
  From crEopSpecD S ;
    Inner Join crsAccRN A On S.RN_KR = A.RN ;
    Inner Join AccBase  C  On S.RN_DB = C.RN ;
  Where SubStr(C.Account, ?m.nInitPos, 5) = '21003' ;
  Into CURSOR curTurns1

Select RN_TFIN, Sum(Summ) As Summ From curTurns1 Group By 1 Into CURSOR curTurns2

USE In curTurns1

Select "R" As AccType, .F. As IsSbF, "1" As S22, ;
       Iif(?m.lKBK1, F.RN, F.ExpRN) As KBK_RN, ;
       Iif(?m.lKBK1, F.BcrCode, PadR(F.ExpCode, 36)) As KBK, ;
       Sum(S.Summ) As Sum ;
  From curTurns2 S ;
    Inner Join curSbfTotal F On S.RN_TFIN = F.RN ;
  Group By 1 ;
  Into CURSOR crs9

USE In curTurns2

= InsertToTable(9)

EndProc


*ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
*     Подсчёт сумм: Некассовые операции                        *
*ШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШШ
Procedure GetTurnsNKO

= GetCrsAccRN("302", m.cWhereAccF)

Select A.RN_TFIN, S.SUM_EQUAL As Summ ;
  From crEopSpecD S ;
    Inner Join crsAccRN A On S.RN_DB = A.RN ;
    Inner Join AccBase  C On S.RN_KR = C.RN ;
  Where InList(SubStr(C.Account, ?m.nInitPos, 4), '2052', '2053', '2054', '2055', '2056', '2057', '2058', '2094') Or InList(SubStr(C.Account, ?m.nInitPos, 5), '30406', '21005') ;
UNION ALL ;
Select A.RN_TFIN, -S.SUM_EQUAL As Summ ;
  From crEopSpecD S ;
    Inner Join crsAccRN A On S.RN_KR = A.RN ;
    Inner Join AccBase  C On S.RN_DB = C.RN ;
  Where InList(SubStr(C.Account, ?m.nInitPos, 4), '2052', '2053', '2054', '2055', '2056', '2057', '2058', '2094') Or InList(SubStr(C.Account, ?m.nInitPos, 5), '30406', '21005') ;
  Into CURSOR crs302

= GetCrsAccRN("30403", m.cWhereAccF)

Select A.RN_TFIN, S.SUM_EQUAL As Summ ;
  From crEopSpecD S ;
    Inner Join crsAccRN A On S.RN_DB = A.RN ;
    Inner Join AccBase  C On S.RN_KR = C.RN ;
  Where InList(SubStr(C.Account, ?m.nInitPos, 3), '208', '209') Or SubStr(C.Account, ?m.nInitPos, 5) = '30406' ;
UNION ALL ;
Select A.RN_TFIN, -S.SUM_EQUAL As Summ ;
  From crEopSpecK S ;
    Inner Join crsAccRN A On S.RN_KR = A.RN ;
    Inner Join AccBase  C On S.RN_DB = C.RN ;
  Where InList(SubStr(C.Account, ?m.nInitPos, 3), '208', '209') Or SubStr(C.Account, ?m.nInitPos, 5) = '30406' ;
  Into CURSOR crs30403

= GetCrsAccRN("208", m.cWhereAccF)

Select A.RN_TFIN, S.SUM_EQUAL As Summ ;
  From crEopSpecD S ;
    Inner Join crsAccRN A On S.RN_DB = A.RN ;
    Inner Join AccBase  C On S.RN_KR = C.RN ;
  Where SubStr(C.Account, ?m.nInitPos, 5) = '30403' ;
UNION ALL ;
Select A.RN_TFIN, -S.SUM_EQUAL As Summ ;
  From crEopSpecK S ;
    Inner Join crsAccRN A On S.RN_KR = A.RN ;
    Inner Join AccBase  C On S.RN_DB = C.RN ;
  Where SubStr(C.Account, ?m.nInitPos, 5) = '30403' ;
  Into CURSOR crs208

Select * From crs302 UNION ALL Select * From crs30403 UNION ALL Select * From crs208 Into CURSOR curTurns1
CurClose("crs302;crs30403;crs208")

Select RN_TFIN, Sum(Summ) As Summ From curTurns1 Group By 1 Into CURSOR curTurns2
USE In curTurns1

Select "R" As AccType, .F. As IsSbF, "1" As S22, ;
       Iif(?m.lKBK1, F.RN, F.ExpRN) As KBK_RN, ;
       Iif(?m.lKBK1, F.BcrCode, PadR(F.ExpCode, 36)) As KBK, ;
       Sum(S.Summ) As Sum ;
  From curTurns2 S ;
    Inner Join curSbfTotal F On S.RN_TFIN = F.RN ;
  GROUP BY 4 ;
  Into CURSOR crs9

USE In curTurns2

= InsertToTable(9)

= GetCrsAccRN("30406")

Select &cFieldDb, S.Sum_Equal As Sum ;
  From crEopSpecD S ;
    Inner Join crsAccRN A ON S.RN_DB = A.RN ;
    Inner Join AccBase  C On S.RN_KR = C.RN ;
  Where SubStr(C.Account, ?m.nInitPos, 5) = '30406' ;
UNION ALL ;
Select &cFieldKr, -S.Sum_Equal As Sum ;
  From crEopSpecK S ;
    Inner Join crsAccRN A ON S.RN_KR = A.RN ;
    Inner Join AccBase  C On S.RN_DB = C.RN ;
  Where SubStr(C.Account, ?m.nInitPos, 5) = '30406' ;
  Into CURSOR crs9 READWRITE

= AnalizAcc("crs9", .T., .F., "1")
= InsertToTable(9)

EndProc


******************************************************************************
Procedure GetCrsAccRN
  LParameters cSubs, cWhereAcc

  Local cWhere, nPos, cSubs1

  If !Empty(m.cSubs)
    cSubs  = m.cSubs + ","
    nPos   = AT(",", m.cSubs)
    cWhere = ""
    DO While m.nPos # 0
      cSubs1 = Left(m.cSubs, m.nPos - 1)
      cSubs  = SubStr(m.cSubs, m.nPos + 1)
      nPos   = AT(",", m.cSubs)
      cWhere = m.cWhere + Iif(Empty(m.cWhere), "", " OR ") + "Like('" + m.cSubs1 + "', SubStr(AccBase.Account, " + m.cInitPos + ", " + LTrim(Str(Len(m.cSubs1))) + "))"
    EndDO
    If " OR " $ m.cWhere
      cWhere = "(" + m.cWhere + ")"
    EndIf
    cWhere = m.cWhere + m.cUsl18
  EndIf

  If !Empty(m.cWhereAcc)
    cWhere = Iif(Empty(m.cWhere), "", m.cWhere + " AND ") + m.cWhereAcc
  EndIf
  
  CurClose("crsAccRN")

  Select AccBase.RN, AccBase.RN_TFIN ;
    From AccBase ;
      Left Join BalUnit On AccBase.RN_BalUnit = BalUnit.RN ;
    Where &cWhere &cWhereBalUnits ;
    Into CURSOR crsAccRN

  Index On RN Tag RN

EndProc


******************************************************************************
 Procedure AnalizAcc
  Parameters cAlias, lSbFOnly, l502X2, cS22Def, cKOSGU

  Local cType, cS22, cKBK, cKslRN, cField, cAnRN, cTFinRN, lIsSbF

  Select (m.cAlias)
  Scan
    = Seek(&cAlias..RN_Acc, "AccBase", "RN")
    Store "" To cType, cTFinRN
    lIsSbF = .F.
    
    * проверка КОСГУ
    If !Empty(m.cKOSGU) And !CheckKOSGU()
      Delete In (m.cAlias)
      Loop
    EndIf

    * отбор по шаблону финансирования
    If AccBase.TFIN_TYPE # 1 And AT("9", AccBase.Smeta_An) > 0
      cField  = m.cAlias + ".RN_AN" + Str(AT("9", AccBase.Smeta_An), 1)
      cAnRN   = Evaluate(m.cField)
      cTFinRN = Iif(!Empty(m.cAnRN) And Seek(m.cAnRN, "AccSpec", "RN"), AccSpec.RN_TFIN, "")
    Else
      cTFinRN = Iif(AccBase.TFIN_TYPE = 1, AccBase.RN_TFIN, "")
    EndIf
    If !Empty(m.cTFinRN)
      If Seek(m.cTFinRN, "curSbFTotal", "RN")
        If m.lKBK1
          cKBK   = curSbFTotal.BcrCode
          cKslRN = curSbFTotal.RN
        Else
          cKBK   = curSbFTotal.ExpCode
          cKslRN = curSbFTotal.ExpRN
        EndIf
        cType  = "R"
      Else
        * отбор по шаблону финансирования, где дескриптор "КЭКД" заполнен одним из кодов {171, 510, 610, 540, 640, 710, 810, 720, 820}
        If !m.lSbFOnly And m.nNPrjOnly = 0 And Seek(m.cTFinRN, "curSbFD", "RN")
          If m.lKBK
            cKBK   = curSbFD.BcrCode
            cKslRN = curSbFD.RN
          Else
            cKBK   = curSbFD.DohCode
            cKslRN = curSbFD.DohRN
          EndIf
          lIsSbF = .T.
          cType  = "D"
        EndIf
      EndIf
    EndIf

    * отбор по классификатору доходов (сначала смотрим в счете, затем в аналитике)
    If Empty(m.cType) And !m.lSbFOnly And m.nNPrjOnly = 0
      cTFinRN = AccBase.RN_KLSDOH
      If Empty(m.cTFinRN) And AT("3", AccBase.Org_An) > 0
        cField  = m.cAlias + ".RN_AN" + Str(AT("3", AccBase.Org_An), 1)
        cAnRN   = Evaluate(m.cField)
        cTFinRN = Iif(!Empty(m.cAnRN) And Seek(m.cAnRN, "AccSpec", "RN"), AccSpec.RN_KlsDoh, "")
      EndIf
      If !Empty(m.cTFinRN) And Seek(m.cTFinRN, "curKldRN", "RN")
        If m.lKBK
          cKBK   = curKldRN.Code
          cKslRN = curKldRN.RN
        Else
          cKBK   = curKldRN.DohCode
          cKslRN = curKldRN.DohRN
        EndIf
        cType  = "D"
      EndIf
    EndIf

    If Empty(m.cType)
      Delete In (m.cAlias)
      Loop
    EndIf

    cS22 = SubStr(AccBase.Account, m.nPos22, 1)

    Do Case
      Case m.l502X2
        cS22 = Str(Val(m.cS22) - 1, 1)
      Case !Empty(m.cS22Def)
        cS22 = m.cS22Def
    EndCase

    Replace AccType With m.cType,  ;
            IsSbF   With m.lIsSbF, ;
            S22     With m.cS22 In (m.cAlias)

    If m.cS22 = "1" Or m.nNPrjOnly = 1   && только для текущего (отчетного) финансового года или для нацпроектов
      && код распорядителя, если выбрано только одно БУ
      If m.lKBK1 And !Empty(m.glBK1)
        cKBK = m.glBK1 + SubStr(m.cKBK, Len(m.glBK1) + 1)
      EndIf

      Replace KBK    With m.cKBK, ;
              KBK_RN With m.cKslRN In (m.cAlias)
    EndIf
  EndScan

 EndProc


******************************************************************************
 Procedure CheckKOSGU

  Local nKOSGULevel, cWhereKOSGU, cKOSGU1, nPos, lNot, cField, cAnRN

  nKOSGULevel = AT("8", AccBase.SMETA_AN)
  cKOSGU1 = m.cKOSGU + ","
  lNot = Left(m.cKOSGU1, 1) = "!"

  If m.nKOSGULevel = 0
    Return m.lNot
  EndIf

  If m.lNot
    cKOSGU1 = SubStr(m.cKOSGU1, 2)
  EndIf

  cWhereKOSGU = ""
  nPos = AT(",", m.cKOSGU1)
  DO While m.nPos # 0
    cWhereKOSGU = m.cWhereKOSGU + Iif(Empty(m.cWhereKOSGU), "", " OR ") + "Like('" + Left(m.cKOSGU1, m.nPos - 1) + "*', AllTrim(AccSpec.SAccount))"
    cKOSGU1 = SubStr(m.cKOSGU1, m.nPos + 1)
    nPos = AT(",", m.cKOSGU1)
  EndDO
  If " OR " $ m.cWhereKOSGU
    cWhereKOSGU = "(" + m.cWhereKOSGU + ")"
  EndIf
  If m.lNot
    cWhereKOSGU = "!" + m.cWhereKOSGU
  EndIf

  cField = m.cAlias + ".RN_AN" + Str(m.nKOSGULevel, 1)
  cAnRN  = Evaluate(m.cField)

  If Empty(m.cAnRN) Or !Seek(m.cAnRN, "AccSpec", "RN")
    Return m.lNot
  Else
    Return Evaluate(m.cWhereKOSGU)
  EndIf

 EndProc


******************************************************************************
Procedure InsertToTable
  LParameters nCol

  Local cAliasFr, s, oRec
  s = LTrim(Str(m.nCol))
  cAliasFr = "crs" + m.s
  lNoError = RepG151.GetComRepPrm151("_0503738", m.lNoError, m.nCol)

  Select (m.cAliasFr)
  Scan For m.lNoError
    Scatter FIELDS AccType, IsSbF, S22, KBK, KBK_RN, Sum NAME oRec
    Select curItogAcc
    If !Seek(oRec.AccType + Iif(oRec.IsSbF, "1", "0") + oRec.S22 + oRec.KBK + oRec.KBK_RN)
      Insert Into curItogAcc From NAME oRec
    EndIf
    Replace Col&s With Col&s + oRec.Sum
  EndScan

  CurClose(m.cAliasFr + ";crsAccRN")
EndProc
*]]></FPC_></MSE>
   <FPC_><![CDATA[*[VFP]
RepG151.GetOutS(.T.)
]]></FPC_>
    </печать>
  </отчет>
  <форма>
    <ид>f_0503738_33n_183n_2023</ид>
    <тип>XML</тип>
    <описание>
      <дополнительно>
        <desc_version>1.0</desc_version>
      </дополнительно>
      <VFP_свойство имя="Name">f_0503738</VFP_свойство>
      <VFP_свойство имя="Caption">Форма 0503738-33н_ред183н_2023</VFP_свойство>
      <VFP_свойство имя="Height">455</VFP_свойство>
      <VFP_свойство имя="Width">470</VFP_свойство>
      <VFP_метод имя="Valid"><![CDATA[LParam oThis, oThisForm
Local c18, cSymb, i
Local cTmpStr
Local cTmpStrSBF, cTmpAlias, cTmpWhere

oPage = oThisForm.TPageMain.Page1

dSelDate = oPage.cntSelDate.RestDate.Value

If Empty(oPage.cntReoDate.Text.Value) And DOX(m.dSelDate, 4) < oPage.cntBalOpen.Text.Value
   =ExclMes("Дата расчета показателей вступительного баланса должна предшествовать или принадлежать отчетному периоду!")
   oThisForm.TPageMain.ActivePage = 1
   oPage.cntBalOpen.Text.SetFocus()
   Return .F.
EndIf

If !Empty(oPage.cntBalOpen.Text.Value) And Empty(oPage.cntReoDate.Text.Value) And Year(oPage.cntBalOpen.Text.Value) # Year(m.dSelDate)
   =ExclMes("Дата расчета показателей вступительного баланса и отчетный период должны относиться к одному году!")
   oThisForm.TPageMain.ActivePage = 1
   oPage.cntBalOpen.Text.SetFocus()
   Return .F.
EndIf

If !Empty(oPage.cntReoDate.Text.Value) And oPage.cntReoDate.Text.Value < oPage.cntBalOpen.Text.Value
   =ExclMes("Дата расчета показателей вступительного баланса должна быть меньше даты реорганизации или равна ей!")
   oThisForm.TPageMain.ActivePage = 1
   oPage.cntBalOpen.Text.SetFocus()
   Return .F.
EndIf

If !Empty(oPage.cntBalOpen.Text.Value) And !Empty(oPage.cntReoDate.Text.Value) And Year(oPage.cntReoDate.Text.Value) # Year(oPage.cntBalOpen.Text.Value)
   =ExclMes("Дата расчета показателей вступительного баланса и дата реорганизации должны относиться к одному году!")
   oThisForm.TPageMain.ActivePage = 1
   oPage.cntBalOpen.Text.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)
  c18 = oPage.Cmb_VFO.Value
EndIf

c18 = ChrTran(m.c18, " ", "")

Store "" To cUsl18

If !Empty(m.c18)
  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 = " AND InList(SubStr(AccBase.Account, " + Iif(m.nAccType = 1, "18", "1") + ", 1), " + m.cUsl18 + ")"
EndIf

cWhereKontragent = oPage.OrgFrom.GetCond()
cWhereBalUnits   = oPage.Balunits.GetCond()

If !Empty(m.cWhereBalUnits)
  cWhereBalUnits = " AND " + m.cWhereBalUnits
EndIf

cOrg      = oPage.OrgFrom.GetSaveValue()
cRN_Found = oPage.Founder.Value
cBalUnits = oPage.Balunits.GetSaveValue()

oPage = oThisForm.TPageMain.Page2

If oPage.ChkFormAcb.Value = 1 And oPage.aLevelDD.Value = oPage.aLevel4.Value
   =ExclMes("Уровень доп. аналитики классификации расходов для счетов денежных средств не может совпадать с уровнем аналитики кодов поступлений (выбытий) для счетов денежных средств!")
   oThisForm.TPageMain.ActivePage = 2
   oPage.aLevel4.SetFocus()
   Return .F.
EndIf

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()
************************************************************
   ]]></VFP_метод>
      <VFP_метод имя="PostInit"><![CDATA[LParam oThis, oThisForm
************************************************************
* Виды финансового обеспечения
Dimension arrVFO[5, 3]
arrVFO[1, 1] = PadR("Собственные доходы учреждения (код вида - 2)", 80)
arrVFO[1, 2] = "2"
arrVFO[1, 3] = "d"
arrVFO[2, 1] = PadR("Субсидия на выполнение государственного (муниципального) задания (код вида - 4)", 80)
arrVFO[2, 2] = "4"
arrVFO[2, 3] = "z"
arrVFO[3, 1] = PadR("Субсидии на иные цели (код вида - 5)", 80)
arrVFO[3, 2] = "5"
arrVFO[3, 3] = "c"
arrVFO[4, 1] = PadR("Субсидии на цели осуществления капитальных вложений (код вида - 6)", 80)
arrVFO[4, 2] = "6"
arrVFO[4, 3] = "i"
arrVFO[5, 1] = PadR("Средства по обязательному медицинскому страхованию (код вида - 7)", 80)
arrVFO[5, 2] = "7"
arrVFO[5, 3] = "m"

Local oPage

oPage = oThisForm.TPageMain.Page1
    
oPage.cntSelDate.InitThis(m.dSelDate)
oPage.cntReoDate.Text.ValueChanged()
oPage.OrgFrom.SetSaveValue(m.cOrg)
oPage.Founder.InitThis(m.cRN_Found)
oPage.BalUnits.SetSaveValue(m.cBalUnits)
oPage.Cmb_VFO.RowSource = "arrVFO"
oPage.Cmb_VFO.BackColor = oPage.Cmb_VFO.SaveBackColor
oPage.Cmb_VFO.Init()
oPage.ChkNPrjOnly.ValueChanged()

oPage = oThisForm.TPageMain.Page2
oPage.ChkFormAcb.ValueChanged()
oPage.CmbMarkVPL.SetSource(UnitRN("EconOp"))
oPage.CmbMarkNOO.SetSource(UnitRn("EconOp"))

oPage = oThisForm.TPageMain.Page3
oPage.Catalog.Text.Value = m.cUnlPath
oPage.fldIspName.Value   = m.cIspName
oPage.DicIsp.SetSaveValue(m.cDicIsp)

]]></VFP_метод>
      <элемент>
        <VFP_имя>Tbtndialog1</VFP_имя>
        <VFP_свойство имя="Left">195</VFP_свойство>
        <VFP_свойство имя="Top">418</VFP_свойство>
      </элемент>
      <элемент>
        <VFP_класс>TPageFrame</VFP_класс>
        <VFP_свойство имя="Name">TPageMain</VFP_свойство>
        <VFP_свойство имя="Height">415</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">370</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_класс>TdicDate</VFP_класс>
            <VFP_свойство имя="Name">cntBalOpen</VFP_свойство>
            <VFP_свойство имя="Left">355</VFP_свойство>
            <VFP_свойство имя="Top">20</VFP_свойство>
            <элемент>
              <VFP_имя>Text</VFP_имя>
              <VFP_свойство имя="ControlSource">dBalOpen</VFP_свойство>
            </элемент>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">Отчетный период:</VFP_свойство>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">55</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>Month_year_m</VFP_класс>
            <VFP_свойство имя="Name">cntSelDate</VFP_свойство>
            <VFP_свойство имя="ControlSource">dSelDate</VFP_свойство>
            <VFP_свойство имя="Left">175</VFP_свойство>
            <VFP_свойство имя="Top">50</VFP_свойство>
            <элемент>
              <VFP_имя>SelYear</VFP_имя>
              <VFP_свойство имя="Left">180</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_имя>lbllYear</VFP_имя>
              <VFP_свойство имя="Left">250</VFP_свойство>
            </элемент>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">Дата реорганизации:</VFP_свойство>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">85</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TdicDate</VFP_класс>
            <VFP_свойство имя="Name">cntReoDate</VFP_свойство>
            <VFP_свойство имя="Left">355</VFP_свойство>
            <VFP_свойство имя="Top">80</VFP_свойство>
            <элемент>
              <VFP_имя>Text</VFP_имя>
              <VFP_свойство имя="ControlSource">dReoDate</VFP_свойство>
              <VFP_метод имя="ValueChanged"><![CDATA[LParam oThis, oThisForm
Local oObj
oObj = oThisForm.TPageMain.Page1.cntSelDate
If Empty(oThis.Value)
  oObj.SelMonth.ReceiveMessage(oThisForm, "ReInit")
  oObj.SelYear.ReceiveMessage(oThisForm, "ReInit")
Else
  oObj.ReceiveMessage(oThisForm, "ViewMode")
EndIf
]]></VFP_метод>
            </элемент>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">115</VFP_свойство>
            <VFP_свойство имя="Caption">Учреждение:</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TDicHist</VFP_класс>
            <VFP_свойство имя="Name">OrgFrom</VFP_свойство>
            <VFP_свойство имя="Left">175</VFP_свойство>
            <VFP_свойство имя="Top">110</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_AGENTS738_183N_2023</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_класс>TDicHist</VFP_класс>
            <VFP_свойство имя="Name">Founder</VFP_свойство>
            <VFP_свойство имя="Left">175</VFP_свойство>
            <VFP_свойство имя="Top">140</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_FOUND738_183N_2023</VFP_свойство>
            <VFP_свойство имя="sourceIsVar" тип="L">.T.</VFP_свойство>
            <элемент>
              <VFP_имя>DicTable</VFP_имя>
              <дополнительно>
                <отложенная_инициализация/>
              </дополнительно>
            </элемент>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">Балансовая единица:</VFP_свойство>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">175</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>S_balunits</VFP_класс>
            <VFP_свойство имя="Name">Balunits</VFP_свойство>
            <VFP_свойство имя="Left">175</VFP_свойство>
            <VFP_свойство имя="Top">170</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_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">200</VFP_свойство>
            <VFP_свойство имя="Caption">Вид финансового обеспечения:</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TComboBox</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Name">Cmb_VFO</VFP_свойство>
            <VFP_свойство имя="Top">215</VFP_свойство>
            <VFP_свойство имя="Height">23</VFP_свойство>
            <VFP_свойство имя="Width">430</VFP_свойство>
            <VFP_свойство имя="BoundColumn">2</VFP_свойство>
            <VFP_свойство имя="RowSourceType">5</VFP_свойство>
            <VFP_свойство имя="Style">2</VFP_свойство>
            <VFP_свойство имя="DisplayCount">5</VFP_свойство>
            <VFP_свойство имя="ControlSource">cVFO</VFP_свойство>
             <VFP_метод имя="ValueChanged"><![CDATA[LParam oThis, oThisForm
If !Empty(oThis.Value)
  oThis.Parent.Txt18B1.Value = oThis.Value
  oThis.Parent.Txt18B2.Value = ""
  oThis.Parent.Txt18B3.Value = ""
  oThis.Parent.Txt18B4.Value = ""
  oThis.Parent.Txt18B5.Value = ""
  oThis.Parent.Txt18B6.Value = ""
  oThis.Parent.Txt18B7.Value = ""
  oThis.Parent.Txt18B8.Value = ""
  oThis.Parent.Txt18B9.Value = ""
  oThis.Parent.Txt18B10.Value = ""
EndIf
]]></VFP_метод>
          </элемент>
          <элемент>
            <VFP_класс>TTextBox</VFP_класс>
            <VFP_свойство имя="Left">241</VFP_свойство>
            <VFP_свойство имя="Top">245</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">245</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">245</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">245</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">245</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">245</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">245</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">245</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">245</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">245</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">280</VFP_свойство>
            <VFP_свойство имя="Caption">Размерность плана счетов:</VFP_свойство>
          </элемент>            
          <элемент>
            <VFP_класс>TComboBox</VFP_класс>
            <VFP_свойство имя="Left">170</VFP_свойство>
            <VFP_свойство имя="Name">Cmb_AccType</VFP_свойство>
            <VFP_свойство имя="Top">275</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">320</VFP_свойство>
            <VFP_свойство имя="Top">280</VFP_свойство>
            <VFP_свойство имя="ControlSource">lKBK</VFP_свойство>
            <VFP_свойство имя="Name">chkKBK</VFP_свойство>
            <VFP_свойство имя="Caption">Формировать по КБК</VFP_свойство>
            <VFP_метод имя="ValueChanged"><![CDATA[LParam oThis, oThisForm
oThis.Parent.ChkKVR.Enabled = oThis.Value Or oThis.Parent.ChkNPrjOnly.Value = 1
]]></VFP_метод>
          </элемент>
          <элемент>
            <VFP_класс>TCheckBox</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">305</VFP_свойство>
            <VFP_свойство имя="WordWrap">.T.</VFP_свойство>
            <VFP_свойство имя="Width">430</VFP_свойство>
            <VFP_свойство имя="PicturePosition">0</VFP_свойство>
            <VFP_свойство имя="ControlSource">lOsKr502x2</VFP_свойство>
            <VFP_свойство имя="Name">chkOsKr502x2</VFP_свойство>
           <VFP_свойство имя="Caption">Учитывать кредитовые остатки по счетам 502Х2 для расчета показателей по принятым обязательствам</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TCheckBox</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">335</VFP_свойство>
            <VFP_свойство имя="ControlSource">nNPrjOnly</VFP_свойство>
            <VFP_свойство имя="Name">ChkNPrjOnly</VFP_свойство>
            <VFP_свойство имя="Caption">Формировать показатели только о ходе реализации национальных проектов</VFP_свойство>
            <VFP_метод имя="ValueChanged"><![CDATA[LParam oThis, oThisForm
oThis.Parent.chkKBK.Enabled = oThis.Value = 0
oThis.Parent.ChkKVR.Enabled = oThis.Value = 1 Or oThis.Parent.chkKBK.Value
]]></VFP_метод>
          </элемент>
          <элемент>
            <VFP_класс>TCheckBox</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">355</VFP_свойство>
            <VFP_свойство имя="ControlSource">nChkKVR</VFP_свойство>
            <VFP_свойство имя="Name">ChkKVR</VFP_свойство>
            <VFP_свойство имя="Caption">Заполнять наименование показателя по расходам из наименования КВР</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">450</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TCheckBox</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">5</VFP_свойство>
            <VFP_свойство имя="ControlSource">nChkFormAcb</VFP_свойство>
            <VFP_свойство имя="Name">ChkFormAcb</VFP_свойство>
            <VFP_свойство имя="Caption">Формировать исполнение расходов по балансовым счетам</VFP_свойство>
            <VFP_метод имя="ValueChanged"><![CDATA[LParam oThis, oThisForm
Store oThis.Value = 1 To oThis.Parent.aLevelDD.Enabled, oThis.Parent.aLevel4.Enabled, oThis.Parent.aLevel5.Enabled
]]></VFP_метод>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">Уровень доп. аналитики классификации расходов для счетов денежных</VFP_свойство>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">25</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">средств:</VFP_свойство>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">38</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TSpinner</VFP_класс>
            <VFP_свойство имя="ControlSource">nAnLevelDD</VFP_свойство>
            <VFP_свойство имя="Increment">1.00</VFP_свойство>
            <VFP_свойство имя="Inputmask">9</VFP_свойство>
            <VFP_свойство имя="KeyboardHighValue">5</VFP_свойство>
            <VFP_свойство имя="KeyboardLowValue">0</VFP_свойство>
            <VFP_свойство имя="Left">410</VFP_свойство>
            <VFP_свойство имя="Name">aLevelDD</VFP_свойство>
            <VFP_свойство имя="SpinnerHighValue">5.00</VFP_свойство>
            <VFP_свойство имя="SpinnerLowValue">0.00</VFP_свойство>
            <VFP_свойство имя="Top">25</VFP_свойство>
            <VFP_свойство имя="Width">40</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">Уровень аналитики кодов поступлений (выбытий) для счетов денежных</VFP_свойство>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">55</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">средств:</VFP_свойство>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">68</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TSpinner</VFP_класс>
            <VFP_свойство имя="ControlSource">nAnLevel4</VFP_свойство>
            <VFP_свойство имя="Increment">1.00</VFP_свойство>
            <VFP_свойство имя="Inputmask">9</VFP_свойство>
            <VFP_свойство имя="KeyboardHighValue">5</VFP_свойство>
            <VFP_свойство имя="KeyboardLowValue">1</VFP_свойство>
            <VFP_свойство имя="Left">410</VFP_свойство>
            <VFP_свойство имя="Name">aLevel4</VFP_свойство>
            <VFP_свойство имя="SpinnerHighValue">5.00</VFP_свойство>
            <VFP_свойство имя="SpinnerLowValue">1.00</VFP_свойство>
            <VFP_свойство имя="Top">55</VFP_свойство>
            <VFP_свойство имя="Width">40</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">Уровень аналитики КОСГУ для счетов "40110":</VFP_свойство>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">90</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TSpinner</VFP_класс>
            <VFP_свойство имя="ControlSource">nAnLevel5</VFP_свойство>
            <VFP_свойство имя="Increment">1.00</VFP_свойство>
            <VFP_свойство имя="Inputmask">9</VFP_свойство>
            <VFP_свойство имя="KeyboardHighValue">5</VFP_свойство>
            <VFP_свойство имя="KeyboardLowValue">1</VFP_свойство>
            <VFP_свойство имя="Left">410</VFP_свойство>
            <VFP_свойство имя="Name">aLevel5</VFP_свойство>
            <VFP_свойство имя="SpinnerHighValue">5.00</VFP_свойство>
            <VFP_свойство имя="SpinnerLowValue">1.00</VFP_свойство>
            <VFP_свойство имя="Top">85</VFP_свойство>
            <VFP_свойство имя="Width">40</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>T3dShape</VFP_класс>
            <VFP_свойство имя="Height">75</VFP_свойство>
            <VFP_свойство имя="Left">10</VFP_свойство>
            <VFP_свойство имя="Top">130</VFP_свойство>
            <VFP_свойство имя="Width">450</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">Особые отметки</VFP_свойство>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">125</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">145</VFP_свойство>
            <VFP_свойство имя="Caption">Возвраты прошлых лет:</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>mark</VFP_класс>
            <VFP_свойство имя="Left">295</VFP_свойство>
            <VFP_свойство имя="Top">140</VFP_свойство>
            <VFP_свойство имя="Width">155</VFP_свойство>
            <VFP_свойство имя="Name">CmbMarkVPL</VFP_свойство>
            <VFP_свойство имя="ControlSource">cRN_MarkVPL</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">175</VFP_свойство>
            <VFP_свойство имя="Caption">Не отражать в отчете:</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>mark</VFP_класс>
            <VFP_свойство имя="Left">295</VFP_свойство>
            <VFP_свойство имя="Top">170</VFP_свойство>
            <VFP_свойство имя="Width">155</VFP_свойство>
            <VFP_свойство имя="Name">CmbMarkNOO</VFP_свойство>
            <VFP_свойство имя="ControlSource">cRN_MarkNOO</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">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_класс>TTextBox</VFP_класс>
            <VFP_свойство имя="Left">395</VFP_свойство>
            <VFP_свойство имя="Top">50</VFP_свойство>
            <VFP_свойство имя="Width">55</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
Local oPage
oPage = oThisForm.TPageMain.Page3
= CurOpen("orgbase,person")

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">195</VFP_свойство>
            <VFP_свойство имя="Top">80</VFP_свойство>
            <VFP_свойство имя="Width">255</VFP_свойство>
            <VFP_свойство имя="AreaName" тип="C">OrgBase</VFP_свойство>
            <VFP_свойство имя="DictName" тип="C">Agnt_bms</VFP_свойство>
            <VFP_свойство имя="RetField" тип="C">rmnemo_org</VFP_свойство>
            <VFP_свойство имя="HistoryName" тип="C">H_Agents_738_183N_2023</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">195</VFP_свойство>
            <VFP_свойство имя="Top">110</VFP_свойство>
            <VFP_свойство имя="Width">255</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">195</VFP_свойство>
            <VFP_свойство имя="Top">140</VFP_свойство>
            <VFP_свойство имя="Width">255</VFP_свойство>
            <VFP_свойство имя="ControlSource">cIspTel</VFP_свойство>
            <VFP_свойство имя="Name">fldIspTel</VFP_свойство>
          </элемент>
        </элемент>
      </элемент>
    </описание>
  </форма>
</Модуль>
