var
  Vp_Date: String;
  BudgetId: String;
  IncReceiverId: String;
  IncAccountId: String;
  FinYear: String;
  param_ShemaLoadDopKbk: String;
  FO: Variant;
  Doc: Variant;
  param_CrushDoc24: boolean;
  param_CreateDocuments: boolean;
  param_CreateDoc24: boolean;
  param_UseGroupBuh25: boolean;
  //param_CreateDoc5,
  param_CreateDoc5ZR: boolean;
  param_Search_Bo: Boolean;
  // exchange #2600
  // настройка "Создавать документы БУ/АУ"
  vCfg_2600_CreateED_AUBU: boolean;
  // exchange #2600
  // в переменной хранится значение TO.KOD_UBP.
  // это понадобится при разборе BDPD по 2.9.2
  vTO_KOD_UBP: string;
  // exchange #2866
  // создание эд 5го класса по разным блокам
  vCfg_CreateDoc5_ZR: boolean;
  vCfg_CreateDoc5_ZS: boolean;
  vCfg_CreateDoc5_ZV: boolean;
  vCfg_CreateDoc5_ZN: boolean;
  // exchange #2952
  vCfg_CreateParamAUBU: string;
  // exchange #2945
  vCfg_ChangeStatusED199to10: boolean;
  // exchange #2942
  vCfg_CreateMultiED199: boolean;
  // exchange #3009
  vCfg3009: boolean;
  // exchange #3018
  vCfg_CreateDopDoc: integer;
  // exchange #3081
  vCfg_CreateDoc199byUK_old: boolean;
{------------------------------------------------------------------------------}
{~FillOrgAccountED11
  exchange #2932
  заполнение поле счета для фигансироания на закладке ГРБС в ЗОР
  при загрузке по разделам ZR/ZS}
procedure FillOrgAccountED11( aAccID: string; aDoc: Variant);
var
  xXmlAcc: Variant;
begin


    try
      if (LENGTH( aAccID) <= 0)
        then WriteInfo( 'Счет не указан.')
        else
      // загружаем описание счета плательщика
      if (GetOrgAccountGetter_ToXML( xXmlAcc, 'id='+aAccID) <> 1)
        then WriteInfo( FORMAT( 'В бд не найдено описание счета %s.', [ aAccID]))
        else begin
          // БИК
          CopyNodeAttributeEx( aDoc, 'ORG_BIC', xXmlAcc, 'ORG_BIC');
          // банк
          CopyNodeAttributeEx( aDoc, 'ORG_B_NAME', xXmlAcc, 'ORG_B_NAME');
          // корсчет
          CopyNodeAttributeEx( aDoc, 'ORG_CORACCOUNT', xXmlAcc, 'ORG_B_CORACCOUNT');
          // ТОФК
          CopyNodeAttributeEx( aDoc, 'ORG_OFK_CODE', xXmlAcc, 'ORG_OFK_CODE');
          CopyNodeAttributeEx( aDoc, 'ORG_OFK_NAME', xXmlAcc, 'ORG_OFK_NAME');
          // УФК - официальное наименование
          CopyNodeAttributeEx( aDoc, 'ORG_UFK_NAME', xXmlAcc, 'ORG_UFK_NAME');
          // счет УФК
          CopyNodeAttributeEx( aDoc, 'ORG_UFK_ACCOUNT', xXmlAcc, 'ORG_UFK_ACCOUNT');
{
          // БИК
          aDoc.SetAttribute( 'ORG_BIC',
                              GetNodeAttributeEx( xXmlAcc, 'ORG_BIC'));
          // банк
          aDoc.SetAttribute( 'ORG_B_NAME',
                              GetNodeAttributeEx( xXmlAcc, 'ORG_B_NAME'));
          // корсчет
          aDoc.SetAttribute( 'ORG_CORACCOUNT',
                              GetNodeAttributeEx( xXmlAcc, 'ORG_B_CORACCOUNT'));
          // ТОФК
          aDoc.SetAttribute( 'ORG_OFK_CODE',
                              GetNodeAttributeEx( xXmlAcc, 'ORG_OFK_CODE'));
          aDoc.SetAttribute( 'ORG_OFK_NAME',
                              GetNodeAttributeEx( xXmlAcc, 'ORG_OFK_NAME'));
          // УФК - официальное наименование
          aDoc.SetAttribute( 'ORG_UFK_NAME',
                              GetNodeAttributeEx( xXmlAcc, 'ORG_UFK_NAME'));
          // счет УФК
          aDoc.SetAttribute( 'ORG_UFK_ACCOUNT',
                              GetNodeAttributeEx( xXmlAcc, 'ORG_UFK_ACCOUNT'));
                              }

        end;
      except
        ExceptionLog( 'Сбой FillOrgAccountED11');
    end;

