{
     специальные средства для работы с документом: "Справки по внебанковским
     операциям" класс 215.
     
     создано по Exchange #2335
}
{ОТЛАДКА! не удалять строку
uses
  'Un_OrgAccountGetter',
  'Un_VersionSupport',
  'QueryWork',
  'QueryTools',
  'Un_ToolsXml',
  'Un_ConstRef';
{ОТЛАДКА!не удалять эту строку}

var
  // создавать документ "Справка по внебаковским операциям" (класс 215)
  param_CreateDocuments215: boolean;
  // Номер л/с клиента, к выписке из которого прилагается Справка ф. 0504833
  v215_LS: string;
  // тип файла для 215 документа (SP/SF/IK)
  v215_FILE: string;
  // код типа документа из блокеа «ФО/ Гл. администратор»
  vKOD_DOC: string;
  // описание первичного документа
  vPAYDOC_DOC_NUMBER: string;
  vPAYDOC_DOC_DATE: string;
  vPAYDOC_NAME: string;
  // сохраняем тип строк для 215 класса
  v215_TYPE: string;


{~SearchLS
  поиск параметра л/с (для документов 215) в параметре SP.LS, IK.LS_UBP, SF.LS.
  aData - корневой узел XML исходного документа (XML.documentElement),
  описывающего входной документ по схеме.
  результат:
    =true - параметр л/с определен, или не требуется.
    =false - параметр л/с не найден или не указан. }
function SearchFaceAcc(aHeadNode: variant): boolean;
var
  Node: Variant;
  i: Integer;
begin

    try
      if NOT param_CreateDocuments215 then begin

        Result := TRUE;
        EXIT;
      end;

      Result := FALSE;
      WriteLog('Поиск л/с (при создании ЭД "справка по внебанковским операциям")...', TRUE);
      v215_LS := '';
      case aHeadNode.nodeName of
        'SP': begin
                v215_LS   := aHeadNode.getAttribute('LS');
                v215_FILE := aHeadNode.nodeName;
                vKOD_DOC := aHeadNode.getAttribute('KOD_DOC');
              end;
        'IK': begin
                v215_LS   := aHeadNode.getAttribute('LS_UBP');
                v215_FILE := aHeadNode.nodeName;
                vKOD_DOC := '';
              end;
        'SF': begin
                v215_LS   := aHeadNode.getAttribute('LS');
                v215_FILE := aHeadNode.nodeName;
                vKOD_DOC := aHeadNode.getAttribute('KOD_DOC');
              end;
      end;//case//
      Result := (v215_LS <> '');

      except
        ExceptionLog( 'Сбой Un_Class215.SearchFaceAcc');
    end;

end;


{~PreparePayDocParams215
  для 215го документа выделяются параметры платежного документа (первичного
  документа) из блока «ФО/ Гл. администратор» которые нужно добавлять в строки.
  для прочих классов документов эти параметры не используются.
  aType - описывает тип строк в XML исходных данных: SFST/SPRR/SPD. }
procedure PreparePayDocParams215( aDocXml: Variant; aType: string = '');
begin

    try
      if param_CreateDocuments215 then begin
        // сохраняем тип строк
        v215_TYPE := aType;
        // платежный документ (код и дата). ID не заполняется
        // эти данные нужно отражать в строках
        case aType of
          'SFST': vPAYDOC_DOC_NUMBER := aDocXml.getAttribute('NOM_DOC');
          else    vPAYDOC_DOC_NUMBER := aDocXml.getAttribute('NUM_DOC');
        end;//case//
        // формат даты в схеме: ll/vv/uuuu, а для АЦК-Ф-Р требуется гггг-мм-дд!
        vPAYDOC_DOC_DATE   := DateTimeToXml(
                                StrToDate( aDocXml.getAttribute('DATE_DOC')));
        vPAYDOC_NAME       := aDocXml.getAttribute('NAME_DOC');
        
      end else begin
        vPAYDOC_DOC_NUMBER := '';
        vPAYDOC_DOC_DATE   := '';
        vPAYDOC_NAME       := '';
        v215_TYPE          := '';
      end;
      except
        ExceptionLog( 'Сбой Un_Class215.PreparePayDocParams215');
    end;

end;


{~OperTypeDefaultForClass
 определяем тип операции по умолчанию для класса aClassID.
 см.справочник: справочники/документооборот/типы операций по умолчанию.}
function OperTypeDefaultForClass( aClassID: integer): integer;
var
  Xml: Variant;
  sql: String;
  xSet: Variant;
  xNode: Variant;
begin
  try
    
    
    Result := 0;   // по умолчанию "НЕ УКАЗАНО"
    sql := ' Select O.* From DEFOPERTYPE O' +
           ' Where O.DOCUMENTCLASS_ID = ?';
    Xml := QueryXml(sql, [aClassID]);
    xSet := Xml.documentElement.childNodes;

    if (xSet.Length > 0)
      then begin
        xNode := xSet.childNodes.Item[0];
        Result := STRTOINT( xNode.getAttribute('OPERTYPE_ID'));
        
      end;
    
    except
      ExceptionLog( 'Сбой: Un_Class215.OperTypeDefaultForClass.'
                    +#13#10+'  Параметр: aClassID = ' + INTTOSTR( aClassID));
  end;
end;


{~IsLoaded215
  ПРОВЕРКА ЗАГРУЗКИ документа 215го класса по GUID в указанном бюджете.
  результат:
    =true - есть такой документ в бд;
    =false - нет такого документа в бд.

  версию ацк-ф больше не проверяем, поскольку сейчас версия скриптов
  связана с версией ацк-ф напрямую (конкретная сборка под ацк-ф)

  добавлен необязательный параметр aCheckOn:
      если он =false (по умолчанию) то проверка дублей выполняется, если
    в конфиге указано создавать доп эд 215й, иначе проверка дублей
    не выполняется и возвращается вседа =false (проверка выполнена успешно).
      если =true - проверка дублей выполняется всегда.}
function IsLoaded215( aBudgetID, aGUID: string; aCheckOn: boolean = FALSE): boolean;
begin
  try
      if NOT aCheckOn then
        if NOT param_CreateDocuments215 then begin
          Result := FALSE;
          EXIT;
        end;
      Result := (QueryField( 'Select count( * ) N From nonbankoper'
                            +' Where Budget_Id = ? and DocumentClass_Id = 215 '
                            +' and Guid_Fk = ? and DispStatus_Id > -1'
                            // поправлен запрос, чтобы всегда искались шапки эд,
                            // без списка строк
                            +' and (TITLE_ID = ID or TITLE_ID is null)',
                             [ aBudgetId,
                               aGuid],
                             'N',
                             FALSE) <> '0');        // кеш не используем !
    except
      ExceptionLog( 'Сбой: Un_Class215.IsLoaded215.');
  end;
end;

{~SetClassDocument215
 сохраняем в документе aDocXml либо указанный класс документа aClassDoc,
 если не формируется 215-й документ, либо класс 215-го документа.
 для 215-го документа вставляется параметр ANAL_KIND - тип документа:
 расход/доход/источники.
 exchange #2593
   aTopicName - параметр, обозначающий, из какого файла выполняется загрузка:
                IK, SP, SF.}
procedure SetClassDocument215( aDocXml: Variant;
                               aClassDoc: integer;
                               aTopicName: string);
begin
  try
      if NOT param_CreateDocuments215
        then aDocXml.setAttribute('class', aClassDoc)
        else begin
          aDocXml.setAttribute('class', 215);
          // exchange #2593
          // признак "ОтФК"
          //aDocXml.setAttribute( 'FK_FLAG', 1);
          // по согласованию с ОР АЦК-Ф, принято:
          // 0 = не указано
          // 1 = SP - справка ф.504833 по внебанковским опреациям
          // 2 = SF - справка органа Федерального казначейства
          case aTopicName of
            'IK': aDocXml.setAttribute( 'FK_FLAG', '1');
            'SP': aDocXml.setAttribute( 'FK_FLAG', '1');
            'SF': aDocXml.setAttribute( 'FK_FLAG', '2');
          end;//case//
          // тип операции по умолчанию для 215 класса
          aDocXml.setAttribute( 'OPERTYPE_ID',
                                OperTypeDefaultForClass( 215));
          // создаем дополнительные атрибуты, которые уже описаны под другими именами
          aDocXml.setAttribute( 'FOREIGN_KEY',
                                VarToStr( aDocXml.getAttribute('GUID_FK')));
        end;
    except
      ExceptionLog( 'Сбой Un_Class215.SetClassDocument215');
  end;
end;


{~UpdateFieldsForDocClass215
 обноляются поля в строке для документов класса 215.
  aDocLine - документ результата XML
  aHeadSource - исходный документ XML для определения заголовочных данных (SP/SF/IK)
  aDocSource - исходный документ XML (исходный файл SP/SF/IK созданный по схеме)
  aLineClass - тип справок, по которым создаются строки
  aLine - тип строки:
  результат:
    =true - функция выполнена успешно;
    =false - функция не выполнена.}
function UpdateFieldsForDocClass215(
                aDocLine, aHeadSource, aDocSource: variant;
                aLineClass: integer;
                aLine: string = ''): boolean;
begin
  Result := TRUE;

  // ищем счет
  if NOT SearchFaceAcc(aHeadSource)
    then EXIT;

  if param_CreateDocuments215 then
    try
      // для 215-го документа код операции дочерних документов отличается на 1
      aDocLine.setAttribute(
              'ANAL_KIND',
              INTTOSTR( STRTOINT( aDocLine.getAttribute('ANAL_KIND')) + 1));

      // поля первичного документа
      aDocLine.setAttribute( 'PAYDOC_DOC_NUMBER', vPAYDOC_DOC_NUMBER);
      aDocLine.setAttribute( 'PAYDOC_DOC_DATE', vPAYDOC_DOC_DATE);
      aDocLine.setAttribute( 'PAYDOC_NAME', vPAYDOC_NAME);
      // основание строки расшифровки заполнять из поля SPRR.NAME_OPER
{      Log( 'Un_Class215.UpdateFieldsForDocClass215'
            +#13#10'  v215_TYPE=' + v215_TYPE
            +#13#10 + aDocSource.xml);
      case v215_TYPE of
        'SFST': aDocLine.setAttribute( 'DESCRIPTION_LINE',
                                       aDocSource.getAttribute('OPER'));
        else    aDocLine.setAttribute( 'DESCRIPTION_LINE',
                                       aDocSource.getAttribute('NAME_OPER'));
      end;//case//}

{WriteInfo( FORMAT( '%s - не создан.',
                                [ DefineAZKDocumentNumberAndData( '', aDocSource.parentNode, 'ЭД')]));}
      // для документа 215 заполняем л/с в зависимости от типа файла и типа справок
      case v215_FILE of
        'SP': Result := DoGetLS_ForDocClass215_SP( aDocLine, aDocSource, aLineClass);
        'IK': Result := DoGetLS_ForDocClass215_IK( aDocLine, aDocSource, aLineClass);
        'SF': Result := DoGetLS_ForDocClass215_SF( aDocLine, aDocSource, aLineClass);
      end;//case//
      // Exchange 2370
      // добавление записи в журнале что документ не создан в случае
      // проблем при импорте.
      if NOT Result then begin
        WriteInfo( 'В документе не найдены необходимые данные.');
        WriteInfo(
                FORMAT( '%s - не создан.',
                        [ DefineAZKDocumentNumberAndData(
                                  'Справка по внебанковским операциям',
                                  aDocSource.parentNode,
                                  'ЭД')]));
      end;
      except
        ExceptionLog( 'Сбой: Un_Class215.UpdateFieldsForDocClass215.');
    end;
end;

function DoGetLineClassForDocClass215( aLineClass: integer): string;
begin
  case aLineClass of
    39: Result := 'источникам';
    40: Result := 'расходам';
    35: Result := 'доходам';
  end;//case//
end;

{~DoGetLS_ForDocClass215_SP
 для SP
  строки по источникам (aLineClass=39):
    Если создается на основании файла SP и SP. KOD_DOC  =  VA, IP, IV,
  Счет организации, определенной в блоке «ФО/ Гл. администратор» должен
  определяться по алгоритму: тип счета 7, без признака «Распорядительный».
  Ищем счет с галкой «Бюджетный». По счету заполняем поля информацией об УФК
  и Банке.
    Если SP. KOD_DOC  = VB, Счет организации, определенной в блоке «ФО/ Гл.
  администратор» должен определяться по алгоритму: тип счета 6, без признака
  «Распорядительный». Ищем счет с галкой «Бюджетный». По счету заполняем поля
  информацией об УФК и Банке.
    По другим значениям  SP. KOD_DOC  справку по файлу SP не создаем.
  Если создается на основании файла IK, Счет организации, определенной в
  блоке «ФО/ Гл. администратор» должен определяться по алгоритму: тип счета 7,
  без признака «Распорядительный». Ищем счет с галкой «Бюджетный», Номер счета
  должен совпадать с IK.LS_UBP. По счету заполняем поля информацией об УФК и
  Банке.

  Строки по расходам (aLineClass=40):
    Если создается на основании файла SP и SP.KOD_DOC  = VP или IV,
  Счет организации-бюджетополучателя должен определяться по алгоритму:
  тип счета 5, без признака «Распорядительный». Ищем счет с галкой «Бюджетный»
  без актуального разрешения.
    Если SP. KOD_DOC  = VB, Счет организации-бюджетополучателя должен
  определяться по алгоритму: тип счета 1, без признака «Распорядительный».
  Ищем счет с галкой «Бюджетный» без актуального разрешения.
  По другим значениям  SP. KOD_DOC  справку по файлу SP не создаем.
    Если создается на основании файла IK, Счет организации-бюджетополучателя
  должен определяться по алгоритму: тип счета 5, без признака
  «Распорядительный». Ищем счет с галкой «Бюджетный» без актуального разрешения,
  Номер счета должен совпадать с IK.LS_UBP

  результат:
    =true - функция выполнена успешно;
    =false - функция не выполнена.}
function DoGetLS_ForDocClass215_SP(
                aDocLine, aDocSource: variant;
                aLineClass: integer): boolean;
begin
  try
    
    case aLineClass of
      // источники
      39: case vKOD_DOC of
            'VA', 'IP', 'IV':
                    if (GetOrgAccountGetter(
                            aDocLine,
                            'where=a.account_number=? and'
                           +' a.BUDGET_FLAG=1 and a.DISTRIBUTIVE_FLAG=0 and'
                           +' a.ORGACCTYPE_ID=7',
                            [ v215_LS]) <> 1)
                      then begin
                        
                        WriteLog( FORMAT( 'Л/с (VA) "%s" не найден.', [ v215_LS]), TRUE);
                        Result := FALSE;
                        EXIT;
                      end;
            'VB':
                    if (GetOrgAccountGetter(
                            aDocLine,
                            'where=a.account_number=? and'
                           +' a.BUDGET_FLAG=1 and a.DISTRIBUTIVE_FLAG=0 and '
                           +' a.ORGACCTYPE_ID=6',
                            [ v215_LS]) <>1)
                      then begin
                        
                        WriteLog( FORMAT( 'Л/с (VB) "%s" не найден.', [ v215_LS]), TRUE);
                        Result := FALSE;
                        EXIT;
                      end;
            else begin
              
              Result := FALSE;
              EXIT;
            end;
          end;//case//

      // расходы
      40: case vKOD_DOC of
            'VP', 'IV':
                    if (GetOrgAccountGetter(
                            aDocLine,
                            'where=a.account_number=? and'
                           +' a.BUDGET_FLAG=1 and a.DISTRIBUTIVE_FLAG=0 and '
                           +' a.ORGACCTYPE_ID=5',
                            [ v215_LS]) <> 1)
                      then begin
                        
                        WriteLog( FORMAT( 'Л/с (VP,IV) "%s" не найден.', [ v215_LS]), TRUE);
                        Result := FALSE;
                        EXIT;
                      end;
            'VB':
                    if (GetOrgAccountGetter(
                            aDocLine,
                            'where=a.account_number=? and'
                           +' a.BUDGET_FLAG=1 and a.DISTRIBUTIVE_FLAG=0 and '
                           +' a.ORGACCTYPE_ID=1',
                            [ v215_LS]) <>1)
                      then begin
                        
                        WriteLog( FORMAT( 'Л/с (VB) "%s" не найден.', [ v215_LS]), TRUE);
                        Result := FALSE;
                        EXIT;
                      end;
            else begin
              
              Result := FALSE;
              EXIT;
            end;
          end;//case//
          
      // доходы
      // по доходам организация и л/с не заполняются.
      // но требуется установить тип доходов в значение =1 (доходы)
      35: begin
{          if (GetOrgAccountGetterAccNumber( v215_LS, aDocLine) <> 1) then begin
            Result := FALSE;
            EXIT;
          end;
          }
            aDocLine.setAttribute( 'KDT_CODE', '1');
          end;
    end;//case//
    // основание - для документа класса 215 из SPRR
    aDocLine.setAttribute( 'DESCRIPTION_LINE',
                           aDocSource.getAttribute('NAME_OPER'));
    Result := TRUE;
    except
      ExceptionLog( 'Сбой: DoGetLS_ForDocClass215_SP.');
  end;
end;

{~DoGetLS_ForDocClass215_IK
 для IK:
  справки по расходам:
    Счет организации-бюджетополучателя должен определяться по алгоритму:
  тип счета 5, без признака "Распорядительный". Ищем счет с галкой "Бюджетный"
  без актуального разрешения, Номер счета должен совпадать с IK.LS_UBP.

  справки по источникам:
    Счет организации, определенной в блоке "ФО/ Гл. администратор" должен
  определяться по алгоритму: тип счета 7, без признака "Распорядительный".
  Ищем счет с галкой "Бюджетный", Номер счета должен совпадать с IK.LS_UBP.
  По счету заполняем поля информацией об УФК и Банке.

  результат:
    =true - функция выполнена успешно;
    =false - функция не выполнена.}
function DoGetLS_ForDocClass215_IK(
                aDocLine, aDocSource: variant;
                aLineClass: integer): boolean;
begin

    try
      case aLineClass of
        // источники
        // exchange #2853
        // проверяем связку счета с организаицей. если орг.не определена,
        // то счет тоже не проверяем.
        39: if (LENGTH( VarToStr( aDocLine.GetAttribute('ORG_ID'))) > 0) then
              if (GetOrgAccountGetter(
                          aDocLine,
                          'where=a.account_number=?'
                         +' and a.BUDGET_FLAG=1 and a.DISTRIBUTIVE_FLAG=0'
                         +' and a.ORGACCTYPE_ID=7'
                         +' and a.org_id=?',
                          [ v215_LS,
                            aDocLine.GetAttribute('ORG_ID')]) <> 1)
                then begin

                  WriteLog( FORMAT( 'Л/с "%s" не найден.', [ v215_LS]), TRUE);
                  Result := FALSE;
                  EXIT;
                end;

        // расходы
        // exchange #2853
        // здесь проверяем связку счета с организаицей. в расходной строке
        // организация должна определяться
        40: if (LENGTH( VarToStr( aDocLine.GetAttribute('RECIPIENT_ID'))) > 0) then
              if (GetOrgAccountGetter(
                      aDocLine,
                      'where=a.account_number=?'
                     +' and a.BUDGET_FLAG=1 and a.DISTRIBUTIVE_FLAG=0'
                     +' and a.ORGACCTYPE_ID=5'
                     +' and a.org_id=?',
                      [ v215_LS,
                        aDocLine.GetAttribute('RECIPIENT_ID')]) <> 1)
                then begin

                  WriteLog( FORMAT( 'Л/с "%s" не найден.', [ v215_LS]), TRUE);
                  Result := FALSE;
                  EXIT;
                end;

        // доходы
        // по доходам организация и л/с не заполняются.
        // но требуется установить тип доходов в значение =1 (доходы)
        35: begin
  {          if (GetOrgAccountGetterAccNumber( v215_LS, aDocLine) <> 1) then begin
              Result := FALSE;
              EXIT;
            end;
            }

              aDocLine.setAttribute( 'KDT_CODE', '1');
            end;
      end;//case//
      // основание - для документа класса 215 из SPRR
      aDocLine.setAttribute( 'DESCRIPTION_LINE',
                             aDocSource.getAttribute('NAME_OPER'));
      Result := TRUE;
      except
        ExceptionLog( 'Сбой Un_Class215.DoGetLS_ForDocClass215_IK');
    end;

end;


{~DoGetLS_ForDocClass215_SF
 для SF
  если строка формируется из SFST (для файла SF) то выполняем:
   1) тип дохода (из доходной КБК): поле TYPE_KBK
   2) УФК выбирается в зависимости от указания поля SFST.BS

  результат:
    =true - функция выполнена успешно;
    =false - функция не выполнена.}
function DoGetLS_ForDocClass215_SF(
                aDocLine, aDocSource: variant;
                aLineClass: integer): boolean;
begin
  try
    
    // для типа кбк =доходы, устанавливаем в поле "Тип дохода" =доходы.
    case aLineClass of
      // источники
      // описание л/с + нужно указать УФК организацию в зависимости
      // от поля р/с (SFST.BS). при этом ищем л/с с флагом бюджетный л/с
      // и не распорядительный л/с с типом л/с =7.
      39: if (GetOrgAccountGetter(
               aDocLine,
               'where=a.account_number=? and'
              +' a.BUDGET_FLAG=1 and a.DISTRIBUTIVE_FLAG=0 and a.ORGACCTYPE_ID=7'
              +#13#10'ls_bs=' + aDocSource.getAttribute('BS'),
               [ v215_LS]) <> 1)
            then begin
              
              WriteLog( FORMAT( 'Л/с "%s" не найден.', [ v215_LS]), TRUE);
              Result := FALSE;
              EXIT;
            end;

      // доходы
      // по доходам организация и л/с не заполняются.
      // но требуется установить тип доходов в значение =1 (доходы)
      35: begin
            aDocLine.setAttribute( 'KDT_CODE', '1');
          end;
    end;//case//
{    case aDocSource.getAttribute('TYPE_KBK') of
     '20': aDocLine.setAttribute('KDT_CODE', '1');
//         '31': aDocLine.setAttribute('KDT_CODE', '0');
    end;//case//}
    // основание - для документа класса 215 из SPRR
    aDocLine.setAttribute( 'DESCRIPTION_LINE',
                            aDocSource.getAttribute('OPER'));
    Result := TRUE;
    except
      ExceptionLog( 'Сбой: DoGetLS_ForDocClass215_SF.');
  end;
end;


{~SetFieldPassAMTForClass215
 установка поля "Передано" для документа класса 215. }
procedure SetFieldPassAMTForClass215( aDoc, aValue: Variant);
begin
  if param_CreateDocuments215
    then aDoc.setAttribute('PASS_AMT', aValue);
end;


{~ParseParameterCreateDocument
 разбор параметра xParam на предмет выбора значений:

  результат:
    =0: xParam=нет
    =1: xParam=справки по расходам, доходам, источникам (SP,IK)
               заявки, справки по расходам, доходам, источникам
    =2: xParam=
               заявки, справки по доходам, источникам
    =3: xParam=справки по доходам, источникам (SF)
               заявки, справки по внебанковским операциям
    =4: xParam=Справки по расходам, доходам, источникам, внебанковским операциям
              (SP,IK,SF)

  exchange #2686
   изменены значения в значениях настроек конфигов:
       заявки, справки по расходам, доходам, источникам
       заявки, справки по доходам, источникам
       заявки, справки по внебанковским операциям
   поэтому проверяем несколько возможных значений.
   это связано с тем, что настройки изменены только в конфигурации IK,
   а эта функция вызывается и для других скриптов.

   exchange #2792
     пункт "Справки по расходам, доходам, источникам, внебанковским операциям"
      перенесен из пп.2 в отдельный пп.4.
      это дает то, что при выборе этого значения должны создаваться
      ЭД "справки по внебанковским операциям (SP,IK,SF)" но не должны
      создаваться ЭД заявок (11,75,118 и др). т.е. реализация 4го варианта
      создания ЭД.}
function ParseParameterCreateDocument( xParam: string): integer;
begin

    try
      // проверяем по опции, какой документ нужно создавать по параметру
      // "Создавать Справки ф.0504833" в cfg.
      case LowerCase( xParam) of
        'заявки, справки по расходам, доходам, источникам': begin

              param_CreateDocuments215 := FALSE;
              Result := 1;
            end;

        'справки по доходам, источникам',
        'заявки, справки по доходам, источникам': begin

              param_CreateDocuments215 := FALSE;
              Result := 3;
            end;

        'заявки, справки по внебанковским операциям': begin

              param_CreateDocuments215 := TRUE;
              Result := 2;
            end;

        // exchange #2971
        // после доработки конфигурации ik этот параметр был удален, но он
        // актуален для конфига SP !
        'справки по внебанковским операциям',
        'cправки по внебанковским операциям',  //здесь первая буква - латинская
        // exchange #2792
        'справки по расходам, доходам, источникам, внебанковским операциям': begin

              param_CreateDocuments215 := TRUE;
              Result := 4;
            end;

        // exchange #2857
        'справки по расходам, доходам, источникам': begin

              // При выборе значения "Справки по доходам, расходам, источникам"
              // в параметр "Создавать дополнительные документы" конфигурации
              // загрузки Imp_FK_IK  ЭД класса 215 формировать не требуется.
              param_CreateDocuments215 := FALSE;
              Result := 5;
            end;

        else begin
              // Exchange #2355
              // если ничего - сообщение выдавать не нужно - тогда логируем
              // что не выбран тип справки и продолжаем работу.
              // сообщение убрано в лог отладки, поскольку пересекается с
              // сообщением, которое было до доработки, в IK. (в SP и SF не проверено)

              param_CreateDocuments215 := FALSE;
              Result := 0;
              EXIT;
            end;
      end;//case//

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

end;


{~InitializeUnClass215
  инициализация модуля Un_Class215}
procedure InitializeUnClass215;
begin
  param_CreateDocuments215 := FALSE;
  v215_LS                  := '';
  vKOD_DOC                 := '';
  vPAYDOC_DOC_NUMBER       := '';
  vPAYDOC_DOC_DATE         := '';
  vPAYDOC_NAME             := '';
  v215_TYPE                := '';
end;

begin
  InitializeUnClass215;
end.
