{~ExportOutDirExch2719
  exchange #2719

  Проверять в каталоге, указанном в параметре «Архивный каталог»
  (далее по тексту – Архивный каталог),
  наличие подкаталога (далее по тексту – День выгрузки)
  с названием соответствующим значению даты, указанной в текущем окне
  выгрузки, по формату «ддммгг».

  Проверять в текущем Дне выгрузки наличие подкаталога с названием,
  соответствующим маркеру текущего файла выгрузки.

  exchange #2766
  поправлено:
    каталог архива формируется так: YYYY/MM/DD/маркер/}
procedure ExportOutDirExch2719( aDateStr, aMarker: string);
VAR
  xDT: TDateTime;
begin

    try

      if (LENGTH( DirArh) <= 0) then EXIT;
      xDT := XmlToDateTime( aDateStr);
      DirArh := DirArh  + FormatDateTime( 'yyyy', xDT)
                        + '\' + FormatDateTime( 'mm', xDT)
                        + '\' + FormatDateTime( 'dd', xDT)
                        + '\' + aMarker
                        + '\';

      ForceDirectories(DirArh);
      if not DirectoryExists(DirArh)
        then raise('Ошибка при переопределении архивного каталога: ' + DirArh);
      except
        ExceptionLog( 'Сбой Un_Exch2719.ExportOutDirExch2719');
    end;

end;


{~CreateResultFile
   создает файл результата aFileName, который создан во временном каталоге
   aDirTmp, копируя его в каталог результата aDirOut.

   если указан каталог архива aDirArh, то так же копируется файл и в этот
   каталог. при этом в каталоге архива создается подкаталог на дату aDateStr
   и подкаталог с названием aPrefix.

   если указан aXml, то выполняется архивация выгружененного эд через
   функцию Move_To_Arhiv. если aXml = null, то архивация Xml не выполняется.

   aFileName - только имя файла и расширение. путь не должен указываться.
                предполагается, что первоначально файл aDirTmp+aFileName
                уже создан.
   aDateStr - строка даты выгрузки в формате: yyyy.mm.dd
              разделитель можут быть любым символом (точка или другой).
   aPrefix - префикс типа RA, ZR и т.д.}
function CreateResultFile( aFileName: string;
                            aDirTmp, aDirOut, aDirArh: string;
                            aDateStr: string;
                            aPrefix: string;
                            aXml: Variant): boolean;
var
  xDirArh: string;
  xFileNameTmp: string;
  xFileNameOut: string;
  xFileNameArh: string;
begin

    try
      Result := TRUE;
      xDirArh := DirArh;
      try
        // exchange #2719
        ExportOutDirExch2719( aDateStr, aPrefix);

        if NOT VarIsNull( aXml) then begin
          WriteLog('Перенос документов в архив', True);
          Move_To_Arhiv( aXml);
        end;

        xFileNameTmp := aDirTmp + aFileName;
        xFileNameOut := aDirOut + aFileName;
        xFileNameArh := aDirArh + aFileName;

        WriteLog('Перенос файла в исходящий каталог: ' + xFileNameOut, True);
        CopyFile( xFileNameTmp, xFileNameOut, False);

        if (LENGTH( Trim( aDirArh)) > 0) then begin
          WriteLog('Копирование файла в каталог архива, согласно настройке');
          CopyFile( xFileNameTmp, xFileNameArh, False);
          if not FileExists( xFileNameArh) then begin
            WriteLog( 'Не удалось скопировать файл в каталог архива:'
                       + xFileNameArh);
            ShowMessage( 'Не удалось скопировать файл в каталог архива:'
                          + xFileNameArh);
          end;
        end;

        if FileExists( xFileNameOut)
          then DeleteFile( xFileNameTmp)
          else begin
            MessageDlg(  'Ошибка копирования в исходящий каталог.'#13#10
                        +'Файл находится: ' + xFileNameTmp, mtError, mbOk, 0);
            Result := FALSE;
          end;

      except
        ExceptionLog( 'Сбой Un_Exch2719.CreateResultFile');
      end;
      finally
        DirArh := xDirArh;
    end;

end;


begin
end.
