Показать сообщение отдельно
Старый 18.09.2014, 21:54   #2  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
А использовать системную табличку File не пробовали? И для всего автоматизма настроить соответствующий Job Queue (T. 472) и повесить его выполнение на NAS?
Т.е.
1.создаёте один Codeunit для Job Queue.
2. В Codeunit'e проходитетe циклом по табличке File, находите там нужные вам XML-файлы, запускаете для каждого XML-Port (для этого процесса создать второй Codeunit) , в случае успеха/неудачи обработки каждого файла удаляете файл в папку ArchivOK или ArchivNOK.
Т.е что-то типа:
Код:
fileRec.RESET;
fileRec.SETRANGE(Path, 'C:\');
IF fileRec.FINDFIRST THEN;  // -> что-то типа нажатия клавиши F5 в Windows Explorer
fileRec.RESET;
fileRec.SETRANGE(Path, MyDirectory);
fileRec.SETRANGE("Is a file", TRUE);
fileRec.SETFILTER(Name, '*.xml);
IF fileRec.FINDSET THEN BEGIN
  REPEAT
    // обработка фаила вo втором Codeunit'e напр. по имени 'FileProcessing'
    CLEAR(FileProcessing);
    FileProcessing.SetFile(fileRec);   // передача имени фаила в codeunit для обработки оного там хмл-портом
    CLEARLASTERROR();
    COMMIT;
    IF FileProcessing.RUN() THEN BEGIN
      RENAME(fileRec.Name,'C:\ArchivOK\fileRec.Name');
    END ELSE BEGIN
      RENAME(fileRec.Name,'C:\ArchivNOK\fileRec.Name'); 
     // ... так же можно ещё Log написать типа файл такой то не обработан так => смотри GETLASTERRORTEXT
    END;
  UNTIL fileRec.NEXT = 0;
END;
Можно обoйтись и одним Codeunit'ом, если для такой небольшой функциональности тратить два жалко