<?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">
  <интерфейс>
    <отчет>
      <наименование>Форма 0503169-191н_ред180н_2023</наименование>
      <код_раздела>Reports5n</код_раздела>
      <номер_код>f0503169_180n_2023</номер_код>
      <шаблон>
        <тип>MSE</тип>
        <мнемокод>ar_form0503169_180n_2023</мнемокод>
        <файл>Форма0503169_191н_ред180н_2023.xlt</файл>
      </шаблон>
    </отчет>
  </интерфейс>
  <отчет>
    <реализует>f0503169_180n_2023</реализует>
      <дополнительно>
      <запомнить_переменные>
        <список_переменных>dSelDate;dReoDate;cOrg;nAccType;cVFO;cTxt18B1;cTxt18B2;cTxt18B3;cTxt18B4;cTxt18B5;cTxt18B6;cTxt18B7;cTxt18B8;cTxt18B9;cTxt18B10;cBalUnitsB;cNoMoneySubs;lTransfer;cComDicGroup;cSubsForGrp;nSrokD;lNoCalcLong;nSrok;nZadolzhMin;lNvPCrOnly;lENPDbOnly;nAnLevel401;l00xAcc;cRN_Mark;cCatEO;cJournalOp;cUnlPath;cIST;cVRO;cDicIsp;cIspName;cIspTel</список_переменных>
        <мемофайл>ar_form0503169_191n_180n_2023;ar_form0503169_191n_217n_2021;ar_form0503169_191n_82n_2021;ar_form0503169_191n_311n_2021;ar_form0503169_191n_131n_2019</мемофайл>
      </запомнить_переменные>
      <запуск_в_цикле>
        <алиас>crPrint169</алиас>
      </запуск_в_цикле>
      </дополнительно>
    <переменные>
      <переменная>
        <имя>dSelDate</имя>
        <начальное_значение>oSystem.Date</начальное_значение>
        <!--Отчетный период-->
      </переменная>
      <переменная>
        <имя>dReoDate</имя>
        <начальное_значение>{}</начальное_значение>
        <!--Дата реорганизации-->
      </переменная>
      <переменная>
        <имя>cOrg</имя>
        <начальное_значение>""</начальное_значение>
        <!--Учреждение-->
      </переменная>
      <переменная>
        <имя>cWhereKontragent</имя>
        <начальное_значение>""</начальное_значение>
        <!--Условие по контрагентам-->
      </переменная>
      <переменная>
        <имя>nAccType</имя>
        <начальное_значение>1</начальное_значение>
        <!--Размерность плана счетов-->
      </переменная>
      <переменная>
        <имя>cVFO</имя>
        <начальное_значение>"b"</начальное_значение>
        <!--вид деятельности-->
      </переменная>
      <переменная>
        <имя>arrVFO</имя>
        <начальное_значение>""</начальное_значение>
        <!--Массив видов деятельности-->
      </переменная>
      <переменная>
        <имя>CTxt18B1</имя>
        <начальное_значение>"1"</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B2</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B3</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B4</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B5</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B6</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B7</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B8</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B9</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>CTxt18B10</имя>
        <начальное_значение>""</начальное_значение>
        <!--18 знак для бюджета-->
      </переменная>
      <переменная>
        <имя>cUsl18B</имя>
        <начальное_значение>""</начальное_значение>
      </переменная>
      <переменная>
        <имя>cBalUnitsB</имя>
        <начальное_значение>""</начальное_значение>
        <!--Бал. единицы-->
      </переменная>
      <переменная>
        <имя>cWhereBalUnitsB</имя>
        <начальное_значение>""</начальное_значение>
        <!--Условие по балансовым единицам-->
      </переменная>
      <переменная>
        <имя>cNoMoneySubs</имя>
        <начальное_значение>"206??;302??"</начальное_значение>
        <!--Рассчитывать показатели по неденежным расчетам только для счетов-->
      </переменная>
      <переменная>
        <имя>lTransfer</имя>
        <начальное_значение>.F.</начальное_значение>
        <!--Переносить суммы превышения "неденежных расчетов" над "всего" в подотчет противоположного направления-->
      </переменная>
      <переменная>
        <имя>cComDicGroup</имя>
        <начальное_значение>""</начальное_значение>
        <!--Группировка по символам номера счета-->
      </переменная>
      <переменная>
         <имя>arrGroupMask</имя>
         <начальное_значение>""</начальное_значение>
         <!--Маска для группировки по символам номера счета-->
      </переменная>
      <переменная>
        <имя>cSubsForGrp</имя>
        <начальное_значение>""</начальное_значение>
        <!--Только для кодов счетов (группировать)-->
      </переменная>
      <переменная>
        <имя>nSrokD</имя>
        <начальное_значение>12</начальное_значение>
        <!--Срок для определения долгосрочной задолженности (в месяцах)-->
      </переменная>
      <переменная>
        <имя>lNoCalcLong</имя>
        <начальное_значение>.F.</начальное_значение>
        <!--Не рассчитывать показатели долгосрочной задолженности-->
      </переменная>
      <переменная>
        <имя>nSrok</имя>
        <начальное_значение>0</начальное_значение>
        <!--Срок для определения просроченной задолженности (в днях)-->
      </переменная>
      <переменная>
        <имя>nZadolzhMin</имя>
        <начальное_значение>0</начальное_значение>
        <!--Минимальный размер просроченной задолженности для детализации-->
      </переменная>
      <переменная>
        <имя>lNvPCrOnly</имя>
        <начальное_значение>.T.</начальное_значение>
        <!--Отражать показатели изменения расчетов по невыясненным поступлениям только в сведениях по кредиторской задолженности-->
      </переменная>
      <переменная>
        <имя>lENPDbOnly</имя>
        <начальное_значение>.F.</начальное_значение>
        <!--Отражать показатели изменения расчетов по единому налоговому платежу только в сведениях по дебиторской задолженности-->
      </переменная>
      <переменная>
        <имя>nAnLevel401</имя>
        <начальное_значение>5</начальное_значение>
        <!--Уровень аналитики КОСГУ-->
      </переменная>
      <переменная>
        <имя>l00xAcc</имя>
        <начальное_значение>.F.</начальное_значение>
        <!--Заполнять КОСГУ «00Х» по данным бухгалтерского учета-->
      </переменная>
      <переменная>
        <имя>cRN_Mark</имя>
        <начальное_значение>""</начальное_значение>
        <!--Особая отметка-->
      </переменная>
      <переменная>
        <имя>cCatEO</имя>
        <начальное_значение>""</начальное_значение>
        <!--Каталог ХО-->
      </переменная>
      <переменная>
        <имя>cJournalOp</имя>
        <начальное_значение>""</начальное_значение>
        <!--Журнал операций-->
      </переменная>
      <переменная>
        <имя>cUnlPath</имя>
        <начальное_значение>""</начальное_значение>
        <!--Каталог выгрузки-->
      </переменная>
      <переменная>
        <имя>cFormCode</имя>
        <начальное_значение>""</начальное_значение>
        <!--Код формы-->
      </переменная>
      <переменная>
        <имя>cFileName</имя>
        <начальное_значение>""</начальное_значение>
        <!--Файл выгрузки-->
      </переменная>
      <переменная>
        <имя>cIST</имя>
        <начальное_значение>""</начальное_значение>
        <!--ИСТ-->
      </переменная>
      <переменная>
        <имя>cVRO</имя>
        <начальное_значение>""</начальное_значение>
        <!--ВРО-->
      </переменная>
      <переменная>
        <имя>cDicIsp</имя>
        <начальное_значение>""</начальное_значение>
        <!--Исполнитель-->
      </переменная>
      <переменная>
        <имя>cIspName</имя>
        <начальное_значение>""</начальное_значение>
        <!--ФИО исполнителя-->
      </переменная>
      <переменная>
        <имя>cIspTel</имя>
        <начальное_значение>""</начальное_значение>
        <!--Телефон исполнителя-->
      </переменная>
      <переменная>
        <имя>dDateBegin</имя>
        <начальное_значение>""</начальное_значение>
        <!--Дата с-->
      </переменная>
      <переменная>
        <имя>dDateEnd</имя>
        <начальное_значение>""</начальное_значение>
        <!--Дата По-->
      </переменная>
      <переменная>
        <имя>glBK</имя>
        <начальное_значение>""</начальное_значение>
        <!--Глава по БК-->
      </переменная>
      <переменная>
        <имя>RepG151</имя>
        <начальное_значение>CreateObject("form0503buxrepd")</начальное_значение>
      </переменная>
      <переменная>
        <имя>dReportDate</имя>
        <начальное_значение>Date(2023,12,31)</начальное_значение>
      </переменная>
      <переменная>
        <имя>lNoError</имя>
        <начальное_значение>.T.</начальное_значение>
      </переменная>            
     </переменные>
    <запуск_формы>
      <ид>f_0503169_191n_180n_2023</ид>
    </запуск_формы>
    <инициализация>
      <FPC_><![CDATA[*[VFP]
   Create Cursor crPrint169 (cNameList c(50), cNameForm c(4))
   Insert Into crPrint169 (cNameForm) Values ("259")
   Insert Into crPrint169 (cNameForm) Values ("269")
   Go Top In crPrint169
   ]]></FPC_>
    </инициализация>
    <вычисление>
      <сообщение>Ждите, идет выборка данных ...</сообщение>
      <FPC_><![CDATA[*[VFP]
dDateBegin = DOX(Iif(Empty(m.dReoDate), m.dSelDate, m.dReoDate), 1)
dDateEnd   = Iif(Empty(m.dReoDate), DOX(m.dSelDate, 4) + 1, m.dReoDate)
                    ]]></FPC_>
    </вычисление>
    <печать>
      <!--Печать отчета--><MSE>
        <!--Печать в MS Excel-->
        <FPC_><![CDATA[*[VFP]  
*ON ERROR

Private ALL Like cJoin*
Private ALL Like cKOSGU*
Private n04014SumP2, n04016SumP2
Private n18Pos, n19Pos, cIsMoney, arrNoMoneySubs, nALenNMS, arrSubsForGrp, nALenSFG, cSbF, cKBK, dDateLong, cWhere5, dDate5, cLevKOSGU, lKOSGU_Rests
Local cUsl0205Deb, cUsl0205Kre, cUslDeb, cUslKre, cUsl0205Db1, cUsl0205Kr1, cUslDb1, cUslKr1, c18Pos, c19Pos, cUsl18, cL401, s, i, lFirst
Dimension arrNoMoneySubs[1], arrSubsForGrp[1]

If RecNo("crPrint169") == 1
  * Глава по БК
  If !Empty(m.cWhereKontragent)
    Select fBudMG.Rasp_Code ;
      From OrgBase ;
        Inner Join fBudMG On OrgBase.RN = fBudMG.OrgBase_RN ;
      Where &cWhereKontragent And !Empty(fBudMG.Rasp_Code) ;
      Into Array arBP
    *
    If _Tally > 0
      glBK = arBP(1)
    EndIf 
  EndIf 
  *
  If Empty(m.glBK)
    Select Rasp_Code ;
      From fBudMG ;
      Where OrgBase_RN = ?oSystem.OwnerOrgRn And !Empty(Rasp_Code);
      Into Array arBP
    *
    If _Tally > 0
      glBK = arBP(1)
    EndIf 
  EndIf

  * Долгосрочная задолженность
  dDateLong = Iif(m.lNoCalcLong Or Empty(m.nSrokD), {}, GoMonth(DOX(Iif(Empty(m.dReoDate), m.dSelDate, m.dReoDate), 4) + 1, m.nSrokD))

  * Курсоры для печати
  For m.i = 1 To 2
    s = Iif(m.i = 1, "D", "K")

    Create CURSOR crs&s (ACC C(9), ACCOUNT C(29), Sum1 N(18, 2), Sum1D N(18, 2), Sum1N N(18, 2), SumUp N(18, 2), SumUpNM N(18, 2), SumDown N(18, 2), SumDownNM N(18, 2), Sum2 N(18, 2), Sum2D N(18, 2), Sum2N N(18, 2))
    Index On ACC + ACCOUNT Tag T1

    * Итого по коду счета
    Create CURSOR crs&s.Itog (ACC C(9), Sum1 N(18, 2), Sum1D N(18, 2), Sum1N N(18, 2), SumUp N(18, 2), SumUpNM N(18, 2), SumDown N(18, 2), SumDownNM N(18, 2), Sum2 N(18, 2), Sum2D N(18, 2), Sum2N N(18, 2))
    Index On ACC Tag T1

    * Итого по коду синтетического счета
    Create CURSOR crs&s.ItogSS (ACC C(4), Sum1 N(18, 2), Sum1D N(18, 2), Sum1N N(18, 2), SumUp N(18, 2), SumUpNM N(18, 2), SumDown N(18, 2), SumDownNM N(18, 2), Sum2 N(18, 2), Sum2D N(18, 2), Sum2N N(18, 2), SumP2 N(18, 2), SumP2D N(18, 2), SumP2N N(18, 2))
    Index On ACC Tag T1

    * Всего по счету 40140/40160
    Create CURSOR crs&s.401 (ACC C(4), SumP2 N(18, 2))
    Index On ACC Tag T1

    * Аналитическая информация
    Create CURSOR crs&s.2 (RN C(4), ACC C(9), ACCOUNT C(29), SUM N(18, 2), DATE_BEGIN D, DATE_END D, RN_AGENT C(4), TYPE C(1), INN C(22), NOTE M)

    * Промежуточный курсор для проводок
    Create CURSOR curSpec&s (ACCOUNT C(29), DATE_EOP D, MASTER_RN C(4), RN C(4), TYPE C(1), SUM N(18, 2), IsMoney L, IsReturn L)
    Index On ACCOUNT Tag T1
  Next

  && 0503169
  c18Pos = Iif(m.nAccType = 1, "18", "1")
  n18Pos = Val(m.c18Pos)
  c19Pos = Iif(m.nAccType = 1, "19", "2")
  n19Pos = Val(m.c19Pos)

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

  * Денежные / неденежные
  cIsMoney = "InList(SubStr(C.ACCOUNT, " + m.c19Pos + ", 3), '202', '203') Or InList(SubStr(C.ACCOUNT, " + m.c19Pos + ", 4), '2011', '2012') Or InList(SubStr(C.ACCOUNT, " + m.c19Pos + ", 5), '20134', '21002', '21003', '30405')"
  nALenNMS = ALines(arrNoMoneySubs, m.cNoMoneySubs, ";")

  * Только для кодов счетов (группировать)
  nALenSFG = ALines(arrSubsForGrp, m.cSubsForGrp, ";")

  * Операции межотчетного периода
  cWhere5 = ""
  Do Case
    Case !Empty(m.cRN_Mark) And !Empty(m.cCatEO)
      cWhere5 = "(B.RN_MARK = '" + m.cRN_Mark + "' Or B.PARENT_RN = '" + m.cCatEO + "')"
    Case !Empty(m.cRN_Mark)
      cWhere5 = "B.RN_MARK = '" + m.cRN_Mark + "'"
    Case !Empty(m.cCatEO)
      cWhere5 = "B.PARENT_RN = '" + m.cCatEO + "'"
  EndCase
  dDate5 = m.dDateEnd - 1

  * Условия отбора счетов
  cUsl18 = m.cUsl18B
  cUsl18 = "InList(SubStr(A.Account, " + m.c18Pos + ", 1)," + m.cUsl18 + ") And "
  If !Empty(m.cWhereBalUnitsB)
    cUsl18 = m.cUsl18 + m.cWhereBalUnitsB + " And "
  EndIf

  cUsl18 = m.cUsl18 + "(InList(SubStr(A.ACCOUNT, " + m.c19Pos + ", 3), '205', '206', '208', '209', '302', '303') Or " ;
         + "InList(SubStr(A.ACCOUNT, " + m.c19Pos + ", 4), '2101', '4014', '4016') Or " ;
         + "InList(SubStr(A.ACCOUNT, " + m.c19Pos + ", 5), '21005', '210T5', '210Т5', '30401', '30402', '30403', '30406', '30407', '304T6', '304Т6'))"

  cL401 = "InList(SubStr(A.ACCOUNT, " + m.c19Pos + ", 4), '4014', '4016')"

  * Отбираем все подходящие счета
  Select A.RN, A.ACCOUNT, A.TFIN_TYPE, A.RN_TFIN, A.RN_KLSDOH, A.RN_ACB, A.RN_MO, ;
         Nvl(B.L_KD_IF, .F.) And (!Nvl(B.L_SH_FIN, .F.) Or Nvl(B.L_ZAP_FIRST, .F.)) As L_KBK, ;
         AT("9", A.SMETA_AN) As SBFLevel, ;
         AT("3", A.ORG_AN)   As KBKLevel, ;
         AT("1", A.ORG_AN)   As OrgLevel, ;
         InList(A.S_ANALITYC, 9, 10, 11, 12) And !&cL401 As LDK, ;
         &cL401 As L401 ;
    From AccBase A ;
      Left Join AcBBase B On A.RN_ACB = B.RN ;
      Left Join BalUnit   On A.Rn_BalUnit = BalUnit.RN ;
    Where &cUsl18 ;
    Into CURSOR curAcc

  * Таблица соответствия для аналитических счетов КОСГУ проводок и КОСГУ остатков (для невзаиморасчетных счетов)
  MakeKosguLinks169()

  CurOpen("AccSpec")

  * остатки и обороты
  Select curAcc
  Scan
    Store .F. To cUsl0205Deb, cUsl0205Kre, cUslDeb, cUslKre, cUsl0205Db1, cUsl0205Kr1, cUslDb1, cUslKr1
    Store ""  To cJoinAn_DK, cJoinAn, cJoinAnD, cJoinAnK, cJoinAnSbF_DK, cJoinAnSbF, cJoinAnSbF_D, cJoinAnSbF_K
    Store "Space(4)" To cSbF, cKBK, cKOSGU, cKOSGU_D, cKOSGU_K, cKOSGU_DK

    * Отбор по контрагенту 
    If !Empty(m.cWhereKontragent)
      If curAcc.OrgLevel = 0
        Loop
      EndIf

      Select AccSpec.RN ;
        From AccSpec ;
          Inner Join OrgBase On AccSpec.RN_TOrg = OrgBase.RN ;
        Where AccSpec.Master_RN = ?curAcc.RN And AccSpec.Level = ?curAcc.OrgLevel And &cWhereKontragent ;
        Into CURSOR crsAccSpRN

      If _Tally = 0
        Loop
      Else
        Index On RN Tag RN
        cJoinAn_DK = "Inner Join crsAccSpRN AnOrg On D.RN_ACC_A" + Str(curAcc.OrgLevel, 1) + " = AnOrg.RN "
        cJoinAn    = StrTran(m.cJoinAn_DK, "D.RN_ACC_A", "S.RN_AC_A")
        cJoinAnD   = StrTran(m.cJoinAn, "S.RN_AC_A", "S.RN_DB_A")
        cJoinAnK   = StrTran(m.cJoinAn, "S.RN_AC_A", "S.RN_KR_A")
      EndIf
    EndIf

    * шаблон финансирования
    If curAcc.TFIN_TYPE = 1   && шаблон финансирования указан в счете
      cSbF = "?curAcc.RN_TFIN"
    Else
      If curAcc.SBFLevel # 0  && шаблон финансирования указан в аналитике
        cSbF = "Nvl(ANSBF.RN_TFIN, Space(4))"
        cJoinAnSbF_DK = "Left Join AccSpec ANSBF ON D.RN_ACC_A" + Str(curAcc.SBFLevel, 1) + " = ANSBF.RN"
      EndIf
    EndIf

    * классификация доходов
    If !Empty(curAcc.RN_KLSDOH)   && КБК указан в счете
      cKBK = "?curAcc.RN_KLSDOH"
    Else
      If curAcc.KBKLevel # 0      && КБК указан в аналитике
        cKBK = "Nvl(ANKBK.RN_KLSDOH, Space(4))"
        cJoinAnSbF_DK = m.cJoinAnSbF_DK + " Left Join AccSpec ANKBK ON D.RN_ACC_A" + Str(curAcc.KBKLevel, 1) + " = ANKBK.RN"
      EndIf
    EndIf

    cJoinAnSbF   = StrTran(m.cJoinAnSbF_DK, "D.RN_ACC_A", "S.RN_AC_A")
    cJoinAnSbF_D = StrTran(m.cJoinAnSbF, "RN_AC_A", "RN_DB_A")
    cJoinAnSbF_K = StrTran(m.cJoinAnSbF, "RN_AC_A", "RN_KR_A")

    * Аналитика КОСГУ по счетам 4014, 4016 и невзаиморасчетным счетам
    If curAcc.L401 Or !curAcc.LDK And m.l00xAcc
      cKOSGU   = "S.RN_AC_A" + m.cLevKOSGU
      cKOSGU_D = "S.RN_DB_A" + m.cLevKOSGU
      cKOSGU_K = "S.RN_KR_A" + m.cLevKOSGU
    EndIf

    * КОСГУ остатков для невзаиморасчетных счетов
    lKOSGU_Rests = !curAcc.LDK And !curAcc.L401 And m.l00xAcc

    * Аналитика КОСГУ по счетам ДК
    If curAcc.LDK And m.l00xAcc
      cKOSGU_DK = "D.RN_ACC_A" + m.cLevKOSGU
    EndIf

    * условия отбора остатков
    Do Case
      Case InList(SubStr(curAcc.ACCOUNT, m.n19Pos, 3), '205', '208', '209', '303') Or SubStr(curAcc.ACCOUNT, m.n19Pos, 4) = '2101'
        cUsl0205Deb = "D.SUMV_BEGIN > 0"
        cUsl0205Kre = "D.SUMV_BEGIN < 0"
        cUslDeb     = "R.SUMM_DB_BASE - R.SUMM_KR_BASE > 0"
        cUslKre     = "R.SUMM_DB_BASE - R.SUMM_KR_BASE < 0"
        cUsl0205Db1 = "SUM > 0"
        cUsl0205Kr1 = "SUM < 0"
        cUslDb1     = "SUM > 0"
        cUslKr1     = "SUM < 0"

      Case SubStr(curAcc.ACCOUNT, m.n19Pos, 3) = '206' Or InLIst(SubStr(curAcc.ACCOUNT, m.n19Pos, 5), '21005', '210T5', '210Т5')
        cUsl0205Deb = "D.SUMV_BEGIN # 0"
        cUslDeb     = "R.SUMM_DB_BASE - R.SUMM_KR_BASE # 0"
        cUsl0205Db1 = "SUM # 0"
        cUslDb1     = "SUM # 0"

      Case SubStr(curAcc.ACCOUNT, m.n19Pos, 3) = '302' Or InList(SubStr(curAcc.ACCOUNT, m.n19Pos, 5), '30401', '30402', '30403', '30406', '30407', '304T6', '304Т6') Or curAcc.L401
        cUsl0205Kre = "D.SUMV_BEGIN # 0"
        cUslKre     = "R.SUMM_DB_BASE - R.SUMM_KR_BASE # 0"
        cUsl0205Kr1 = "SUM # 0"
        cUslKr1     = "SUM # 0"
    EndCase

    * расчет остатков
    If Type("m.cUsl0205Deb") = "C"
      = Form169(m.cUsl0205Deb, m.cUsl0205Db1, m.cUslDeb, m.cUslDb1)
      = Form169(m.cUsl0205Deb, m.cUsl0205Db1, m.cUslDeb, m.cUslDb1, .T.)
      = Form169GetTurns("D")   && формирование списка проводок
    EndIf
    If Type("m.cUsl0205Kre") = "C"
      = Form169(m.cUsl0205Kre, m.cUsl0205Kr1, m.cUslKre, m.cUslKr1, .F., .T.)
      = Form169(m.cUsl0205Kre, m.cUsl0205Kr1, m.cUslKre, m.cUslKr1, .T., .T.)
      = Form169GetTurns("K")   && формирование списка проводок
    EndIf

    * расчет остатков на конец аналогичного периода прошлого финансового года
*    If !curAcc.L401
      Store "Space(4)" To cKOSGU, cKOSGU_D, cKOSGU_K, cKOSGU_DK
*    EndIf
    lKOSGU_Rests = .F.
    If Type("m.cUsl0205Deb") = "C"
      = Form169(m.cUsl0205Deb, m.cUsl0205Db1, m.cUslDeb, m.cUslDb1, .T., .F., .T.)
    EndIf
    If Type("m.cUsl0205Kre") = "C"
      = Form169(m.cUsl0205Kre, m.cUsl0205Kr1, m.cUslKre, m.cUslKr1, .T., .T., .T.)
    EndIf
  EndScan

  * изменение задолженности
  = Form169Change("D")
  = Form169Change("K")

  = CurClose("crsAccSpRN;curAcc;curSpecD,curSpecK,curKosguLinks,curKosguRests")
EndIf

******************************
oPrint = objCaller.objExcelRep
oPrint.PrintRange("Header")

s = Iif(RecNo("crPrint169") = 1, "D", "K")

Select * From crs&s Into CURSOR crs
Index On ACC + ACCOUNT Tag T1
Use In crs&s
Select * From crs&s.Itog Into CURSOR crsItog
Index On ACC Tag T1
Use In crs&s.Itog
Select * From crs&s.ItogSS Order By ACC Into CURSOR crsItogSS
Use In crs&s.ItogSS
Select * From crs&s.2 Order By ACC, ACCOUNT, DATE_BEGIN, INN Into CURSOR crs2
Use In crs&s.2

Select crs&s.401
Sum SumP2 For ACC = "4014" To n04014SumP2
Sum SumP2 For ACC = "4016" To n04016SumP2
Use In crs&s.401

* Сведения о задолженности
Local Array aRepParts(3)
aRepParts[ 1 ] = "Spec"
aRepParts[ 2 ] = "Spec_Itog"
aRepParts[ 3 ] = "Spec_ItogSS"

oPrint.ReportPrepare(@aRepParts)
   
Select crsItogSS
Scan
  Select crsItog
  Seek crsItogSS.ACC
  Scan While ACC = crsItogSS.ACC
    * Детализация по коду счета
    Select crs
    Seek crsItog.ACC
    Scan While ACC = crsItog.ACC
      oPrint.PrintReportPart("Spec")
    EndScan

    oPrint.PrintReportPart("Spec_Itog")
  EndScan

  oPrint.PrintReportPart("Spec_ItogSS")
EndScan

oPrint.ReportFinal()

* по счетам 4014
Select crs
Seek "040140000"
lFirst = .T.
Scan While ACC = "040140000"
  If !m.lFirst
    oPrint.InsertRange()
  EndIf
  oPrint.PrintRange("Spec4014")
  lFirst = .F.
EndScan

* по счетам 4016
Select crs
Seek "040160000"
lFirst = .T.
Scan While ACC = "040160000"
  If !m.lFirst
    oPrint.InsertRange()
  EndIf
  oPrint.PrintRange("Spec4016")
  lFirst = .F.
EndScan

* Аналитическая информация
Local Array aRepParts(1)
aRepParts[ 1 ] = "Spec_2"

oPrint.ReportPrepare(@aRepParts)
   
Select crs2
Scan
  If m.lNoError
    oPrint.printReportPart("Spec_2")
  EndIf
EndScan

* 2 пустых строки
If RecCount() = 0 Or !m.lNoError
  For m.i = 1 To 2
    oPrint.printReportPart("Spec_2")
  Next
EndIf

oPrint.ReportFinal()

= MakeFileName()

oPrint.PrintRange("Footer")

CurClose("crs;crsItog;crsItogSS;crs2")

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

oPrint = NULL

Return


*****************
Procedure Form169
  LParameters cWhereDK, cWhereDK1, cWhere, cWhere1, lEnd, lKre, lPriorYear

  * Переменные
  Local dDate1, dDate2, dDate6, lObosOp, nSign, cNameCursor, cAcc, cWhereC, ss, s1, nSum, cJoinKOSGU_R
  cJoinKOSGU_R = ""

  * имя курсора для печати
  cNameCursor = Iif(m.lKre, "crsK", "crsD")

  * код счета
  If curAcc.L401
    cAcc = "0" + PadR(SubStr(curAcc.Account, m.n19Pos, 4), 8, "0")
  Else
    cAcc = PadR(SubStr(curAcc.Account, m.n18Pos, 6), 9, "0")
  EndIf

  * даты (период)
  If !m.lEnd
    dDate1 = m.dDateBegin
    dDate2 = m.dDateBegin - 1
  Else
    dDate1 = DOX(m.dDateEnd, 3)
    dDate2 = m.dDateEnd - 1
    If m.lPriorYear
      dDate1 = GoMonth(m.dDate1, -12)
      dDate2 = GoMonth(m.dDateEnd, -12) - 1
    EndIf
  EndIf
  lObosOp = !m.lPriorYear And m.dDate5 >= m.dDateBegin And !Empty(Iif(m.lEnd, m.cWhere5, m.cJournalOp))
  If m.dDate2 >= m.dDate1 Or m.lObosOp
    Store "" To cWhereDK, cWhere
  EndIf

  * Остатки и обороты
  If curAcc.LDK   && Счет взаиморасчетный
    * остатки по взаиморасчетным счетам
    cWhereC = Iif(Empty(m.cWhereDK), "", "And " + m.cWhereDK)

    Select D.RN, D.RN_AGENT, ;
           D.RN_CURR, D.RN_ORGPU, D.RN_ACC_A1, D.RN_ACC_A2, D.RN_ACC_A3, D.RN_ACC_A4, D.RN_ACC_A5, ;
           D.RN_BASE, D.NUM_BASE, D.DATE_BASE, D.RN_MARK, ;
           Space(29) As ACCOUNT, ;
           &cSbF As RN_SBF, ;
           &cKBK As RN_KBK, ;
           &cKOSGU_DK As RN_KOSGU, ;
           .F.   As LSrokD, ;
           .F.   As LSrok, ;
           D.TEXT, ;
           D.SUME_BEGIN As SUM, ;
           D.DATE_BEGIN, ;
           D.DATE_END ;
      From DkBase D ;
        &cJoinAn_DK ;
        &cJoinAnSbF_DK ;
      Where D.RN_ACC = ?curAcc.RN And D.Period = ?m.dDate1 &cWhereC ;
      Into Cursor cTmpDK READWRITE

    * обороты по взаиморасчетным счетам
    If m.dDate1 <= m.dDate2
      Scan
        Select S.DATE_EOP, S.RN, SP.ACC_TYPE, S.SUM_EQUAL as SUM ;
          From DKSpec SP ;
            Inner Join EopSpMir S On SP.RN_EOSpec = S.RN ;
          Where SP.Master_RN = ?cTmpDK.RN And Between(S.DATE_EOP, ?m.dDate1, ?m.dDate2) ;
          Order By 1, 2 ;
          Into Cursor cTmpEo

        Scan
          nSign = Sign(cTmpDK.SUM)
          Replace SUM With cTmpDK.SUM + Iif(cTmpEo.ACC_TYPE = "D", cTmpEo.SUM, -cTmpEo.SUM) In cTmpDK
          If m.nSign # Sign(cTmpDK.SUM) AND cTmpDK.SUM # 0
            Replace DATE_BEGIN With cTmpEo.DATE_EOP In cTmpDK
          EndIf
        EndScan

        Use In cTmpEo
      EndScan
    EndIf

    * Обособленные операции
    If m.lObosOp
      Select cTmpDK
      Index On RN Tag RN
      Index On RN_CURR + RN_AGENT + RN_ORGPU + RN_ACC_A1 + RN_ACC_A2 + RN_ACC_A3 + RN_ACC_A4 + RN_ACC_A5 + ;
               RN_BASE + NUM_BASE + DToS(DATE_BASE) + RN_MARK Tag UNI

      * Операции по исправлению ошибок прошлых лет (периодов)
      If !m.lEnd And !Empty(m.cJournalOp)
        Select B.DATE_EOP, SP.Master_RN As RN, S.SUM_EQUAL As SUM ;
          From EopBase B ;
            Inner Join EopSpec S  On B.RN    = S.Master_RN ;
            Inner Join DKSpec  SP On S.RN    = SP.RN_EOSpec ;
            Left  Join AccBase KR On S.RN_KR = KR.RN ;
          Where Between(B.DATE_EOP, ?m.dDateBegin, ?m.dDate5) ;
            And S.RN_DB = ?curAcc.RN And SP.ACC_TYPE = "D" ;
            And (S.RN_MO = ?m.cJournalOp Or ?curAcc.RN_MO = ?m.cJournalOp Or Nvl(KR.RN_MO, Space(4)) = ?m.cJournalOp) ;
        UNION ALL ;
        Select B.DATE_EOP, SP.Master_RN As RN, -S.SUM_EQUAL As SUM ;
          From EopBase B ;
            Inner Join EopSpec S  On B.RN    = S.Master_RN ;
            Inner Join DKSpec  SP On S.RN    = SP.RN_EOSpec ;
            Left  Join AccBase DB On S.RN_DB = DB.RN ;
          Where Between(B.DATE_EOP, ?m.dDateBegin, ?m.dDate5) ;
            And S.RN_KR = ?curAcc.RN And SP.ACC_TYPE = "K" ;
            And (S.RN_MO = ?m.cJournalOp Or ?curAcc.RN_MO = ?m.cJournalOp Or Nvl(DB.RN_MO, Space(4)) = ?m.cJournalOp) ;
          Into CURSOR cTmp2
      EndIf

      * Операции межотчетного периода
      If m.lEnd And !Empty(m.cWhere5)
        Select SP.Master_RN As RN, -S.SUM_EQUAL As SUM ;
          From EopBase B ;
            Inner Join EopSpec S  On B.RN = S.Master_RN ;
            Inner Join DKSpec  SP On S.RN = SP.RN_EOSpec ;
          Where B.DATE_EOP = ?m.dDate5 And S.RN_DB = ?curAcc.RN And SP.ACC_TYPE = "D" And &cWhere5 ;
        UNION ALL ;
        Select SP.Master_RN As RN, S.SUM_EQUAL As SUM ;
          From EopBase B ;
            Inner Join EopSpec S  On B.RN = S.Master_RN ;
            Inner Join DKSpec  SP On S.RN = SP.RN_EOSpec ;
          Where B.DATE_EOP = ?m.dDate5 And S.RN_DB = ?curAcc.RN And SP.ACC_TYPE = "K" And &cWhere5 ;
          Into CURSOR cTmp2
      EndIf

      Scan
        dDate6 = DOX(Iif(m.lEnd, m.dDate5, DATE_EOP), 3)
        If m.dDate6 = m.dDate1
          If Seek(RN, "cTmpDK", "RN")
            Replace SUM With SUM + cTmp2.SUM In cTmpDK
          EndIf
        Else
           Select D.RN_AGENT, ;
                 D.RN_CURR, D.RN_ORGPU, D.RN_ACC_A1, D.RN_ACC_A2, D.RN_ACC_A3, D.RN_ACC_A4, D.RN_ACC_A5, ;
                 D.RN_BASE, D.NUM_BASE, D.DATE_BASE, D.RN_MARK, ;
                 &cSbF As RN_SBF, ;
                 &cKBK As RN_KBK, ;
                 &cKOSGU_DK As RN_KOSGU, ;
                 D.TEXT, ;
                 D.DATE_BEGIN, ;
                 D.DATE_END ;
            From DkBase D ;
              &cJoinAn_DK ;
              &cJoinAnSbF_DK ;
            Where D.RN = ?cTmp2.RN ;
            Into CURSOR cTmpDK2

          If _Tally # 0
            If !Seek(RN_CURR + RN_AGENT + RN_ORGPU + ;
                     RN_ACC_A1 + RN_ACC_A2 + RN_ACC_A3 + RN_ACC_A4 + RN_ACC_A5 + ;
                     RN_BASE + NUM_BASE + DToS(DATE_BASE) + RN_MARK, "cTmpDK", "UNI")
              Insert Into cTmpDK (RN_CURR, RN_AGENT, RN_ORGPU, ;
                                  RN_ACC_A1, RN_ACC_A2, RN_ACC_A3, RN_ACC_A4, RN_ACC_A5, ;
                                  RN_BASE, NUM_BASE, DATE_BASE, RN_MARK, ;
                                  RN_SBF, RN_KBK, RN_KOSGU, TEXT, DATE_BEGIN, DATE_END) ;
                 VALUES (cTmpDK2.RN_CURR, cTmpDK2.RN_AGENT, cTmpDK2.RN_ORGPU, ;
                         cTmpDK2.RN_ACC_A1, cTmpDK2.RN_ACC_A2, cTmpDK2.RN_ACC_A3, cTmpDK2.RN_ACC_A4, cTmpDK2.RN_ACC_A5, ;
                         cTmpDK2.RN_BASE, cTmpDK2.NUM_BASE, cTmpDK2.DATE_BASE, cTmpDK2.RN_MARK, ;
                         cTmpDK2.RN_SBF, cTmpDK2.RN_KBK, cTmpDK2.RN_KOSGU, cTmpDK2.TEXT, cTmpDK2.DATE_BEGIN, cTmpDK2.DATE_END)
            EndIf
            Replace SUM With SUM + cTmp2.SUM In cTmpDK
          EndIf

          Use In cTmpDK2
        EndIf
      EndScan

      Use In cTmp2
    EndIf

    * Удаляем строки с нулевыми суммами
    Select * ;
      From cTmpDK ;
      Where &cWhereDK1 ;
      Into CURSOR cTmpDK1 READWRITE

    Use In cTmpDK

    * Форматируем счета + Долгосрочная и просроченная задолженность
    Select cTmpDK1
    Replace ALL ACCOUNT With MakeAccount(m.lKre, RN_AGENT, RN_SBF, RN_KBK, RN_KOSGU), ;
                LSrokD  With !m.lNoCalcLong And m.nSrokD # 0 And !IsNull(Date_End) And Date_End >= m.dDateLong, ;
                LSrok   With Iif(IsNull(Date_End) Or Empty(Date_End), m.nSrok # 0 And !IsNull(Date_Begin) And !Empty(Date_Begin) And m.dDate2 - Date_Begin >= m.nSrok, Date_End <= m.dDate2)

    Select RN, RN_AGENT, TEXT, DATE_BEGIN, DATE_END, LSrokD, LSrok, RN_SBF, RN_KBK, ACCOUNT, ;
           Iif(?m.lKre, -SUM, SUM) As SUM, ;
           Iif(LSrokD, Iif(?m.lKre, -SUM, SUM), 000000000000000.00) As SumD,;
           Iif(LSrok,  Iif(?m.lKre, -SUM, SUM), 000000000000000.00) As SumN ;
      From cTmpDK1 ;
      Into CURSOR cTmpDK3

    Use In cTmpDK1

    * Аналитическая информация
    If m.lEnd And !m.lPriorYear
      Select T.RN, T.RN_AGENT, T.ACCOUNT, T.SumN, T.TEXT, T.DATE_BEGIN, T.DATE_END, ;
             Nvl(O.INN, Space(22)) As INN, ;
             Nvl(O.TYPE, "1")      As TYPE ;
        From cTmpDK3 T ;
          Left Join OrgBase O On T.RN_AGENT = O.RN ;
        Where T.SumN # 0 And T.SumN >= ?m.nZadolzhMin ;
        Into Cursor cTmp11

      Select RN, RN_AGENT, TYPE, SumN, ACCOUNT, DATE_BEGIN, DATE_END, ;
             PadR(Iif(TYPE = "1", AllTrim(Iif(AT("/", INN) = 0, INN, Left(INN, AT("/", INN) - 1))), "0000000000"), 22) As INN, ;
             TEXT As NOTE ;
        From cTmp11 ;
        Into Cursor cTmp11

      Scan
        Insert Into &cNameCursor.2 (RN, ACC, ACCOUNT, SUM, DATE_BEGIN, DATE_END, RN_AGENT, TYPE, INN, NOTE) ;
            VALUES (cTmp11.RN, m.cAcc, cTmp11.ACCOUNT, cTmp11.SumN, cTmp11.DATE_BEGIN, cTmp11.DATE_END, cTmp11.RN_AGENT, cTmp11.TYPE, cTmp11.INN, cTmp11.NOTE)
      EndScan

      Use In cTmp11
    EndIf

    * объединенные остатки
    Select ACCOUNT, ;
           Sum(SUM)  As SUM, ;
           Sum(SUMD) As SUMD,;
           Sum(SUMN) As SUMN ;
       From cTmpDK3 ;
       Group By 1 ;
       Into CURSOR cTmp

    Use In cTmpDK3

  Else            && Счет невзаиморасчетный
    * остатки по невзаиморасчетным счетам
    cWhereC = Iif(Empty(m.cWhere), "", "And " + m.cWhere)

    If Empty(m.cWhereKontragent) And !(curAcc.TFIN_TYPE = 2 And curAcc.SBFLevel # 0 Or Empty(curAcc.RN_KLSDOH) And curAcc.KBKLevel # 0 Or curAcc.L401 Or m.lKOSGU_Rests)
      Select &cSbF As RN_SBF, ;
             &cKBK As RN_KBK, ;
             Space(4) As RN_KOSGU, ;
             R.SUMM_DB_EQUAL - R.SUMM_KR_EQUAL As SUM ;
        From AcRest R ;
        Where R.RN_ACCOUNT = ?curAcc.RN And R.DATE_REST = ?m.dDate1 &cWhereC ;
        Into Cursor cTmp2
    Else
      If !curAcc.L401 And !m.lKOSGU_Rests And !(m.lPriorYear And Year(m.dDate1) < 2021)
        Select K.RN_AnlR ;
          From curKosguRests K ;
            Inner Join AccSpec Anl On K.RN_AnlR = Anl.RN ;
          Where Anl.Master_RN = ?curAcc.RN And Anl.Level = ?m.nAnLevel401 ;
          TO SCREEN NOCONSOLE

        If _Tally # 0   && Оставляем только остатки по КОСГУ остатков
          cJoinKOSGU_R = "Inner Join curKosguRests K On S.RN_AC_A" + m.cLevKOSGU + " = K.RN_AnlR"
        EndIf
      EndIf

      Select &cSbF As RN_SBF, ;
             &cKBK As RN_KBK, ;
             &cKOSGU As RN_KOSGU, ;
             S.SUMM_DB_EQUAL - S.SUMM_KR_EQUAL As SUM ;
        From AcRest R ;
          Inner Join AcAnRest S On R.RN = S.MASTER_RN ;
          &cJoinKOSGU_R ;
          &cJoinAn ;
          &cJoinAnSbF ;
        Where R.RN_ACCOUNT = ?curAcc.RN And R.DATE_REST = ?m.dDate1 ;
        Into Cursor cTmp2 READWRITE

      * Убираем остатки по КОСГУ проводок
      If m.lKOSGU_Rests
        Scan For !Seek(RN_KOSGU, "curKosguRests")
          If Seek(RN_KOSGU, "curKosguLinks")
            Delete
          Else
            Replace RN_KOSGU With ""
          EndIf
        EndScan
      EndIf
    EndIf

    * обороты по невзаиморасчетным счетам
    If m.dDate1 <= m.dDate2
      Select "D" As Type, ;
             &cSbF As RN_SBF, ;
             &cKBK As RN_KBK, ;
             &cKOSGU_D As RN_KOSGU, ;
             S.SUM_EQUAL As SUM ;
        From EopSpMir S ;
          &cJoinAnD ;
          &cJoinAnSbF_D ;
        Where S.RN_DB = ?curAcc.RN And Between(S.DATE_EOP, ?m.dDate1, ?m.dDate2) ;
      UNION ALL ;
      Select "K" As Type, ;
             &cSbF As RN_SBF, ;
             &cKBK As RN_KBK, ;
             &cKOSGU_K As RN_KOSGU, ;
            -S.SUM_EQUAL As SUM ;
        From EopSpMir S ;
          &cJoinAnK ;
          &cJoinAnSbF_K ;
        Where S.RN_KR = ?curAcc.RN And Between(S.DATE_EOP, ?m.dDate1, ?m.dDate2) ;
        Into CURSOR cTmp21 READWRITE

      If !m.lPriorYear
        ReplaceKosgu169()
      EndIf

      Select * From cTmp2 UNION ALL Select RN_SBF, RN_KBK, RN_KOSGU, SUM From cTmp21 Into CURSOR cTmp2
      Use In cTmp21
    EndIf

    * Обособленные операции
    If m.lObosOp
      * Операции по исправлению ошибок прошлых лет (периодов)
      If !m.lEnd And !Empty(m.cJournalOp)
        Select "D" As Type, ;
               &cSbF As RN_SBF, ;
               &cKBK As RN_KBK, ;
               &cKOSGU_D As RN_KOSGU, ;
               S.SUM_EQUAL As SUM ;
          From EopBase B ;
            Inner Join EopSpec S  On B.RN = S.Master_RN ;
            Left  Join AccBase KR On S.RN_KR = KR.RN ;
            &cJoinAnD ;
            &cJoinAnSbF_D ;
          Where Between(B.DATE_EOP, ?m.dDateBegin, ?m.dDate5) And S.RN_DB = ?curAcc.RN ;
            And (S.RN_MO = ?m.cJournalOp Or ?curAcc.RN_MO = ?m.cJournalOp Or Nvl(KR.RN_MO, Space(4)) = ?m.cJournalOp) ;
        UNION ALL ;
        Select "K" As Type, ;
               &cSbF As RN_SBF, ;
               &cKBK As RN_KBK, ;
               &cKOSGU_K As RN_KOSGU, ;
              -S.SUM_EQUAL As SUM ;
          From EopBase B ;
            Inner Join EopSpec S  On B.RN = S.Master_RN ;
            Left  Join AccBase DB On S.RN_DB = DB.RN ;
            &cJoinAnK ;
            &cJoinAnSbF_K ;
          Where Between(B.DATE_EOP, ?m.dDateBegin, ?m.dDate5) And S.RN_KR = ?curAcc.RN ;
            And (S.RN_MO = ?m.cJournalOp Or ?curAcc.RN_MO = ?m.cJournalOp Or Nvl(DB.RN_MO, Space(4)) = ?m.cJournalOp) ;
          Into CURSOR cTmp21 READWRITE

        If !m.lPriorYear
          ReplaceKosgu169()
        EndIf

        Select * From cTmp2 UNION ALL Select RN_SBF, RN_KBK, RN_KOSGU, SUM From cTmp21 Into CURSOR cTmp2
        Use In cTmp21
      EndIf

      * Операции межотчетного периода
      If m.lEnd And !Empty(m.cWhere5)
        Select "D" As Type, ;
               &cSbF As RN_SBF, ;
               &cKBK As RN_KBK, ;
               &cKOSGU_D As RN_KOSGU, ;
               -S.SUM_EQUAL As SUM ;
          From EopBase B ;
            Inner Join EopSpec S On B.RN = S.Master_RN ;
            &cJoinAnD ;
            &cJoinAnSbF_D ;
          Where B.DATE_EOP = ?m.dDate5 And S.RN_DB = ?curAcc.RN And &cWhere5 ;
        UNION ALL ;
        Select "K" As Type, ;
               &cSbF As RN_SBF, ;
               &cKBK As RN_KBK, ;
               &cKOSGU_K As RN_KOSGU, ;
               S.SUM_EQUAL As SUM ;
          From EopBase B ;
            Inner Join EopSpec S On B.RN = S.Master_RN ;
            &cJoinAnK ;
            &cJoinAnSbF_K ;
          Where B.DATE_EOP = ?m.dDate5 And S.RN_KR = ?curAcc.RN And &cWhere5 ;
          Into CURSOR cTmp21 READWRITE

        If !m.lPriorYear
          ReplaceKosgu169()
        EndIf

        Select * From cTmp2 UNION ALL Select RN_SBF, RN_KBK, RN_KOSGU, SUM From cTmp21 Into CURSOR cTmp2
        Use In cTmp21
      EndIf
    EndIf

    Select RN_SBF, RN_KBK, RN_KOSGU, Space(29) As ACCOUNT, Sum(SUM) As SUM ;
      From cTmp2 ;
      Group By 1, 2, 3 ;
      Into CURSOR cTmp2 READWRITE

    * Форматируем счета
    Select cTmp2
    Replace ALL ACCOUNT With MakeAccount(m.lKre, "", RN_SBF, RN_KBK, RN_KOSGU)

    Select ACCOUNT, Sum(SUM) As SUM ;
      From cTmp2 ;
      Group By 1 ;
      Into CURSOR cTmp3

    Use In cTmp2

    Select ACCOUNT, ;
           Iif(?m.lKre, -SUM, SUM) As SUM, ;
           000000000000000.00 As SumD, ;
           000000000000000.00 As SumN  ;
      From cTmp3 ;
      Where &cWhere1 ;
      Into CURSOR cTmp

    Use In cTmp3
  EndIf

  ** Детализация по коду счета
  If m.lPriorYear   && прошедший год
    If m.lNoError
      If curAcc.L401
        * по счетам 4014, 4016
        Local ARRAY arrSumPrior[1]
        Select cTmp
        Sum SUM To ARRAY arrSumPrior
        If arrSumPrior[1] # 0
          Select &cNameCursor.401
          If !Seek(SubStr(m.cAcc, 2, 4))
            Insert Into &cNameCursor.401 (ACC) Values (SubStr(m.cAcc, 2, 4))
          EndIf
          Replace SumP2 With SumP2 + arrSumPrior[1]
        EndIf
      Else
        * Итого по коду синтетического счета
        Local ARRAY arrSumPrior[3]
        Select cTmp
        Sum SUM, SumD, SUMN To ARRAY arrSumPrior
        If arrSumPrior[1] # 0 Or arrSumPrior[2] # 0 Or arrSumPrior[3] # 0
          Select &cNameCursor.ItogSS
          If !Seek(Left(m.cAcc, 4))
            Insert Into &cNameCursor.ItogSS (ACC) Values (m.cAcc)
          EndIf
          Replace SumP2  With SumP2  + arrSumPrior[1], ;
                  SumP2D With SumP2D + arrSumPrior[2], ;
                  SumP2N With SumP2N + arrSumPrior[3]
        EndIf
      EndIf
    EndIf
  Else              && текущий год
    If !curAcc.L401
      lNoError = RepG151.GetComRepPrm151("0503169", m.lNoError, m.cAcc, m.cNameCursor, m.lEnd)
    EndIf

    If m.lNoError
      Select cTmp
      Scan
        If curAcc.LDK And !m.lNoCalcLong And m.nSrokD # 0 And cTmp.SumD # 0
          Select &cNameCursor
          Seek(m.cAcc + cTmp.ACCOUNT)
          If !m.lEnd
            Replace Sum1D With Sum1D + cTmp.SumD
          Else
            Replace Sum2D With Sum2D + cTmp.SumD
          EndIf

          * Итого по коду счета
          Select &cNameCursor.Itog
          Seek(m.cAcc)
          If !m.lEnd
            Replace Sum1D With Sum1D + cTmp.SumD
          Else
            Replace Sum2D With Sum2D + cTmp.SumD
          EndIf
        EndIf

        If curAcc.L401
          * по счетам 4014, 4016
          Select &cNameCursor
          If !Seek(m.cAcc + cTmp.ACCOUNT)
            Insert Into &cNameCursor (ACC, ACCOUNT) Values (m.cAcc, cTmp.ACCOUNT)
          EndIf
          If !m.lEnd
            Replace Sum1 With Sum1 + cTmp.SUM
          Else
            Replace Sum2 With Sum2 + cTmp.SUM
          EndIf
        Else
          * Итого по коду синтетического счета
          Select &cNameCursor.ItogSS
          If !Seek(Left(m.cAcc, 4))
            Insert Into &cNameCursor.ItogSS (ACC) Values (m.cAcc)
          EndIf
          If !m.lEnd
            Replace Sum1  With Sum1  + cTmp.SUM, ;
                    Sum1N With Sum1N + cTmp.SUMN
          Else
            Replace Sum2  With Sum2  + cTmp.SUM, ;
                    Sum2N With Sum2N + cTmp.SUMN
          EndIf

          If curAcc.LDK And !m.lNoCalcLong And m.nSrokD # 0 And cTmp.SumD # 0
            If !m.lEnd
              Replace Sum1D With Sum1D + cTmp.SumD
            Else
              Replace Sum2D With Sum2D + cTmp.SumD
            EndIf
          EndIf
        EndIf
      EndScan
    EndIf
  EndIf

  Use In cTmp

EndProc


*************************
Procedure Form169GetTurns
  LParameters s

  * Переменные
  Local dDate1, dDate2, oRec, cWhereExl, cKOSGU_D1, cKOSGU_K1
  cWhereExl = ""

  * даты (период)
  dDate1 = m.dDateBegin
  dDate2 = m.dDateEnd - 1

  * Обособленные операции
  If m.dDate2 >= m.dDateBegin
    If !Empty(m.cWhere5)
      cWhereExl = "B.DATE_EOP = ?m.dDate2 And " + m.cWhere5
    EndIf
    If !Empty(m.cJournalOp)
      cWhereExl = m.cWhereExl + Iif(Empty(m.cWhereExl), "", " Or ") + "S.RN_MO = ?m.cJournalOp Or ?curAcc.RN_MO = ?m.cJournalOp Or Nvl(C.RN_MO, Space(4)) = ?m.cJournalOp"
    EndIf
    If !Empty(m.cWhereExl)
      cWhereExl = "And !(" + m.cWhereExl + ")"
    EndIf
  EndIf

  * Аналитика КОСГУ
  If curAcc.LDK And m.l00xAcc
    Store "Nvl(" + m.cKOSGU_DK + ", Space(4))" To cKOSGU_D1, cKOSGU_K1
  Else
    cKOSGU_D1 = cKOSGU_D
    cKOSGU_K1 = cKOSGU_K
  EndIf
  
  * Проводки
  Select B.DATE_EOP, S.MASTER_RN, S.RN, ;
         Nvl(D.RN_AGENT, Space(4)) As RN_AGENT, ;
         "D" As Type, ;
         Space(29) As ACCOUNT, ;
         .F. As IsReturn, ;
         &cSbF As RN_SBF, ;
         &cKBK As RN_KBK, ;
         &cKOSGU_D1 As RN_KOSGU, ;
         S.RN_KR As RN_CORR, ;
         S.SUM_EQUAL As SUM ;
    From EopBase B ;
      Inner Join EopSpec S On B.RN = S.Master_RN ;
      Left  Join AccBase C On S.RN_KR = C.RN ;
      Left  Join DkSpec  DS On S.RN + "D" = DS.RN_EOSPEC + DS.ACC_TYPE ;
      Left  Join DkBase  D  On DS.Master_RN = D.RN ;
      &cJoinAnD ;
      &cJoinAnSbF_D ;
    Where Between(B.DATE_EOP, ?m.dDate1, ?m.dDate2) And S.RN_DB = ?curAcc.RN &cWhereExl ;
  UNION ALL ;
  Select B.DATE_EOP, S.MASTER_RN, S.RN, ;
         Nvl(D.RN_AGENT, Space(4)) As RN_AGENT, ;
         "K" As Type, ;
         Space(29) As ACCOUNT, ;
         .F. As IsReturn, ;
         &cSbF As RN_SBF, ;
         &cKBK As RN_KBK, ;
         &cKOSGU_K1 As RN_KOSGU, ;
         S.RN_DB As RN_CORR, ;
         S.SUM_EQUAL As SUM ;
    From EopBase B ;
      Inner Join EopSpec S On B.RN = S.Master_RN ;
      Left  Join AccBase C On S.RN_DB = C.RN ;
      Left  Join DkSpec  DS On S.RN + "K" = DS.RN_EOSPEC + DS.ACC_TYPE ;
      Left  Join DkBase  D  On DS.Master_RN = D.RN ;
      &cJoinAnK ;
      &cJoinAnSbF_K ;
    Where Between(B.DATE_EOP, ?m.dDate1, ?m.dDate2) And S.RN_KR = ?curAcc.RN &cWhereExl ;
    Into CURSOR curSpec1 READWRITE

  If !curAcc.LDK
    ReplaceKosgu169()
  EndIf

  * Форматируем счета
  Replace ALL ACCOUNT  With MakeAccount(m.s = "K", RN_AGENT, RN_SBF, RN_KBK, RN_KOSGU), ;
              IsReturn With SubStr(ACCOUNT, 19, 5) = "20581" And m.lNvPCrOnly Or ;
                            SubStr(ACCOUNT, 19, 5) = "30314" And m.lENPDbOnly Or ;
                            Empty(arrGroupMask) And SubStr(ACCOUNT, 19, 3) = "205" And CheckIsReturn(RN_SBF, RN_KBK)
  Select S.DATE_EOP, S.MASTER_RN, S.RN, S.TYPE, S.SUM, S.ACCOUNT, IsReturn, ;
         &cIsMoney As IsMoney ;
    From curSpec1 S ;
      Inner Join AccBase C On S.RN_CORR = C.RN ;
    Into CURSOR curSpec2

  Use In curSpec1

  Select curSpec2
  Scan
    Scatter NAME oRec
    Insert Into curSpec&s From NAME oRec
  EndScan

  Use In curSpec2
EndProc


***********************
Procedure Form169Change
  Parameters s

  * Переменные
  Private l_401, cAcc
  Local nSum1, nSum2, nSumD, nSumK

  * Список счетов, по которым найдены проводки
  Select Dist ACCOUNT, IsReturn From curSpec&s Into CURSOR curAccount

  * Анализ проводок в разрезе полученных счетов
  Scan
    l_401 = InList(SubStr(curAccount.Account, 19, 4), '4014', '4016')

    * код счета
    If m.l_401
      cAcc = "0" + PadR(SubStr(curAccount.Account, 19, 4), 8, "0")
    Else
      cAcc = PadR(SubStr(curAccount.Account, 18, 6), 9, "0")
    EndIf

    * Сальдо н/г, Сальдо на конец
    Store 0 To nSum1, nSum2, nSumD, nSumK

    Select crsD
    If Seek(m.cAcc + curAccount.Account)
      nSum1 = Sum1
      nSum2 = Sum2
      nSumD = Sum2 - Sum1
    EndIf

    Select crsK
    If Seek(m.cAcc + curAccount.Account)
      nSum1 = m.nSum1 - Sum1
      nSum2 = m.nSum2 - Sum2
      nSumK = Sum2 - Sum1
    EndIf

    * проводки
    Select * From curSpec&s ;
      Where ACCOUNT = ?curAccount.ACCOUNT ;
      Order By DATE_EOP, MASTER_RN, RN ;
      Into CURSOR curSpec_1

    * разбор условий, перенос сумм в таблицы счетов и итогов
    = Form169Change2(curAccount.ACCOUNT, curAccount.IsReturn, m.nSum1, m.nSum2, m.nSumD, m.nSumK)
  EndScan

  Use In curAccount
EndProc


************************
Procedure Form169Change2
  LParameters cAccount, lIsReturn, nSum1, nSum2, nSumD, nSumK

  * Переменные
  Local cAcc3, cAcc44, cAcc5, nSumD5, nSumD6, nSumD7, nSumD8, nSumK5, nSumK6, nSumK7, nSumK8, nLimSum, nTurnSum, i, lPutNoMoney, nLen, cNMSubs1
  Store 0 To nSumD5, nSumD6, nSumD7, nSumD8, nSumK5, nSumK6, nSumK7, nSumK8, nTurnSum

  * код счета
  cAcc5 = SubStr(m.cAcc, 2, 5)
  cAcc4 = Left(m.cAcc5, 4)
  cAcc3 = Left(m.cAcc5, 3)

  Select curSpec_1

  * разбор условий
  Do Case
    Case m.cAcc3 = "206" Or InList(m.cAcc5, '21005', '210T5', '210Т5')
      Sum SUM For TYPE = "D"              To nSumD5
      Sum SUM For TYPE = "D" And !IsMoney To nSumD6
      Sum SUM For TYPE = "K"              To nSumD7
      Sum SUM For TYPE = "K" And !IsMoney To nSumD8

    Case m.cAcc3 = "302" Or InList(m.cAcc5, "30401", "30402", "30403", '30406', '30407', '304T6', '304Т6')
      Sum SUM For TYPE = "K"              To nSumK5
      Sum SUM For TYPE = "K" And !IsMoney To nSumK6
      Sum SUM For TYPE = "D"              To nSumK7
      Sum SUM For TYPE = "D" And !IsMoney To nSumK8

    Case m.l_401
      Sum SUM For TYPE = "K"              To nSumK5
      Sum SUM For TYPE = "D"              To nSumK7

    Case !m.lIsReturn And (InList(m.cAcc3, "205", "209") Or m.cAcc4 = "2101")
      Sum SUM For TYPE = "D"              To nSumD5
      nSumD5 = m.nSumD5 + Min(m.nSumK, 0)
      Sum SUM For TYPE = "D" And !IsMoney To nSumD6
      Sum SUM For TYPE = "K"              To nSumD7
      nSumD7 = m.nSumD7 - Max(m.nSumK, 0)
      Sum SUM For TYPE = "K" And !IsMoney To nSumD8
      *
      nSumK5 = Max(m.nSumK, 0)
      nSumK7 = -Min(m.nSumK, 0)

    Case m.lIsReturn And (InList(m.cAcc3, "205", "209") Or m.cAcc4 = "2101")
      Sum SUM For TYPE = "K"              To nSumK5
      Sum SUM For TYPE = "K" And !IsMoney To nSumK6
      Sum SUM For TYPE = "D"              To nSumK7
      Sum SUM For TYPE = "D" And !IsMoney To nSumK8

    Case m.cAcc3 = "208"
      Sum SUM For TYPE = "D"              To nSumD5
      nSumD5 = m.nSumD5 + Min(m.nSumK, 0)
      Sum SUM For TYPE = "D" And !IsMoney To nSumD6
      Sum SUM For TYPE = "K"              To nSumD7
      nSumD7 = m.nSumD7 - Max(m.nSumK, 0)
      Sum SUM For TYPE = "K" And !IsMoney To nSumD8
      nSumD8 = m.nSumD8 - Max(m.nSumK, 0)
      *
      nSumK5 = Max(m.nSumK, 0)
      nSumK6 = Max(m.nSumK, 0)
      nSumK7 = -Min(m.nSumK, 0)

    Case m.lIsReturn And m.cAcc3 = "303"
      Sum SUM For TYPE = "D"              To nSumD5
      nSumD5 = m.nSumD5 + Min(m.nSumK, 0)
      Sum SUM For TYPE = "D" And !IsMoney To nSumD6
      Sum SUM For TYPE = "K"              To nSumD7
      nSumD7 = m.nSumD7 - Max(m.nSumK, 0)
      Sum SUM For TYPE = "K" And !IsMoney To nSumD8
      *
      nSumK5 = Max(m.nSumK, 0)
      nSumK7 = -Min(m.nSumK, 0)

    Case !m.lIsReturn And m.cAcc3 = "303"
      nSumD5 = Max(m.nSumD, 0)
      nSumD7 = -Min(m.nSumD, 0)
      *
      Sum SUM For TYPE = "K"              To nSumK5
      nSumK5 = m.nSumK5 + Min(m.nSumD, 0)
      Sum SUM For TYPE = "K" And !IsMoney To nSumK6
      Sum SUM For TYPE = "D"              To nSumK7
      nSumK7 = m.nSumK7 - Max(m.nSumD, 0)
      Sum SUM For TYPE = "D" And !IsMoney To nSumK8
  EndCase

  Use In curSpec_1

  * Рассчитывать показатели по неденежным расчетам только для счетов
  lPutNoMoney = Empty(m.cNoMoneySubs)
  If !m.lPutNoMoney
    For m.i = 1 To m.nALenNMS
      cNMSubs1 = AllTrim(arrNoMoneySubs[m.i])
      nLen     = Len(m.cNMSubs1)
      If m.nLen # 0 And Like(m.cNMSubs1, SubStr(m.cAccount, 19, m.nLen))
        lPutNoMoney = .T.
        Exit
      EndIf
    Next
  EndIf

  If !m.lPutNoMoney
    Store 0 To nSumD6, nSumD8, nSumK6, nSumK8
  EndIf

  * Переносить суммы превышения "неденежных расчетов" над "всего" в подотчет противоположного направления
  If m.lTransfer
    If m.nSumD6 > m.nSumD5
      nSumK8 = m.nSumK8 + m.nSumD6 - m.nSumD5
      nSumD6 = m.nSumD5
    EndIf
    If m.nSumD8 > m.nSumD7
      nSumK6 = m.nSumK6 + m.nSumD8 - m.nSumD7
      nSumD8 = m.nSumD7
    EndIf
    If m.nSumK6 > m.nSumK5
      nSumD8 = m.nSumD8 + m.nSumK6 - m.nSumK5
      nSumK6 = m.nSumK5
    EndIf
    If m.nSumK8 > m.nSumK7
      nSumD6 = m.nSumD6 + m.nSumK8 - m.nSumK7
      nSumK8 = m.nSumK7
    EndIf
  EndIf

  * Перенос сумм в таблицы счетов и итогов
  If nSum&s.5 # 0 Or nSum&s.6 # 0 Or nSum&s.7 # 0 Or nSum&s.8 # 0
    Select crs&s
    If !Seek(m.cAcc + m.cAccount)
      Insert Into crs&s (ACC, ACCOUNT) Values (m.cAcc, m.cAccount)
    EndIf
    Replace SumUp     With SumUp     + m.nSum&s.5, ;
            SumUpNM   With SumUpNM   + m.nSum&s.6, ;
            SumDown   With SumDown   + m.nSum&s.7, ;
            SumDownNM With SumDownNM + m.nSum&s.8

    If !m.l_401
      * Итого по коду счета
      Select crs&s.Itog
      If !Seek(m.cAcc)
        Insert Into crs&s.Itog (ACC) Values (m.cAcc)
      EndIf
      Replace SumUp     With SumUp     + m.nSum&s.5, ;
              SumUpNM   With SumUpNM   + m.nSum&s.6, ;
              SumDown   With SumDown   + m.nSum&s.7, ;
              SumDownNM With SumDownNM + m.nSum&s.8

      * Итого по коду синтетического счета
      Select crs&s.ItogSS
      If !Seek(Left(m.cAcc, 4))
        Insert Into crs&s.ItogSS (ACC) Values (m.cAcc)
      EndIf
      Replace SumUp     With SumUp     + m.nSum&s.5, ;
              SumUpNM   With SumUpNM   + m.nSum&s.6, ;
              SumDown   With SumDown   + m.nSum&s.7, ;
              SumDownNM With SumDownNM + m.nSum&s.8
    EndIf
  EndIf

EndProc


*********************
Procedure MakeAccount
  Parameters lKre, cAgentRN, cSbF_RN, cKBK_RN, cKOSGU_RN

  * Переменные
  Local ARRAY arrCode[1]
  Local cAccount, cCode, ni, i, nLen, cAcc, cKOSGU, lPutSFG, cFGSubs
  cAccount = GetAgentKOSGU()
  cCode = ""

  If curAcc.L401 Or m.l00xAcc
    cKOSGU = Iif(!Empty(m.cKOSGU_RN) And Seek(m.cKOSGU_RN, "AccSpec", "RN"), Left(AllTrim(AccSpec.SAccount), 3), "")
    If !curAcc.L401 And m.l00xAcc And Empty(m.cKOSGU)
      cKOSGU = "000"
    EndIf
    If !Empty(m.cKOSGU)
      cAccount = Left(m.cAccount, m.n19Pos + 4) + m.cKOSGU
    EndIf
  EndIf

  * Форматируем счет
  If m.nAccType # 1   && 9 символов
    && ШФ
    If !Empty(m.cSbF_RN) And (Empty(m.cKBK_RN) Or !curAcc.L_KBK)
      Select PadR(Iif(F.RASP_INCL = 1, AllTrim(F.RASP_CODE), "") + ;
             AllTrim(Nvl(PR.CODE, Nvl(R.CODE, Space(6)))) + ;
             AllTrim(Nvl(bC.CODE, Space(10))) + ;
             AllTrim(F.PRG_CODE) + ;
             AllTrim(Nvl(bE.CODE, Space(8))), 33) As 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 ;
         Where F.RN = ?m.cSbF_RN ;
         Into ARRAY arrCode

      If _Tally # 0
        cCode = arrCode[1]
      EndIf
    EndIf

    && КБК
    If !Empty(m.cKBK_RN) And (Empty(m.cSbF_RN) Or curAcc.L_KBK)
      Select PadR(Iif(B.ADMIN_INCL = 1, AllTrim(Nvl(D.CODE, Space(4))), "") + ;
             AllTrim(Nvl(K.MNEMO, Space(8))) + ;
             AllTrim(Nvl(E.MNEMO, Space(2))) + ;
             AllTrim(Nvl(P.MNEMO, Space(7))) + ;
             Iif(B.ADMIN_INCL = 1, "", AllTrim(Nvl(C.MNEMO, Space(3)))), 21) As Code ;
         From BKlsDoh B ;
           Left Join fDirRec  D On B.ADMIN_RN   = D.RN ;
           Left Join PRF_KIND K On B.KIND_RN    = K.RN ;
           Left Join PRF_ELEM E On B.ELEMENT_RN = E.RN ;
           Left Join PRF_PROG P On B.PROGRAM_RN = P.RN ;
           Left Join PRF_ECLS C On B.ECONCL_RN  = C.RN ;
         Where B.RN = ?m.cKBK_RN ;
         Into ARRAY arrCode

      If _Tally # 0
        cCode = arrCode[1]
      EndIf
    EndIf

    cAccount = PadR(AllTrim(m.cCode), 17, "0") + Left(m.cAccount, 12)
  EndIf

  * Группировка по символам номера счета
  If !Empty(arrGroupMask)
    * Только для кодов счетов
    lPutSFG = Empty(m.cSubsForGrp)
    If !m.lPutSFG
      For m.i = 1 To m.nALenSFG
        cFGSubs = AllTrim(arrSubsForGrp[m.i])
        nLen    = Len(m.cFGSubs)
        If m.nLen # 0 And Like(m.cFGSubs, SubStr(m.cAccount, 19, m.nLen))
          lPutSFG = .T.
          Exit
        EndIf
      Next
    EndIf

    If m.lPutSFG
      ni = ALen(arrGroupMask, 1)
      cAccount = RTrim(m.cAccount)
      If Len(m.cAccount) > arrGroupMask(m.ni, 2) + 3
        cAccount = Left(m.cAccount, arrGroupMask(m.ni, 2)) + "000"
      EndIf
      nLen = Len(m.cAccount)
      cAcc = Replicate("0", m.nLen)
      For m.i = 1 To m.ni
        cAcc = Iif(arrGroupMask(m.i, 1) = 1, "", Left(m.cAcc, arrGroupMask(m.i, 1) - 1)) + ;
               SubStr(m.cAccount, arrGroupMask(m.i, 1), arrGroupMask(m.i, 2) - arrGroupMask(m.i, 1) + 1) + ;
               SubStr(m.cAcc, arrGroupMask(m.i, 2) + 1)
      Next
      cAccount = m.cAcc
    EndIf
  EndIf

  Return m.cAccount

EndProc


***********************
Procedure GetAgentKOSGU
  * Переменные
  Local ARRAY arrCode[1]
  Local cAccount, lDb, lKr, cCode, cSelect
  cSelect = Select()
  cCode = ""

  cAccount = curAcc.Account
  lDb = SubStr(m.cAccount, m.n19Pos, 1) = '2'
  lKr = SubStr(m.cAccount, m.n19Pos, 1) = '3'

  If !m.lDb And !m.lKr Or curAcc.L401 Or m.l00xAcc
    Return m.cAccount
  EndIf

  * Ищем Группу счетов
  Select G.RN ;
    From AcAcbGrs A ;
      Inner Join AccAcbGr G On A.Master_RN = G.RN ;
    Where A.ACC_RN = ?curAcc.RN And !G.LBal ;
  UNION ALL ;
  Select G.RN ;
    From AcAcbGrs A ;
      Inner Join AccAcbGr G On A.Master_RN = G.RN ;
    Where A.ACB_RN = ?curAcc.RN_ACB And G.LBal ;
    Into CURSOR curAccAcbGr

  * Ищем КОСГУ в Правилах Группы счетов по контрагенту и Группе контрагентов
  If !Empty(m.cAgentRN)
    Select DISTINCT E.CODE ;
      From curAccAcbGr A ;
        Inner Join AccBGrsU U On A.RN = U.Master_RN ;
        Inner Join fEconCl  E On U.FECON_RN = E.RN ;
        Inner Join OrgGroup G On U.OrgG_RN = G.RN ;
        Inner Join OrgGrups O On G.RN = O.Master_RN ;
      Where O.Org_RN = ?m.cAgentRN And Iif(?m.lDb, U.KOSGU_DB = 1, U.KOSGU_KR = 1) ;
      Order By U.RN ;
      Into ARRAY arrCode
  EndIf

  * Ищем КОСГУ в Правилах Группы счетов по пустой Группе контрагентов
  If Empty(m.cAgentRN) Or _Tally = 0
    Select E.CODE ;
      From curAccAcbGr A ;
        Inner Join AccBGrsU U On A.RN = U.Master_RN ;
        Inner Join fEconCl  E On U.FECON_RN = E.RN ;
      Where Empty(U.OrgG_RN) And Iif(?m.lDb, U.KOSGU_DB = 1, U.KOSGU_KR = 1) ;
      Order By U.RN ;
      Into ARRAY arrCode
  EndIf

  If _Tally # 0
    cCode = arrCode[1]
  EndIf

  USE In curAccAcbGr
  Select (m.cSelect)

  * Ищем КОСГУ в аналитике счета
  If Empty(m.cCode)
    Select SAccount From AccSpec Where Master_RN = ?curAcc.RN And Iif(?m.lDb, KOSGU_DB = 1, KOSGU_KR = 1) Into ARRAY arrCode
    If _Tally # 0
      cCode = arrCode[1]
    EndIf
  EndIf

  * Подставляем КОСГУ в счет
  If !Empty(m.cCode)
    cAccount = Left(m.cAccount, m.n19Pos + 4) + "00" + SubStr(AllTrim(m.cCode), 3, 1)
  EndIf

  Return m.cAccount

EndProc


***********************
Procedure CheckIsReturn
  LParameters cSbF_RN, cKBK_RN

  * Переменные
  Local ARRAY arrCode[1]
  Local cKBK1_RN, lIsReturn

  If m.nAccType = 1   && 26 символов
    cKBK1_RN = curAcc.RN_KLSDOH
  Else                && 9 символов
    If !Empty(m.cKBK_RN) And (Empty(m.cSbF_RN) Or curAcc.L_KBK)
      cKBK1_RN = m.cKBK_RN
    EndIf
  EndIf

  If !Empty(m.cKBK1_RN)
    Select Nvl(K.MNEMO, Space(8)) As KIND, ;
           Nvl(C.MNEMO, Space(3)) As ECLS  ;
      From BKlsDoh B ;
        Left Join PRF_KIND K On B.KIND_RN    = K.RN ;
        Left Join PRF_ECLS C On B.ECONCL_RN  = C.RN ;
      Where B.RN = ?m.cKBK1_RN ;
      Into ARRAY arrCode

    If _Tally # 0
      lIsReturn = Left(AllTrim(arrCode[1]), 3) = "219" And Left(AllTrim(arrCode[2]), 3) = "150"
    EndIf
  EndIf

  Return m.lIsReturn

EndProc


*************************
Procedure ReplaceKosgu169
  If curAcc.L401 Or !m.l00xAcc
    Return
  EndIf
  Replace For !Empty(RN_KOSGU) And !Seek(RN_KOSGU, "curKosguRests") ;
      RN_KOSGU With Iif(Seek(RN_KOSGU, "curKosguLinks") And curKosguLinks.KOSGU = Iif(Type = "D", 1, 2), curKosguLinks.RN_AnlR, "")
EndProc


***************************
Procedure MakeKosguLinks169
  Local ARRAY cAccGrupAr[1], arrEconR[1], arrSAccR[1]
  Local dDate1, dDate2
  dDate1 = DOX(m.dDateBegin, 3)
  dDate2 = Max(DOX(m.dDateEnd, 3), m.dDateEnd - 1)

  Create CURSOR curKosguLinks (KOSGU N(1), RN_Anl C(4), RN_AnlR C(4))
  Index On RN_Anl Tag TURN

  Select curAcc
  Scan For !LDK
    * Ищем греппу счетов
    Select Master_RN From ACACBGRS Where ACC_RN = ?curAcc.RN Order By 1 Into ARRAY cAccGrupAr
    
    If _Tally = 0 And !Empty(curAcc.RN_ACB)
      Select Master_RN From ACACBGRS Where ACB_RN = ?curAcc.RN_ACB Order By 1 Into ARRAY cAccGrupAr
    EndIf
    
    If _Tally = 0
      Loop
    EndIf

    * Формируем список соответствия КОСГУ проводок и КОСГУ остатков
    Select RN, SAccount From AccSpec ;
      Where Master_RN = ?curAcc.RN And Level = ?m.nAnLevel401 ;
      Into CURSOR curAccSpec

    Scan
      Select ER.Code, Iif(S.KOSGU_DB = 1, 1, 2) As KOSGU ;
        From ACCBGRSU S ;
          Inner Join fEconCl ET On S.FECON_RN  = ET.RN ;
          Inner Join fEconCl ER On S.FECONR_RN = ER.RN ;
        Where S.Master_RN = ?cAccGrupAr[1] And (S.KOSGU_DB = 1 Or KOSGU_KR = 1) ;
          And AllTrim(ET.Code) == AllTrim(?curAccSpec.SAccount) ;
          And ER.Date_From <= ?m.dDate1 And (Empty(ER.Date_To) Or ER.Date_To >= ?m.dDate2) ;
        Order By S.RN ;
        Into ARRAY arrEconR

      If _Tally = 0
        Loop
      EndIf

      Select RN From AccSpec ;
        Where Master_RN = ?curAcc.RN And Level = ?m.nAnLevel401 And AllTrim(SAccount) == AllTrim(?arrEconR[1]) ;
        Into ARRAY arrSAccR

      If _Tally # 0
        Insert Into curKosguLinks (KOSGU, RN_Anl, RN_AnlR) VALUES (arrEconR[2], curAccSpec.RN, arrSAccR[1])
      EndIf
    EndScan

    Use In curAccSpec
  EndScan

  Select DISTINCT RN_AnlR From curKosguLinks Into CURSOR curKosguRests
  Index On RN_AnlR Tag REST

EndProc


**********************
Procedure MakeFileName
&&Формирую имя файла            
  If !Empty(m.cUnlPath)
    Local Array aFiles(1)
    Local nNum, cNum, nN, i
    cUnlPath  = AllTrim(m.cUnlPath)
    cFormCode = AllTrim(crPrint169.cNameForm)
    cFileName = m.cFormCode
    If !Empty(m.dReoDate)                   && реорганизация
      cFileName = m.cFileName + "R"
    Else
      cFileName = m.cFileName + "Y"
    EndIf
    nNum = 0
    If ADir(aFiles, m.cUnlPath + m.cFileName + "??.txt") # 0
      For m.i = 1 To ALen(aFiles) / 5
        nN = At(".", aFiles(m.i, 1))
        cNum = SubStr(aFiles(m.i, 1), 5, m.nN - 5)
        If m.nNum < Val(m.cNum)
          nNum = Val(m.cNum)
        EndIf 
        If m.nNum = 99
          nNum = 0
        EndIf
      EndFor
    EndIf
    cFileName = m.cUnlPath + m.cFileName + PadL(Int(m.nNum) + 1, 2, "0") + ".txt"
  EndIf
EndProc


**********************
Procedure DeleteSheets
* Удаление листа из отчета
  Parameters oPrint, cSheetName

  Local nSheet
  nSheet = oPrint.GetSheetNum(m.cSheetName)

  If m.nSheet > 0 
    oPrint.Book.Sheet = m.nSheet
    oPrint.Book.EditDeleteSheets()
  EndIf  
EndProc
]]></FPC_></MSE>
  <FPC_><![CDATA[*[VFP]
RepG151.GetOutS(.T.)
]]></FPC_>
    </печать>
  </отчет>
  <форма>
    <ид>f_0503169_191n_180n_2023</ид>
    <тип>XML</тип>
    <описание>
      <дополнительно>
        <desc_version>1.0</desc_version>
      </дополнительно>
      <VFP_свойство имя="Name">f_0503169</VFP_свойство>
      <VFP_свойство имя="Caption">Форма 0503169-191н_ред180н_2023</VFP_свойство>
      <VFP_свойство имя="Height">485</VFP_свойство>
      <VFP_свойство имя="Width">465</VFP_свойство>
      <VFP_метод имя="Valid"><![CDATA[LParam oThis, oThisform
Local nMinLen, nMaxLen, cSub, ni, n1, n2, nR, cS, lOk, oPage, nPos, c18B, i
Dimension arrGroupMask(1, 2)
Store "" To arrGroupMask, cUsl18B
nMinLen = 23
nMaxLen = 29

oPage = oThisForm.PF.Page1

dSelDate = oPage.cntSelDate.restDate.Value
*
cOrg = oPage.OrgFrom.GetSaveValue()
cWhereKontragent = oPage.OrgFrom.GetCond()
*

c18B  = 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.c18B)
   = ExclMes("Не указан код вида деятельности для бюджетной деятельности!")
   oThisForm.PF.ActivePage = 1
   oPage.Txt18B1.SetFocus()
   Return .F.
EndIf

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

For m.i = 1 To Len(m.c18B)
  cUsl18B = m.cUsl18B + Iif(!Empty(m.cUsl18B), ",'", "'") + SubStr(m.c18B, m.i, 1) + "'"
Next

* Балансовые единицы
cWhereBalUnitsB  = oPage.BalunitsB.GetCond()
cBalUnitsB  = oPage.BalunitsB.GetSaveValue()

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

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

oPage = oThisForm.PF.Page2
cCatEO = oPage.CmbCatEO.Value

* Каталог для выгрузки
oPage = oThisForm.PF.Page3
cUnlPath = oPage.Catalog.Text.Value
cDicIsp  = oPage.DicIsp.GetSaveValue()
If !Empty(m.cUnlPath) And !Directory(m.cUnlPath, 1)
   = ExclMes("Каталог " + AllTrim(m.cUnlPath) + Chr(13) + "не существует!")
   oThisForm.PF.ActivePage = 2
   oPage.Catalog.SetFocus()
   Return .F.
EndIf
]]></VFP_метод>
      <VFP_метод имя="PostInit"><![CDATA[LParam oThis, oThisform
Dimension arrVFO[2, 2]
arrVFO[1, 1] = PadR("Бюджетная", 40)
arrVFO[1, 2] = "b"
arrVFO[2, 1] = PadR("Средства во временном распоряжении", 40)
arrVFO[2, 2] = "t"

Local oPage

oPage = oThisForm.PF.Page1
oPage.cntSelDate.InitThis(m.dSelDate)
oPage.cntReoDate.Text.ValueChanged()
oPage.OrgFrom.SetSaveValue(m.cOrg)
oPage.Cmb_VFO.RowSource = "arrVFO"
oPage.Cmb_VFO.BackColor = oPage.Cmb_VFO.SaveBackColor
oPage.Cmb_VFO.Init()
oPage.BalunitsB.SetSaveValue(m.cBalUnitsB)
oPage.GroupAcc.SetSaveValue(m.cComDicGroup)
oPage.GroupAcc.AddUpdate()

oPage = oThisForm.PF.Page2
oPage.chkNoCalcLong.ValueChanged()
oPage.CmbMark.SetSource(UnitRn("EconOp"))
oPage.CmbMark.Value = m.cRN_Mark
oPage.CmbCatEO.UnitCode = "EconOp"
oPage.CmbCatEO.InitThis(m.cCatEO)
oPage.JournalOp.Value = m.cJournalOp

oPage = oThisForm.PF.Page3
oPage.Catalog.Text.Value = m.cUnlPath
oPage.DicIsp.SetSaveValue(m.cDicIsp)
oPage.fldIspName.Value = m.cIspName
]]></VFP_метод>
      <элемент>
        <VFP_имя>Tbtndialog1</VFP_имя>
        <VFP_свойство имя="Left">187</VFP_свойство>
        <VFP_свойство имя="Top">448</VFP_свойство>
      </элемент>
      <элемент>
        <VFP_класс>TPageFrame</VFP_класс>
        <VFP_свойство имя="Name">PF</VFP_свойство>
        <VFP_свойство имя="Height">445</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">295</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_класс>Month_year_m</VFP_класс>
            <VFP_свойство имя="Name">cntSelDate</VFP_свойство>
            <VFP_свойство имя="Left">148</VFP_свойство>
            <VFP_свойство имя="Top">20</VFP_свойство>
            <элемент>
              <VFP_имя>SelYear</VFP_имя>
              <VFP_свойство имя="Left">204</VFP_свойство>
            </элемент>
            <элемент>
              <VFP_имя>lbllYear</VFP_имя>
              <VFP_свойство имя="Left">274</VFP_свойство>
            </элемент>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">Дата реорганизации:</VFP_свойство>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">55</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TdicDate</VFP_класс>
            <VFP_свойство имя="Name">cntReoDate</VFP_свойство>
            <VFP_свойство имя="Left">350</VFP_свойство>
            <VFP_свойство имя="Top">50</VFP_свойство>
            <элемент>
              <VFP_имя>Text</VFP_имя>
              <VFP_свойство имя="ControlSource">dReoDate</VFP_свойство>
              <VFP_метод имя="ValueChanged"><![CDATA[LParam oThis, oThisForm
Local oObj
oObj = oThis.Parent.Parent.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">85</VFP_свойство>
            <VFP_свойство имя="Caption">Учреждение:</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TDicHist</VFP_класс>
            <VFP_свойство имя="Name">OrgFrom</VFP_свойство>
            <VFP_свойство имя="Left">170</VFP_свойство>
            <VFP_свойство имя="Top">80</VFP_свойство>
            <VFP_свойство имя="Width">275</VFP_свойство>
            <VFP_свойство имя="AreaName" тип="C">OrgBase</VFP_свойство>
            <VFP_свойство имя="DictName" тип="C">Agnt_bms</VFP_свойство>
            <VFP_свойство имя="RetField" тип="C">rmnemo_org</VFP_свойство>
            <VFP_свойство имя="HistoryName" тип="C">H_AGENTS169_180N_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">115</VFP_свойство>
            <VFP_свойство имя="Caption">Размерность плана счетов:</VFP_свойство>
          </элемент>            
          <элемент>
            <VFP_класс>TComboBox</VFP_класс>
            <VFP_свойство имя="Left">325</VFP_свойство>
            <VFP_свойство имя="Name">Cmb_AccType</VFP_свойство>
            <VFP_свойство имя="Top">110</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_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">145</VFP_свойство>
            <VFP_свойство имя="Caption">Вид деятельности:</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TComboBox</VFP_класс>
            <VFP_свойство имя="Left">200</VFP_свойство>
            <VFP_свойство имя="Name">Cmb_VFO</VFP_свойство>
            <VFP_свойство имя="Top">140</VFP_свойство>
            <VFP_свойство имя="Height">23</VFP_свойство>
            <VFP_свойство имя="Width">245</VFP_свойство>
            <VFP_свойство имя="BoundColumn">2</VFP_свойство>
            <VFP_свойство имя="RowSourceType">5</VFP_свойство>
            <VFP_свойство имя="Style">2</VFP_свойство>
            <VFP_свойство имя="DisplayCount">6</VFP_свойство>
            <VFP_свойство имя="ControlSource">cVFO</VFP_свойство>
            <VFP_метод имя="ValueChanged"><![CDATA[LParam oThis, oThisForm
If !Empty(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 = ""
  If oThis.Value = "b"
    oThis.Parent.Txt18B1.Value = "1"
  EndIf
  If oThis.Value = "t"
    oThis.Parent.Txt18B1.Value = "3"
  EndIf
EndIf
]]></VFP_метод>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">175</VFP_свойство>
            <VFP_свойство имя="Caption">Код вида финансового обеспечения:</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TTextBox</VFP_класс>
            <VFP_свойство имя="Left">236</VFP_свойство>
            <VFP_свойство имя="Top">170</VFP_свойство>
            <VFP_свойство имя="Width">16</VFP_свойство>
            <VFP_свойство имя="InputMask">N</VFP_свойство>
            <VFP_свойство имя="ControlSource">cTxt18B1</VFP_свойство>
            <VFP_свойство имя="Name">Txt18B1</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TTextBox</VFP_класс>
            <VFP_свойство имя="Left">257</VFP_свойство>
            <VFP_свойство имя="Top">170</VFP_свойство>
            <VFP_свойство имя="Width">16</VFP_свойство>
            <VFP_свойство имя="InputMask">N</VFP_свойство>
            <VFP_свойство имя="ControlSource">cTxt18B2</VFP_свойство>
            <VFP_свойство имя="Name">Txt18B2</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TTextBox</VFP_класс>
            <VFP_свойство имя="Left">278</VFP_свойство>
            <VFP_свойство имя="Top">170</VFP_свойство>
            <VFP_свойство имя="Width">16</VFP_свойство>
            <VFP_свойство имя="InputMask">N</VFP_свойство>
            <VFP_свойство имя="ControlSource">cTxt18B3</VFP_свойство>
            <VFP_свойство имя="Name">Txt18B3</VFP_свойство>
          </элемент>        
          <элемент>
            <VFP_класс>TTextBox</VFP_класс>
            <VFP_свойство имя="Left">299</VFP_свойство>
            <VFP_свойство имя="Top">170</VFP_свойство>
            <VFP_свойство имя="Width">16</VFP_свойство>
            <VFP_свойство имя="InputMask">N</VFP_свойство>
            <VFP_свойство имя="ControlSource">cTxt18B4</VFP_свойство>
            <VFP_свойство имя="Name">Txt18B4</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TTextBox</VFP_класс>
            <VFP_свойство имя="Left">320</VFP_свойство>
            <VFP_свойство имя="Top">170</VFP_свойство>
            <VFP_свойство имя="Width">16</VFP_свойство>
            <VFP_свойство имя="InputMask">N</VFP_свойство>
            <VFP_свойство имя="ControlSource">cTxt18B5</VFP_свойство>
            <VFP_свойство имя="Name">Txt18B5</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TTextBox</VFP_класс>
            <VFP_свойство имя="Left">341</VFP_свойство>
            <VFP_свойство имя="Top">170</VFP_свойство>
            <VFP_свойство имя="Width">16</VFP_свойство>
            <VFP_свойство имя="InputMask">N</VFP_свойство>
            <VFP_свойство имя="ControlSource">cTxt18B6</VFP_свойство>
            <VFP_свойство имя="Name">Txt18B6</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TTextBox</VFP_класс>
            <VFP_свойство имя="Left">362</VFP_свойство>
            <VFP_свойство имя="Top">170</VFP_свойство>
            <VFP_свойство имя="Width">16</VFP_свойство>
            <VFP_свойство имя="InputMask">N</VFP_свойство>
            <VFP_свойство имя="ControlSource">cTxt18B7</VFP_свойство>
            <VFP_свойство имя="Name">Txt18B7</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TTextBox</VFP_класс>
            <VFP_свойство имя="Left">383</VFP_свойство>
            <VFP_свойство имя="Top">170</VFP_свойство>
            <VFP_свойство имя="Width">16</VFP_свойство>
            <VFP_свойство имя="InputMask">N</VFP_свойство>
            <VFP_свойство имя="ControlSource">cTxt18B8</VFP_свойство>
            <VFP_свойство имя="Name">Txt18B8</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TTextBox</VFP_класс>
            <VFP_свойство имя="Left">404</VFP_свойство>
            <VFP_свойство имя="Top">170</VFP_свойство>
            <VFP_свойство имя="Width">16</VFP_свойство>
            <VFP_свойство имя="InputMask">N</VFP_свойство>
            <VFP_свойство имя="ControlSource">cTxt18B9</VFP_свойство>
            <VFP_свойство имя="Name">Txt18B9</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TTextBox</VFP_класс>
            <VFP_свойство имя="Left">425</VFP_свойство>
            <VFP_свойство имя="Top">170</VFP_свойство>
            <VFP_свойство имя="Width">16</VFP_свойство>
            <VFP_свойство имя="InputMask">N</VFP_свойство>
            <VFP_свойство имя="ControlSource">cTxt18B10</VFP_свойство>
            <VFP_свойство имя="Name">Txt18B10</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">205</VFP_свойство>
            <VFP_свойство имя="Caption">Балансовая единица:</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>S_balunits</VFP_класс>
            <VFP_свойство имя="Name">BalunitsB</VFP_свойство>
            <VFP_свойство имя="Left">200</VFP_свойство>
            <VFP_свойство имя="Top">200</VFP_свойство>
            <VFP_свойство имя="Width">245</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">225</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TTextBox</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">240</VFP_свойство>
            <VFP_свойство имя="Width">425</VFP_свойство>
            <VFP_свойство имя="MaxLength">240</VFP_свойство>
            <VFP_свойство имя="ControlSource">cNoMoneySubs</VFP_свойство>
            <VFP_свойство имя="Name">fldNoMoneySubs</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TCheckBox</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">270</VFP_свойство>
            <VFP_свойство имя="WordWrap">.T.</VFP_свойство>
            <VFP_свойство имя="Width">380</VFP_свойство>
            <VFP_свойство имя="PicturePosition">0</VFP_свойство>
            <VFP_свойство имя="ControlSource">lTransfer</VFP_свойство>
            <VFP_свойство имя="Name">ChkTransfer</VFP_свойство>
            <VFP_свойство имя="Caption">Переносить суммы превышения "неденежных расчетов" над "всего" в подотчет противоположного направления</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>T3dShape</VFP_класс>
            <VFP_свойство имя="Height">85</VFP_свойство>
            <VFP_свойство имя="Left">10</VFP_свойство>
            <VFP_свойство имя="Top">315</VFP_свойство>
            <VFP_свойство имя="Width">445</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">310</VFP_свойство>
            <VFP_свойство имя="Caption">Группировка</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">330</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
oThis.Parent.fldSubsForGrp.Enabled = !Empty(oThis.Value)
]]></VFP_метод>
            <VFP_свойство имя="Name">GroupAcc</VFP_свойство>
            <VFP_свойство имя="Left">255</VFP_свойство>
            <VFP_свойство имя="Top">325</VFP_свойство>
            <VFP_свойство имя="Width">190</VFP_свойство>
            <VFP_свойство имя="AreaName" тип="C">ComDicBs</VFP_свойство>
            <VFP_свойство имя="DictName" тип="C">ComDic_mc</VFP_свойство>
            <VFP_свойство имя="RetField" тип="C">Code</VFP_свойство>
            <VFP_свойство имя="HistoryName" тип="C">H_Group169_180N_2023</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_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">Только для кодов счетов (например, "401??"):</VFP_свойство>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">350</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TTextBox</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">365</VFP_свойство>
            <VFP_свойство имя="Width">425</VFP_свойство>
            <VFP_свойство имя="MaxLength">240</VFP_свойство>
            <VFP_свойство имя="ControlSource">cSubsForGrp</VFP_свойство>
            <VFP_свойство имя="Name">fldSubsForGrp</VFP_свойство>
          </элемент>
        </элемент>
        <элемент>
          <VFP_имя>Page2</VFP_имя>
          <VFP_свойство имя="Caption">Детализация</VFP_свойство>
          <VFP_свойство имя="FontName">MS Sans Serif</VFP_свойство>
          <VFP_свойство имя="FontSize">8</VFP_свойство>
          <элемент>
            <VFP_класс>T3dShape</VFP_класс>
            <VFP_свойство имя="Height">185</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">25</VFP_свойство>
            <VFP_свойство имя="Caption">Срок для определения долгосрочной задолженности (в месяцах):</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TSpinner</VFP_класс>
            <VFP_свойство имя="ControlSource">nSrokD</VFP_свойство>
            <VFP_свойство имя="Increment">1.00</VFP_свойство>
            <VFP_свойство имя="Inputmask">999</VFP_свойство>
            <VFP_свойство имя="KeyboardHighValue">999</VFP_свойство>
            <VFP_свойство имя="KeyboardLowValue">0</VFP_свойство>
            <VFP_свойство имя="Left">380</VFP_свойство>
            <VFP_свойство имя="Name">SrokD</VFP_свойство>
            <VFP_свойство имя="SpinnerHighValue">999.00</VFP_свойство>
            <VFP_свойство имя="SpinnerLowValue">0.00</VFP_свойство>
            <VFP_свойство имя="Top">20</VFP_свойство>
            <VFP_свойство имя="Width">65</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TCheckBox</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">50</VFP_свойство>
            <VFP_свойство имя="ControlSource">lNoCalcLong</VFP_свойство>
            <VFP_свойство имя="Name">chkNoCalcLong</VFP_свойство>
            <VFP_свойство имя="Caption">Не рассчитывать показатели долгосрочной задолженности</VFP_свойство>
            <VFP_метод имя="ValueChanged"><![CDATA[LParam oThis, oThisForm
oThis.Parent.SrokD.Enabled = !oThis.Value
]]></VFP_метод>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">75</VFP_свойство>
            <VFP_свойство имя="Caption">Срок для определения просроченной задолженности (в днях):</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TSpinner</VFP_класс>
            <VFP_свойство имя="ControlSource">nSrok</VFP_свойство>
            <VFP_свойство имя="Increment">1.00</VFP_свойство>
            <VFP_свойство имя="Inputmask">9999</VFP_свойство>
            <VFP_свойство имя="KeyboardHighValue">9999</VFP_свойство>
            <VFP_свойство имя="KeyboardLowValue">0</VFP_свойство>
            <VFP_свойство имя="Left">380</VFP_свойство>
            <VFP_свойство имя="Name">Srok</VFP_свойство>
            <VFP_свойство имя="SpinnerHighValue">9999.00</VFP_свойство>
            <VFP_свойство имя="SpinnerLowValue">0.00</VFP_свойство>
            <VFP_свойство имя="Top">70</VFP_свойство>
            <VFP_свойство имя="Width">65</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">100</VFP_свойство>
            <VFP_свойство имя="Caption">Минимальный размер просроченной задолженности</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">113</VFP_свойство>
            <VFP_свойство имя="Caption">для детализации (раздел 2):</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TTextSum</VFP_класс>
            <VFP_свойство имя="Left">320</VFP_свойство>
            <VFP_свойство имя="Top">100</VFP_свойство>
            <VFP_свойство имя="Width">120</VFP_свойство>
            <VFP_свойство имя="Positive">.T.</VFP_свойство>
            <VFP_свойство имя="ControlSource">nZadolzhMin</VFP_свойство>
            <VFP_свойство имя="Name">ZadolzhMin</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TCheckBox</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">130</VFP_свойство>
            <VFP_свойство имя="WordWrap">.T.</VFP_свойство>
            <VFP_свойство имя="Width">420</VFP_свойство>
            <VFP_свойство имя="PicturePosition">0</VFP_свойство>
            <VFP_свойство имя="ControlSource">lNvPCrOnly</VFP_свойство>
            <VFP_свойство имя="Name">ChkNvPCrOnly</VFP_свойство>
            <VFP_свойство имя="Caption">Отражать показатели изменения расчетов по невыясненным поступлениям только в сведениях по кредиторской задолженности</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TCheckBox</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">160</VFP_свойство>
            <VFP_свойство имя="WordWrap">.T.</VFP_свойство>
            <VFP_свойство имя="Width">420</VFP_свойство>
            <VFP_свойство имя="PicturePosition">0</VFP_свойство>
            <VFP_свойство имя="ControlSource">lENPDbOnly</VFP_свойство>
            <VFP_свойство имя="Name">ChkENPDbOnly</VFP_свойство>
            <VFP_свойство имя="Caption">Отражать показатели изменения расчетов по единому налоговому платежу только в сведениях по дебиторской задолженности</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>T3dShape</VFP_класс>
            <VFP_свойство имя="Height">65</VFP_свойство>
            <VFP_свойство имя="Left">10</VFP_свойство>
            <VFP_свойство имя="Top">205</VFP_свойство>
            <VFP_свойство имя="Width">440</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">200</VFP_свойство>
            <VFP_свойство имя="Caption">Аналитика</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">Уровень аналитики КОСГУ:</VFP_свойство>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">220</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TSpinner</VFP_класс>
            <VFP_свойство имя="ControlSource">nAnLevel401</VFP_свойство>
            <VFP_свойство имя="Increment">1.00</VFP_свойство>
            <VFP_свойство имя="Inputmask">9</VFP_свойство>
            <VFP_свойство имя="KeyboardHighValue">5</VFP_свойство>
            <VFP_свойство имя="KeyboardLowValue">1</VFP_свойство>
            <VFP_свойство имя="Name">aLevel401</VFP_свойство>
            <VFP_свойство имя="SpinnerHighValue">5.00</VFP_свойство>
            <VFP_свойство имя="SpinnerLowValue">1.00</VFP_свойство>
            <VFP_свойство имя="Left">400</VFP_свойство>
            <VFP_свойство имя="Top">215</VFP_свойство>
            <VFP_свойство имя="Width">40</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TCheckBox</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">245</VFP_свойство>
            <VFP_свойство имя="ControlSource">l00xAcc</VFP_свойство>
            <VFP_свойство имя="Name">Chkl00xAcc</VFP_свойство>
            <VFP_свойство имя="Caption">Заполнять КОСГУ «00Х» по данным бухгалтерского учета</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>T3dShape</VFP_класс>
            <VFP_свойство имя="Height">75</VFP_свойство>
            <VFP_свойство имя="Left">10</VFP_свойство>
            <VFP_свойство имя="Top">280</VFP_свойство>
            <VFP_свойство имя="Width">440</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">275</VFP_свойство>
            <VFP_свойство имя="Caption">Операции межотчетного периода</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">295</VFP_свойство>
            <VFP_свойство имя="Caption">Особая отметка:</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>mark</VFP_класс>
            <VFP_свойство имя="Left">285</VFP_свойство>
            <VFP_свойство имя="Top">290</VFP_свойство>
            <VFP_свойство имя="Width">155</VFP_свойство>
            <VFP_свойство имя="Height">23</VFP_свойство>
            <VFP_свойство имя="Name">CmbMark</VFP_свойство>
            <VFP_свойство имя="ControlSource">cRN_Mark</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">325</VFP_свойство>
            <VFP_свойство имя="Caption">Каталог хозяйственных операций:</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>tdictree</VFP_класс>
            <VFP_свойство имя="Left">285</VFP_свойство>
            <VFP_свойство имя="Top">320</VFP_свойство>
            <VFP_свойство имя="Width">155</VFP_свойство>
            <VFP_свойство имя="Name">CmbCatEO</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>T3dShape</VFP_класс>
            <VFP_свойство имя="Height">45</VFP_свойство>
            <VFP_свойство имя="Left">10</VFP_свойство>
            <VFP_свойство имя="Top">365</VFP_свойство>
            <VFP_свойство имя="Width">440</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">360</VFP_свойство>
            <VFP_свойство имя="Caption">Операции по исправлению ошибок прошлых лет</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">380</VFP_свойство>
            <VFP_свойство имя="Caption">Журнал операций:</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>ordera</VFP_класс>
            <VFP_свойство имя="Left">285</VFP_свойство>
            <VFP_свойство имя="Top">375</VFP_свойство>
            <VFP_свойство имя="Width">155</VFP_свойство>
            <VFP_свойство имя="Height">23</VFP_свойство>
            <VFP_свойство имя="Name">JournalOp</VFP_свойство>
            <VFP_свойство имя="ControlSource">cJournalOp</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">85</VFP_свойство>
            <VFP_свойство имя="Top">20</VFP_свойство>
            <VFP_свойство имя="Width">360</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">ВРО:</VFP_свойство>
            <VFP_свойство имя="Left">20</VFP_свойство>
            <VFP_свойство имя="Top">55</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TTextBox</VFP_класс>
            <VFP_свойство имя="Left">195</VFP_свойство>
            <VFP_свойство имя="Top">50</VFP_свойство>
            <VFP_свойство имя="Width">57</VFP_свойство>
            <VFP_свойство имя="MaxLength">1</VFP_свойство>
            <VFP_свойство имя="ControlSource">cVRO</VFP_свойство>
            <VFP_свойство имя="Name">VRO</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TLabel</VFP_класс>
            <VFP_свойство имя="Caption">ИСТ:</VFP_свойство>
            <VFP_свойство имя="Left">340</VFP_свойство>
            <VFP_свойство имя="Top">55</VFP_свойство>
          </элемент>
          <элемент>
            <VFP_класс>TTextBox</VFP_класс>
            <VFP_свойство имя="Left">388</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
Local oPage
oPage = oThisForm.PF.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">250</VFP_свойство>
            <VFP_свойство имя="AreaName" тип="C">OrgBase</VFP_свойство>
            <VFP_свойство имя="DictName" тип="C">Agnt_bms</VFP_свойство>
            <VFP_свойство имя="RetField" тип="C">rmnemo_org</VFP_свойство>
            <VFP_свойство имя="HistoryName" тип="C">H_AgentsIsp169_180N_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">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">195</VFP_свойство>
            <VFP_свойство имя="Top">140</VFP_свойство>
            <VFP_свойство имя="Width">250</VFP_свойство>
            <VFP_свойство имя="ControlSource">cIspTel</VFP_свойство>
            <VFP_свойство имя="Name">fldIspTel</VFP_свойство>
          </элемент>
        </элемент>
      </элемент>
    </описание>
  </форма>
</Модуль>