end;
{------------------------------------------------------------------------------}
{~FillDepartamentalinfo_ImpIK_ZR
  заполнение идентифик. платежа для эд, загружаемых по разделам IK.ZR.

  результат:
    =true - все в норме.
    =false - есть проблемы. эд не создавать.}
function FillDepartamentalinfo_ImpIK_ZR(aXmlED, aXmlZR: Variant): boolean;
begin

    try
      Result := FALSE;
      //заполняем идентификатор
      aXmlED.setAttribute('AUTHOR_ID', Get_Author_Id(aXmlZR.getAttribute('PAYSTATUS')));
      //Exchange #771, если KDOH не пусто, а AUTHOR_ID пусто, то AUTHOR_ID заполняем нулем.
      if (aXmlED.getAttribute('AUTHOR_ID') = '') and (aXmlZR.getAttribute('KDOH') <> '') then
        aXmlED.setAttribute('AUTHOR_ID', '0');
      if aXmlED.getAttribute('AUTHOR_ID') <> '' then
      begin
        // exchange #2791 - проверка КБК в ид.платежа
        // если проверка =false - не создаем эд.
        // при этом ошибку указываем в журнале info
        if NOT DoCheck_2791_LoadKBK0_PI_BUDGET_CODE( aXmlZR.getAttribute('KDOH'))
          then EXIT;
//            Result := False;
//              EXIT;
//          end;

        // exchange #3062 - удален косгу
        // принимается всегда доходная
        aXmlED.setAttribute('PI_ANAL_KIND', '1');
{          aXmlED.setAttribute('PI_ANAL_KIND', GetPi_Anal_Kind(
          Copy(aXmlZR.getAttribute('KDOH'), 18, 3)));}
        aXmlED.setAttribute('PI_BUDGET_CODE', aXmlZR.getAttribute('KDOH'));
        aXmlED.setAttribute('PAY_OKATO', aXmlZR.getAttribute('OKATO'));
        aXmlED.setAttribute('GROUND_ID', GetGrnd_Ground_Id(aXmlZR.getAttribute('OSN_PL')));
        aXmlED.setAttribute('TAXPERIOD', aXmlZR.getAttribute('NAL_PER'));
        aXmlED.setAttribute('GRND_DOC_NUMBER', aXmlZR.getAttribute('NOM_DOK'));
        aXmlED.setAttribute('GRND_DOC_DATE', aXmlZR.getAttribute('DATE_DOK'));
        aXmlED.setAttribute('PAYTYPE_ID', GetGrnd_PayType_Id(aXmlZR.getAttribute('TYPE_PL')));
      end
      else begin
        aXmlED.setAttribute('PI_BUDGET_CODE', '');
        aXmlED.setAttribute('PAY_OKATO', '');
        aXmlED.setAttribute('TAXPERIOD', '');
        aXmlED.setAttribute('GRND_DOC_NUMBER', '');
        aXmlED.setAttribute('GRND_DOC_DATE', '');
      end;
      Result := TRUE;
      except
        ExceptionProc( 'FillDepartamentalinfo_ImpIK_ZR');
    end;

end;
{------------------------------------------------------------------------------}
{~CheckKBK_All_ZRST
  проверка кбк во всех строках раздела ZR (aXmlZR) для эд не ау/бу.
  результат:
    =true - все в норме.
    =false - проблема хотя бы в одной строке. эд нельзя создавать.

  exchange #3062
    отмена косгу для не ау/бу.}
function CheckKBK_All_ZRST( aXmlZR: Variant;
                            aBudgetId: string{;
                            aAUBU: boolean}): boolean;
var
  i: integer;
  xXmlZRST: Variant;
  xResultCheckKBK: boolean;
