AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 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();

Старый 15.04.2004, 10:24   #2  
Shark is offline
Shark
Участник
Аватар для Shark
 
47 / 11 (1) +
Регистрация: 12.09.2003
Адрес: Москва
А в чем, собственно, вопрос?
Старый 15.04.2004, 10:29   #3  
mit is offline
mit
Участник
Аватар для mit
 
386 / 36 (2) +++
Регистрация: 15.01.2003
Адрес: Moscow
Собственно это ответ решил поделиться знаниями.
сама идея документооборота довольно интересна, но есть ряд неудобств.
кстати еще есть баг в работе документооборота с виртуальными компаниями. если кому интересно - могу поделиться.
Старый 15.04.2004, 10:53   #4  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Изначально опубликовано mit
кстати еще есть баг в работе документооборота с виртуальными компаниями. если кому интересно - могу поделиться.
я так думаю, этот баг все так или иначе уже решили

PHP код:
Filename getFilename()
{
    
Filename filename;
;
    if (
this.mustArchiveFiles())
        
filename Docu::archivePath(today())+numSeq.num();

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

понимаю, конечно, что случай вырожденный, но в случае, если у файла расширения нет, вывалится ошибка в духе "cannot open file mydir\myfile."
Старый 15.04.2004, 11:35   #5  
mit is offline
mit
Участник
Аватар для mit
 
386 / 36 (2) +++
Регистрация: 15.01.2003
Адрес: Moscow
Да нет же, приведенный код в начале топика не решает вопрос расширений (он у нас никогда и не возникал). Поясню еще раз проблему:
Есть папка, куда попадают файлы от документооборота - это базовая функциональность. У нас же в месяц в данной директории появляется ежемесячно примерно 1000 документов. Если заглянуть в недалекое будущее, нетрудно прикинуть, что через несколько лет у ОС начинаются проблемы с хранением. По поводу сервера w2k информации не встречал, но на '98 были ограничения - не более 1024. Понятно, что у w2k эта цифра больше, но все же. Попробуйте открыть директорию, где лежит пара - тройка тыс. файлов. Как быстро, после открытия директории, система позволит открыть любой из файлов? Еще одна проблема связанная с таким количеством файлов - это резервное копирование. Зачем архивировать несколько десятков тыс. файлов ежедневно? Можно это делать скажем раз в месяц, а ежедневно резервировать только последние 2-3 мес.(так как пользователи иногда возвращаются к этим документам и корректируют их).
Так что, Vadik, это не баг, это модификация, позволяющая катологизировать документы в: папочка год, в ней папочки с месяцами, а уже в них сами файлы.
Баг же в работе документооборота с виртуальными компаниями заключается в том, что если таблица входит в виртуальную компанию - то документ к ней не получтся прикрепить. Вернее получится, но при последующем открытии вы не увидите фашего документа. Система отрабатывает так:
вы находитесь в компании dat, таблица - all. если прикрепляете документ к записи - документ метится как dat + RecId от записи из таблицы all...
дальше думаю подолжать не стоит.
Старый 15.04.2004, 11:44   #6  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
да я, в общем, в курсе..



а в БД категорически не хотите хранить?
Старый 15.04.2004, 11:54   #7  
mit is offline
mit
Участник
Аватар для mit
 
386 / 36 (2) +++
Регистрация: 15.01.2003
Адрес: Moscow
Хранение в БД влечет за собой ряд неудобств. Например невозможно осуществить поиск по тексту в документе. понятно, что можно воспользоваться поиском по самой таблице, но это не совсем то, вернее совсем не то.
плюс размер базы, ну и главный наверное критерий - так исторически сложилось.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Обращение к http-сервису в Аксапте Lucky13 DAX: Программирование 31 24.03.2015 19:37
Standart Costing, Direct Costing и механизмы их реализации в Аксапте slava09 DAX: Функционал 55 05.06.2006 11:00
Система оповещений в Аксапте (события в Аксапте) raunio DAX: Прочие вопросы 1 29.09.2005 15:44
Аналитический учет в Аксапте. Анна DAX: Прочие вопросы 38 06.04.2005 14:04
Размышления на тему “Системы контроля версий в Аксапте”. Андре DAX: База знаний и проекты 31 07.02.2005 12:29

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:12.