var
  // exchange #2791
  // настройка "Позволять загружать 0 в КБК ИДП"
  vCfg_2791_LoadKBK0_PI_BUDGET_CODE: string;


procedure DoConfigParamValue_2791_LoadKBK0_PI_BUDGET_CODE( aValue: string);
begin

  if (LENGTH( TRIM( aValue)) > 0) then
  begin
    if ( aValue = 'Да')
      then vCfg_2791_LoadKBK0_PI_BUDGET_CODE := 'Y'
    else if ( aValue = 'Нет') then
      vCfg_2791_LoadKBK0_PI_BUDGET_CODE := 'N'
    else vCfg_2791_LoadKBK0_PI_BUDGET_CODE := 'V';
  end;
  

  
end;


procedure DoConfig_2791_LoadKBK0_PI_BUDGET_CODE( aCfg: TStringList);
begin

    try
      // добавлены несколько вариантов значений параметров в конфигах,
      // поэтому вместо boolean значение может быть и не определенным.
      vCfg_2791_LoadKBK0_PI_BUDGET_CODE := '';
      DoConfigParamValue_2791_LoadKBK0_PI_BUDGET_CODE(
                                 aCfg.Values[ 'Позволять загружать 0 в КБК ИДП']);
      DoConfigParamValue_2791_LoadKBK0_PI_BUDGET_CODE(
                                 aCfg.Values[ 'Позволять выгружать 0 в КБК ИДП']);

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

end;


{~DoCheck_2791_LoadKBK0_PI_BUDGET_CODE
  exchange #2791 - проверка КБК в ид.платежа.
  если параметр vCfg_2791_LoadKBK0_PI_BUDGET_CODE=FALSE(нет), то код
  остается как раньше. при этом, если КБК (aKBK) =0, то это считается ошибкой.
  в схемах, в параметрах ZR.ZR.KDOH, IK.ZR.KDOH, PP.PPT.KBK, добавлено,
  что допускается один символ 0. поэтому тут будем ругаться и писать
  в журнал info сообщение, что кбк =0.

  результат:
    =true - разрешается загр/выгр эд
    =false - запрещается загр/выгр эд}
function DoCheck_2791_LoadKBK0_PI_BUDGET_CODE( aKBK: string;
                                                aDocInfo: string = '';
                                                aDocClass: string = ''): boolean;
var
  xMsg, xMsg2: string;
begin

    try
      Result := TRUE;
      if (aKBK <> '0') or (vCfg_2791_LoadKBK0_PI_BUDGET_CODE = 'V') then EXIT;

      // описание ЭД
      xMsg := '';
      xMsg2:= 'Код КБК в идентификаторе платежа =0. Это не допускается по настройке в конфигурации.';
      if (LENGTH( TRIM( aDocInfo)) > 0) then
        if (LENGTH( TRIM( aDocClass)) > 0)
          then xMsg := FORMAT( 'ЭД %s %s',
                               [ GetDocumentNameByClass( aDocClass),
                                 TRIM( aDocInfo)])
          else xMsg := TRIM( aDocInfo);

      case vCfg_2791_LoadKBK0_PI_BUDGET_CODE of
        'N': begin
                // в журнале информации - с приостановкой операции
                if (LENGTH( xMsg) > 0) then WriteInfo( xMsg);
                WriteInfo( xMsg2);
                Result := FALSE;
              end;
        'Y': begin
                // в обычном журнале
                if (LENGTH( xMsg) > 0) then WriteLog( xMsg);
                WriteLog( xMsg2);
              end;
      end;//case//
      except
        ExceptionLog( 'Сбой DoCheck_2791_LoadKBK0_PI_BUDGET_CODE');
    end;

end;


begin
end.