//  xWithoutPurposefulgrant: boolean;
//  xKBK_RCP: string;
//  xKBK_KES: string;
begin

    try
      Result := TRUE;
      WriteLog( 'Проверка КБК в разделах ZRST...');
      for i := 0 to aXmlZR.ChildNodes.Length - 1 do begin
        xXmlZRST := aXmlZR.ChildNodes.Item[i];
        if xXmlZRST.NodeName = 'ZRST' then begin
          Default_F_Line( xXmlZRST);

          xXmlZRST.setAttribute( 'KBK',
                                 GetNodeAttributeEx( xXmlZRST, 'KBK_PAY'));
          xXmlZRST.setAttribute( 'TYPE_KBK',
                                 GetNodeAttributeEx( xXmlZRST, 'TYPE_KBK_PAY'));
{
          // exchange #2600
          // проверка кода цели при проверке КБК.
          if (GetNodeAttributeEx( xXmlZRST, 'KOD_IST_KBK') = '6')
            then xWithoutPurposefulgrant := TRUE
            else xWithoutPurposefulgrant := FALSE;
}
          // код цели - для не ау/бу
          // следует обратить внимание, что для ZRST проверка доп кодов/КЦ
          // выполняется по полю ADD_KLASS_PAY через перенос в поле ADD_KLASS.
          {if NOT xWithoutPurposefulgrant
            then}
          xXmlZRST.setAttribute(
                               'ADD_KLASS',
                               GetNodeAttributeEx( xXmlZRST, 'ADD_KLASS_PAY'));

          xResultCheckKBK := DoCheckKBK( xXmlZRST,
                                aBudgetId,
                                FALSE, // проверка КЦ xWithoutPurposefulgrant,
                                FALSE,      // без КОСГУ для не аубу
                                param_ShemaLoadDopKbk);

          if NOT xResultCheckKBK then begin
            DoCheckKBK_DetailErrorLine( i, aXmlZR, xXmlZRST);
            Result := FALSE;
          end;

          (*
          // exchange #3062
          // отмена косгу для "не ау/бу"
          if aAUBU then begin
            // exchange #2869
            // дополнительно проверяем поле КОСГУ (ZRST.KBK_RCP c 18 по 20)
            // поле необязательно для заполнения, поэтому проверяем
            // только если поле заполнено.
            // exchange #3062 - отмена косгу
            xKBK_RCP := GetNodeAttributeEx( aXmlZRST, 'KBK_RCP');
            if (LENGTH( xKBK_RCP) >= 20) then begin

              xKBK_KES := DoEncodeKBK_KES( xKBK_RCP, TRUE);
              if (LENGTH( xKBK_KES) > 0) then
                if NOT KbkExists( aBudgetId, xKBK_KES, 'Kes') then begin
                  WriteInfo(
                      Format( 'Значение KОСГУ=%s (из ZRST.KBK_RCP) не найдено в справочнике '
                             +'классификаторов бюджета;',
                              [ xKBK_KES]));

                  // exchange #2995
                  // здесь проблема замены кбк на 0, если косгу не
                  // найден в бд. по exchange #2995 если код =000
                  // то он заменяется на 999, поэтому возникает проблема:
                  // код не найден в бд - заменен на 000, а потом его
                  // заменяют на 999.
                  // поэтому, если код не найден в бд, и заменен на 000,
                  // сохраняем поле KBK_RCP_2869=1. в результате
                  // дальше анализируется это значение и замена на 999
                  // не выполняется.
                  aXmlZRST.SetAttribute( 'KBK_RCP_2869', '1');

                  xKBK_KES := FormatKbk( 'KES', '0', aBudgetId);
                  // обновляем поле ZRST.KBK_RCP с нулевым кодом КОСГУ
                  aXmlZRST.SetAttribute(
                            'KBK_RCP',
                            Copy( xKBK_RCP, 1, 20 - LENGTH( xKBK_KES)) + xKBK_KES);
                end;
            end;
          end;
          *)
        end;
      end;//for//
      except
        ExceptionProc( 'CheckKBK_All_ZRST');
    end;

end;
{------------------------------------------------------------------------------}
{~CheckKBK_All_ZSCH2
  проверка кбк во всех строках раздела ZS (aXmlZS).
  aAUBU
    =true - для ау/бу
            значение параметра aWithoutPurposefullgrant актуально!
    =false - для не ау/бу.
             при этом значение параметра aWithoutPurposefullgrant не актуально.

  результат:
    =true - все в норме.
    =false - проблема хотя бы в одной строке. эд нельзя создавать.}
function CheckKBK_All_ZSCH2( aXmlZS: Variant; aBudgetId: string): boolean;
//                            aAUBU: boolean{;
//                            aWithoutPurposefullgrant: boolean = FALSE}): boolean;
var
  i: integer;
  xXmlLine: Variant;
  xResultCheckKBK: boolean;
