У нас в документообороте участвует очень мнного файлов при хранении в одном каталоге возникают проблемы с администрированием.
привожу кусок кода, где каталоги организуются с учетом даты создания файлов
т.е. файл созданный 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();
}