Показать сообщение отдельно
Старый 14.04.2004, 13:53   #1  
mit is offline
mit
Участник
Аватар для mit
 
386 / 36 (2) +++
Регистрация: 15.01.2003
Адрес: Moscow
Lightbulb Документооборот в Аксапте
У нас в документообороте участвует очень мнного файлов при хранении в одном каталоге возникают проблемы с администрированием.
привожу кусок кода, где каталоги организуются с учетом даты создания файлов
т.е. файл созданный 14.04.04 порадет в директорию ../2004/04/
//Classes\Docu\archivePath
// Параметр Date _date передается из метода
// \Data Dictionary\Tables\DocuValue\Methods\path
// дата соддания записи, на основании которой
// затем возвращается путь к файлу типа
// [что-то из настроек]\2002\07\
// Если такой путь отсутствует, он создается
// Если вызов с пустой датой, то дата берется сегодняшняя
PHP код:
static FilePath archivePath(Date  _date)
{
    
str         _year_month;
    
FilePath    filePath;
    ;

    if (! 
_date)
    {
        
_date =  today();
    }

    
_year  =  Date2Str(_date,123,0,0,0,0,4);
    
_month =  Date2Str(_date,123,0,0,2,0,0);

    
filePath DocuParameters::find().archivePath;

    if (! 
filePath)
        throw 
error("@SYS62843",'',SysInfoAction_formRun::newFormname(formstr(docuParameters),fieldstr(DocuParameters,archivePath),"@SYS4157"));

    
filePath Docu::fileCheckPath(filePath);

    if (! 
WinAPI::pathExists(filePath))
         throw 
error("@SYS62844",'',SysInfoAction_formRun::newFormname(formstr(docuParameters),fieldstr(DocuParameters,archivePath),"@SYS4157"));

    
filePath += _year;
    
filePath += '\\\\\\';

    if (! 
WinAPI::pathExists(filePath))
        
WinAPI::createDirectory(filePath);

    
filePath += _month;
    
filePath += '\\\\\\';

    if (! 
WinAPI::pathExists(filePath))
        
WinAPI::createDirectory(filePath);

    return 
filePath;

\Classes\DocuActionFile\getFilename
// в класс Docu передается дата создания записи (сегодня),
// на основании которой создается путь к файлу
PHP код:
Filename getFilename()
{
    
Filename filename;
;
    if (
this.mustArchiveFiles())
        
filename Docu::archivePath(today())+numSeq.num();

    return 
filename+'.'+this.fileType();