begin

    try
      Result := TRUE;
      WriteLog( 'Проверка КБК в разделах ZSCH2...');
      for i := 0 to aXmlZS.ChildNodes.Length - 1 do begin
        xXmlLine := aXmlZS.ChildNodes.Item[i];
        if xXmlLine.NodeName = 'ZSCH2' then begin
          Default_F_Line( xXmlLine);
          xResultCheckKBK := DoCheckKBK(
                                  xXmlLine,
                                  aBudgetId,
                                  // exchange #2600
                                  // проверка кода цели при проверке КБК.
                                  (GetNodeAttributeEx( xXmlLine, 'KOD_IST') = '6'),
                                  FALSE,   // без косгу
                                  param_ShemaLoadDopKbk);
          {
          if aAUBU
            then xResultCheckKBK :=
                            DoCheckKBK(
                                  xXmlLine,
                                  aBudgetId,
                                  // exchange #2600
                                  // проверка кода цели при проверке КБК.
                                  (GetNodeAttributeEx( xXmlZRST, 'KOD_IST') = '6'),
                                  FALSE,   // без косгу
                                  param_ShemaLoadDopKbk)
            else xResultCheckKBK := DoNotCheckKBK_( xXmlLine);
           }
          if NOT xResultCheckKBK then begin
            DoCheckKBK_DetailErrorLine( i, aXmlZS, xXmlLine);
            Result := FALSE;
          end;
        end;
      end;//for//
      except
        ExceptionProc( 'CheckKBK_All_ZSCH2');
    end;

end;
{------------------------------------------------------------------------------}
{~CheckKBK_All_ZNKBK
  проверка кбк во всех строках раздела ZN (aXmlZN).
  aAUBU
    =true - для ау/бу
            значение параметра aWithoutPurposefullgrant актуально!
    =false - для не ау/бу.
             при этом значение параметра aWithoutPurposefullgrant не актуально.

  результат:
    =true - все в норме.
    =false - проблема хотя бы в одной строке. эд нельзя создавать.}
function CheckKBK_All_ZNKBK( aXmlZN: Variant; aBudgetId: string): boolean;
//                            aAUBU: boolean{;
  //                          aWithoutPurposefullgrant: boolean = FALSE}): boolean;
var
  i: integer;
  xXmlLine: Variant;
  xResultCheckKBK: boolean;
begin

    try
      Result := TRUE;
      WriteLog( 'Проверка КБК в разделах ZNKBK...');
      for i := 0 to aXmlZN.ChildNodes.Length - 1 do begin
        xXmlLine := aXmlZN.ChildNodes.Item[i];
        if xXmlLine.NodeName = 'ZNKBK' then begin
          Default_F_Line( xXmlLine);
          xResultCheckKBK := DoCheckKBK(
                                  xXmlLine,
                                  aBudgetId,
                                  // exchange #2600
                                  // проверка кода цели при проверке КБК.
                                  (GetNodeAttributeEx( xXmlLine, 'NAME_V_SR') = '6'),
                                  FALSE,   // без косгу
                                  param_ShemaLoadDopKbk);
                                                (*
          if aAUBU
            then xResultCheckKBK := DoNotCheckKBK_( xXmlLine);
                                    {DoCheckKBK( xXmlLine,
                                                aBudgetId,
                                                TRUE,
                                                TRUE,
                                                param_ShemaLoadDopKbk)}
            else xResultCheckKBK := DoCheckKBK( xXmlLine,
                                                aBudgetId,
                                                FALSE,
                                                FALSE,
                                                param_ShemaLoadDopKbk);
                                                  *)
          if NOT xResultCheckKBK then begin
            DoCheckKBK_DetailErrorLine( i, aXmlZN, xXmlLine);
            Result := FALSE;
          end;
        end;
      end;//for//
      except
        ExceptionProc( 'CheckKBK_All_ZNKBK');
    end;

end;
{------------------------------------------------------------------------------}
{~CheckKBK_All_ZVDOC
  проверка кбк во всех строках раздела ZV (aXmlZV).
  по ZVDOC доп коды не обрабатываются.

  aAUBU
    =true - для ау/бу
            значение параметра aWithoutPurposefullgrant актуально!
    =false - для не ау/бу.
             при этом значение параметра aWithoutPurposefullgrant не актуально.

  результат:
    =true - все в норме.
    =false - проблема хотя бы в одной строке. эд нельзя создавать.}
