{~DoFill2616_FK_BUDGET_CODE_
  exchange #2616 - исходная постановка
  exchange #3062 - оптимизация кода
  здесь реализуется только заполнение полей без всяких проверок.}
procedure DoFill2616_FK_BUDGET_CODE_( aKBK_RCP, aTYPE_KBK_RCP: string;
                                      aXmlED: Variant);
begin

    try
      aXmlED.SetAttribute( 'FK_BUDGET_CODE', aKBK_RCP);
      case aTYPE_KBK_RCP of
        '20'      : aXmlED.SetAttribute( 'FK_ANAL_KIND', '1');
        '10'      : aXmlED.SetAttribute( 'FK_ANAL_KIND', '2');
        '31','32' : aXmlED.SetAttribute( 'FK_ANAL_KIND', '3');
        // классификация по КОСГУ
        // если тип классификации косгу = «доходы» или «нет» =
        // «Вид классификации для классификации получателя для ФК» = «доходы»
        '0','1'   : aXmlED.SetAttribute( 'FK_ANAL_KIND', '1');
        '2'       : aXmlED.SetAttribute( 'FK_ANAL_KIND', '2');
        '3'       : aXmlED.SetAttribute( 'FK_ANAL_KIND', '3');
      end;//case//
      except
        ExceptionProc( 'DoFill2616_FK_BUDGET_CODE_');
    end;

end;
{------------------------------------------------------------------------------}
{~DoFill2616_FK_BUDGET_CODE_Doc11_ZR
  exchange #2616 - исходная постановка
  exchange #3062 - отмена косгу

  вызывается при создании эд 11 из IK.ZR }
procedure DoFill2616_FK_BUDGET_CODE_Doc11_ZR( aXmlZR, aXmlED11: Variant);
var
  xNode: Variant;
begin

    try
      xNode := aXmlZR.selectSingleNode( 'ZRST');
      DoFill2616_FK_BUDGET_CODE_( GetNodeAttributeEx( xNode, 'KBK_RCP'),
                                  GetNodeAttributeEx( xNode, 'TYPE_KBK_RCP'),
                                  aXmlED11);
      except
        ExceptionProc( 'DoFill2616_FK_BUDGET_CODE_Doc11_ZR');
    end;

end;
{------------------------------------------------------------------------------}
{~DoFill2616_FK_BUDGET_CODE

  загружать из поля первой строки ZRST. KBK_RCP значение в
  «Классификация получателя для ФК».
  Вид классификации определять по полю файла TYPE_KBK_RCP:
•	10 - «расходы»;
•	20 - «доходы»;
•	31 - «источники»;
•	32 - «источники».

  Последние три знака KBK_RCP – КОСГУ – находить в справочнике.
  Если не найдено, поля «Классификация получателя для ФК» и «Вид классификации
  получателя для ФК» не заполнять.


    fk_anal_kind - вид классификации  - 1-значное  число
      1 - доходы
      2 - расходы
      3 - источники
  fk_budget_code - 20 символов классификации

  exchange #2703 - ТФФ 12.2.
  ТФФ 11 и 11.2 не используются больше. }
procedure DoFill2616_FK_BUDGET_CODE( aBudgetID: string;
                                      aKBK_RCP, aTYPE_KBK_RCP: string;
                                      aDataXml: Variant);
var
  xKES: string;
begin

    try
      // exchange #2703 - исключается проверка ТФФ 12.
      //if IsVersionSupport( cnVersionTFF_12) then
        if (LENGTH( aKBK_RCP) > 2) then begin
          //пробуем найти КОСГУ
          // exchange #3062 - унификация кода
          xKES := DoEncodeKBK_KES( aKBK_RCP, TRUE);
          //COPY( aKBK_RCP, LENGTH( aKBK_RCP) - 2, 3);
          if KbkExists( aBudgetID, xKES, 'Kes')
            // exchange #3062 - оптимизация кода
            then DoFill2616_FK_BUDGET_CODE_( aKBK_RCP,
                                             aTYPE_KBK_RCP,
                                             aDataXml);
        end;
      except
        ExceptionLog( 'Сбой Un_ImpIK_2616_ExpZR.DoFill2616_FK_BUDGET_CODE');
    end;

end;
{------------------------------------------------------------------------------}
{~DoFill2616_FK_BUDGET_CODE_ZV
  23.9.1.	По полю ZVDOCPOL.KBK_RCP заполнять поле
          «Классификация получателя для ФК» (добавляется в bftcntrl:
          <a 1291.13754>АЦК-Ф, #13754</a>) в создаваемом по IK 118, 195
          классу по блоку ZR:
  23.9.1.1.	последние три знака KBK_RCP – КОСГУ – находить в справочнике.
        Если не найдено, поля «Классификация получателя для ФК» и
        «Вид классификации получателя для ФК» не заполнять.
        Если найдено, по типу классификации косгу определять
        «Вид классификации для классификации получателя для ФК»

    fk_anal_kind - вид классификации  - 1-значное  число
      1 - доходы
      2 - расходы
      3 - источники
  fk_budget_code - 20 символов классификации

  exchange #2703 - ТФФ 12.2.
  ТФФ 11 и 11.2 не используются больше. }
procedure DoFill2616_FK_BUDGET_CODE_ZV( aBudgetID: string;
                                        aKBK_RCP: string;
                                        aDataXml: Variant);
var
  xKES: string;
begin

    try
      // exchange #2703 - исключается проверка ТФФ 12.
//      if IsVersionSupport( cnVersionTFF_12) then
        if (LENGTH( aKBK_RCP) > 2) then begin
          //пробуем найти КОСГУ
          // exchange #3062 - унификация кода
          xKES := DoEncodeKBK_KES( aKBK_RCP, TRUE);
//          xKES := COPY( aKBK_RCP, LENGTH( aKBK_RCP) - 2, 3);
          if KbkExists( aBudgetID, xKES, 'Kes')
            // exchange #3062 - оптимизация кода
            then DoFill2616_FK_BUDGET_CODE_(
                          aKBK_RCP,
                          // тип классификации определяется по типу КОСГУ
                          QueryField(  ' select ANAL_KIND from kes'
                                      +' where Budget_Id = ? and Code = ?',
                                       [ aBudgetID,
                                         xKES],
                                       'ANAL_KIND'),
                          aDataXml);
                          {
            aDataXml.SetAttribute( 'FK_BUDGET_CODE', aKBK_RCP);
            // тип классификации определяется по типу КОСГУ
            case QueryField( ' select ANAL_KIND from kes'
                            +' where Budget_Id = ? and Code = ?',
                             [ aBudgetID,
                               xKES],
                             'ANAL_KIND') of
              // если тип классификации косгу = «доходы» или «нет» -
              // «Вид классификации для классификации получателя для ФК» = «доходы»
              '0','1': aDataXml.SetAttribute( 'FK_ANAL_KIND', '1');
              '2'    : aDataXml.SetAttribute( 'FK_ANAL_KIND', '2');
              '3'    : aDataXml.SetAttribute( 'FK_ANAL_KIND', '3');
            end;//case//   }
        end;
      except
        ExceptionLog( 'Сбой Un_ImpIK_2616_ExpZR.DoFill2616_FK_BUDGET_CODE_ZV');
    end;

end;
{------------------------------------------------------------------------------}
begin
end.