function CheckKBK_All_ZVDOC( aXmlZV: Variant; aBudgetId: string): boolean;
//                            aAUBU: boolean{;
  //                          aWithoutPurposefullgrant: boolean = FALSE}): boolean;
var
  i: integer;
  xXmlLine: Variant;
  xResultCheckKBK: boolean;
begin

    try
      Result := TRUE;
      WriteLog( 'Проверка КБК в разделах ZVDOC...');
      for i := 0 to aXmlZV.ChildNodes.Length - 1 do begin
        xXmlLine := aXmlZV.ChildNodes.Item[i];
        if xXmlLine.NodeName = 'ZVDOC' then begin
          Default_F_Line( xXmlLine);

          xResultCheckKBK := DoCheckKBK(
                                  xXmlLine,
                                  aBudgetId,
                                  // exchange #2600
                                  // проверка кода цели при проверке КБК.
                                  (GetNodeAttributeEx( xXmlLine, 'VID_S') = '6'),
                                  FALSE,   // без косгу
                                  param_ShemaLoadDopKbk);
          (*
          if aAUBU
            then xResultCheckKBK := DoNotCheckKBK_( xXmlLine);
                                    {DoCheckKBK( xXmlLine,
                                                aBudgetId,
                                                TRUE,
                                                TRUE,
                                                '')}
            else xResultCheckKBK := DoCheckKBK( xXmlLine,
                                                aBudgetId,
                                                FALSE,
                                                FALSE,
                                                '');//param_ShemaLoadDopKbk);
            *)
          if NOT xResultCheckKBK then begin
            DoCheckKBK_DetailErrorLine( i, aXmlZV, xXmlLine);
            Result := FALSE;
          end;
        end;
      end;//for//
      except
        ExceptionProc( 'CheckKBK_All_ZVDOC');
    end;

end;
{------------------------------------------------------------------------------}
{~CheckKBK_All_UFPP_UFPPN
  проверка кбк во всех строках раздела ZV (aXmlZV).
  по ZVDOC доп коды не обрабатываются.

  aAUBU
    =true - для ау/бу
            значение параметра aWithoutPurposefullgrant актуально!
    =false - для не ау/бу.
             при этом значение параметра aWithoutPurposefullgrant не актуально.

  результат:
    =true - все в норме.
    =false - проблема хотя бы в одной строке. эд нельзя создавать.}
function CheckKBK_All_UFPP_UFPPN( aXmlUF: Variant;
                                  aBudgetId: string{;
                                  aAUBU: boolean}): boolean;
var
  i: integer;
  xXmlLine: Variant;
  xResultCheckKBK: boolean;
  xUFPPx_AddClass: string;
begin

    try
      Result := TRUE;
      WriteLog( 'Проверка КБК в разделах UFPP/UFPPN...');
      for i := 0 to aXmlUF.ChildNodes.Length - 1 do begin
        xXmlLine := aXmlUF.ChildNodes.Item[i];
        case xXmlLine.NodeName of
          // exchange #2863 - для UFPP/UFPP_N
          // при проверке этих разделов код цели нужно проверить
          // на "-" и заменить его на пусто на момент проверки КБК.
          'UFPP',
          'UFPP_N': begin
                xUFPPx_AddClass := GetNodeAttributeEx( xXmlLine, 'ADD_KLASS');

                if (xUFPPx_AddClass = '-')
                  then xXmlLine.SetAttribute( 'ADD_KLASS', '');

                xResultCheckKBK := DoCheckKBK( xXmlLine,
                                                aBudgetId,
                                                FALSE,  // проверяем ЦК
                                                FALSE,  // без косгу
                                                '');

                // восстанавливаем обратно значение поля кода цели
                xXmlLine.SetAttribute( 'ADD_KLASS', xUFPPx_AddClass);

                if NOT xResultCheckKBK then begin
                  DoCheckKBK_DetailErrorLine( i, aXmlUF, xXmlLine);
                  Result := FALSE;
                end;
              end;
        end;//case//
      end;//for//
      except
        ExceptionProc( 'CheckKBK_All_UFPP_UFPPN');
    end;

end;
{------------------------------------------------------------------------------}
{~CheckKBK_All_BDPDST
  проверка кбк во всех строках раздела BDPD (aXmlBDPD).

  результат:
    =true - все в норме.
    =false - проблема хотя бы в одной строке. эд нельзя создавать.}
function CheckKBK_All_BDPDST( aXmlBDPD: Variant;
                              aBudgetId: string;
                              aWithoutPurposefullgrant: boolean): boolean;
var
  i: integer;
  xXmlLine: Variant;
  xResultCheckKBK: boolean;
begin

    try
      Result := TRUE;
      WriteLog( 'Проверка КБК в разделах BDPDST...');
      for i := 0 to aXmlBDPD.ChildNodes.Length - 1 do begin
        xXmlLine := aXmlBDPD.ChildNodes.Item[i];
        if xXmlLine.NodeName = 'BDPDST' then begin
          Default_F_Line( xXmlLine);

          xResultCheckKBK := DoCheckKBK(  xXmlLine,
                                          aBudgetId,
                                          aWithoutPurposefullgrant, // пров.КЦ
                                          FALSE,   // без косгу
                                          param_ShemaLoadDopKbk);
          if NOT xResultCheckKBK then begin
            DoCheckKBK_DetailErrorLine( i, aXmlBDPD, xXmlLine);
            Result := FALSE;
          end;
        end;
      end;//for//
      except
        ExceptionProc( 'CheckKBK_All_BDPDST');
    end;

end;
{------------------------------------------------------------------------------}
(*
{~IsExistsKBK_into_BDPDST_IK
  exchange #3101
  проверка полей кбк и типа кбк в разделе BDPDST.
  результат:
    =true - в строке заполнены поля KBK или TYPE_KBK.
    =false - пустые оба поля.}
function IsExistsKBK_into_BDPDST_IK( aXmlBDPDST: Variant): boolean;
begin

    try
      if (StrIsEmpty( GetNodeAttributeEx( aXmlBDPDST, 'KBK'))
          AND StrIsEmpty( GetNodeAttributeEx( aXmlBDPDST, 'TYPE_KBK')))
        then Result := FALSE
        else Result := TRUE;
      except
        ExceptionProc( 'IsExistsKBK_into_BDPDST_IK');
    end;

end;
{------------------------------------------------------------------------------}
{~CalcAmount_by_BDPDST_IK
  exchange #3101
  суммирует у строк BDPDST раздела aXmlBDPD поля SUM и сохраняет результат
  в поле AMOUND ЭД aXmlED.
  строки, у которых поля BDPDST.KBK и TYPE_KBK пустые в подсчете
  сумм не учитываются.
  если есть единственная строка BDPDST то сумма берется оттуда независимо
  от заполнения кбк.
  возвращает:
    >0 - если есть строки с заполненным кбк
    =0 - есть одна стрка без кбк: это для безстрокового эд.
    =-1 - если все строки пустые}
function CalcAmount_by_BDPDST_IK( aXmlED, aXmlBDPD: Variant): integer;
var
  xAmount, xCurr: Currency;
  i: integer;
//  xNode: Variant;
  xCountFillLines: integer;
begin

    try
      Result := -1;
      if (aXmlBDPD.childNodes.Length <= 0) then EXIT;

      //инициализим сумму шапки
      xAmount := 0.0;
      for i := 0 to aXmlBDPD.childNodes.Length - 1 do
        if CurrAttributeIsNotZero_( aXmlBDPD.childNodes.Item[ i], 'SUM', xCurr)
          then xAmount := xAmount + xCurr;
      SetCurrAttribute_( aXmlED, 'AMOUNT', xAmount);

      // проверка заполнение КБК в строках
      xCountFillLines := 0;
      if (aXmlBDPD.childNodes.Length = 1) then begin
        if IsExistsKBK_into_BDPDST_IK( aXmlBDPD.childNodes.Item[ 0])
          then INC( xCountFillLines)
          else aXmlED.SetAttribute('NOROW', 'True');
      end else begin
        for i := 0 to aXmlBDPD.childNodes.Length - 1 do
          if IsExistsKBK_into_BDPDST_IK( aXmlBDPD.childNodes.Item[ i])
            then INC( xCountFillLines);
        // если есть несколько разделов BDPDST и все они пустые,
        // тогда результат функции должен быть отрицательным,
        // что говорит о том, эд с такими строками создать нельзя.
        if (xCountFillLines <= 0)
          then xCountFillLines := -1;
      end;
      Result := xCountFillLines;
      except
        ExceptionProc( 'CalcAmount_by_BDPDST_IK');
    end;

end;
*)
{------------------------------------------------------------------------------}
begin
end.
