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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.02.2008, 10:45   #1  
poul_and is offline
poul_and
Участник
 
56 / 12 (1) ++
Регистрация: 08.04.2003
Мне нужно запустить код обработки для каждого файла в конкретной папке и обработанные перекинуть в другую.
Как получить именя файлов?
Можно конечно использовать DIR >list.txt и вытаскивать имена оттуда, но может попроще способ есть?
Старый 22.02.2008, 10:56   #2  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
таблица file.
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Старый 22.02.2008, 11:20   #3  
poul_and is offline
poul_and
Участник
 
56 / 12 (1) ++
Регистрация: 08.04.2003
Цитата:
Сообщение от Дуд Посмотреть сообщение
таблица file.
Я дико извиняюсь, но как это понять? (Такой таблицы у нас нету в базе)
Старый 22.02.2008, 11:23   #4  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
Есть.
Создайте форму и укажите в качестве источника таблицу 2000000022.
Работа с файлами
Старый 22.02.2008, 11:35   #5  
poul_and is offline
poul_and
Участник
 
56 / 12 (1) ++
Регистрация: 08.04.2003
спасибо - разобрался
Старый 06.03.2008, 19:35   #6  
del_negrozzz is offline
del_negrozzz
Участник
 
35 / 10 (1) +
Регистрация: 11.07.2007
Кста... если при открытом клиенте навижн добавить в интересующую папку файл, то его не будет видно до тех пор пока не перезапустим клиент
Старый 07.03.2008, 10:54   #7  
Sid Vicious is offline
Sid Vicious
Участник
Аватар для Sid Vicious
 
15 / 10 (1) +
Регистрация: 13.02.2008
Цитата:
Сообщение от del_negrozzz Посмотреть сообщение
Кста... если при открытом клиенте навижн добавить в интересующую папку файл, то его не будет видно до тех пор пока не перезапустим клиент
Проверил. Показывает. (Вид\Refresh).
Забавная оказывается штука, она к тому же показывает и сетевые ресурсы компьютера по фильтру \\Hostname
Старый 19.03.2013, 14:18   #8  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
Добрый день всем. Решил не создавать тему а присоединиться. Надеюсь автор будет не против.
Цитата:
Цитата:
Кста... если при открытом клиенте навижн добавить в интересующую папку файл, то его не будет видно до тех пор пока не перезапустим клиент
Проверил. Показывает. (Вид\Refresh).
Забавная оказывается штука, она к тому же показывает и сетевые ресурсы компьютера по фильтру \\Hostname
А вот как программно делать Refresh? Передо мной стоит задача мониторить папки на наличие новый файлов в автоматическом режиме. И как бы нажимать Refresh некому. Хотя у меня этот пункт меню и вручную не активен. Активен бывает когда я фокусируюсь на Object Disigner. И толку от этого Refres-а ноль.
Как выйти из ситуации?
Спасибо!
Старый 19.03.2013, 15:16   #9  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Откровенно говоря не очень понял за какой refresh тут гутарили, но обновить список файлов можно повторным запросом записей (findfirst,findset). В автоматическом режиме это может делать Application Server, если напишите соответствующий отчет или кодеюнит.
Старый 19.03.2013, 16:54   #10  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
Цитата:
Сообщение от InTacto Посмотреть сообщение
Откровенно говоря не очень понял за какой refresh тут гутарили, но обновить список файлов можно повторным запросом записей (findfirst,findset). В автоматическом режиме это может делать Application Server, если напишите соответствующий отчет или кодеюнит.
В том и дело. Что у меня через определённые интервалы времени запускается обработка....которая ищет новые файлы. Естественно я делаю RESET. Заново вешаю фильтры и перебираю файлы. Проблема в том, что чтоб клиент увидел новый файл который появился после запуска, его нужно перезапустить. Что совсем меня не устраивает. Я даже пытаюсь путь другой забивать и потом снова нужный прописываь...
Код:
_File.RESET;
_File.SETFILTER(Path,'C:\');
IF _File.FIND('-') THEN;

_File.RESET;
_File.SETFILTER(Path,_Path);
_File.SETFILTER("Is a file",FORMAT(TRUE));
IF _File.FIND('-') THEN
...
UNTIL _File.NEXT = 0;
REPEAT
Старый 19.03.2013, 18:45   #11  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Да, определенный полтергейст присутствует.
Попробуйте запихнуть ф-цию, пробегания по файлам, в другой объект. И вызывайте его.
На днях решал похожую задачу, отличие от вашего кода в том, что перебор как раз в кодеюните, который вызвается из формочки.
Старый 19.03.2013, 19:11   #12  
max_hl_imported is offline
max_hl_imported
Участник
 
45 / 10 (1) +
Регистрация: 28.07.2006
Спасибо mibuso, автор не я.

[code]
[Variables]
Name DataType Subtype Length
MSS Automation 'Microsoft Shell Controls And Automation'.Shell
MSFl Automation 'Microsoft Shell Controls And Automation'.Folder3
MSFIs Automation 'Microsoft Shell Controls And Automation'.FolderItems3
MSFi Automation 'Microsoft Shell Controls And Automation'.FolderItem
i Integer

Код:
CREATE(MSS);

MSFl := MSS.Namespace('E:\temp');
IF ISCLEAR(MSFl) THEN
  EXIT;

MSFIs := MSFl.Items;
IF NOT ISCLEAR(MSFIs) THEN
  FOR i := 1 TO MSFIs.Count DO BEGIN
    MSFI := MSFIs.Item(i);
    IF NOT ISCLEAR(MSFI) THEN BEGIN
      IF NOT MSFI.IsFolder THEN
        MESSAGE(MSFI.Name);

      CLEAR(MSFI);
    END;
  END;
Через WSH пробовал, не могу добиться извленения файла из коллекции по номеру.
Ошибка как у ТС на mibuso, решение через промежуточный скрипт тоже не отработало..
Старый 20.03.2013, 09:14   #13  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
Цитата:
Сообщение от InTacto Посмотреть сообщение
Да, определенный полтергейст присутствует.
Попробуйте запихнуть ф-цию, пробегания по файлам, в другой объект. И вызывайте его.
На днях решал похожую задачу, отличие от вашего кода в том, что перебор как раз в кодеюните, который вызвается из формочки.
Дык она у меня как раз в отдельном кодеюните и обращаюсь к ней из формы. Такое ощущение что какие-то настройки должны быть.... типа не кешировать таблицу FILE. И главное тут так всё просто, что даже манёвра для ошибки нет....чтоб потом её искать
Старый 20.03.2013, 13:47   #14  
Constantine_imported is offline
Constantine_imported
Участник
 
126 / 10 (1) +
Регистрация: 28.04.2011
Shaitan-Babay, попробуйте чуть по другому код написать.
Код:
recFile.RESET;
recFile.SETRANGE(Path, 'c:\for_exchange\');
recFile.SETRANGE("Is a file", TRUE);
IF recFile.FINDFIRST THEN
REPEAT
  i += 1;
UNTIL recFile.NEXT = 0;
Отличия только в том, что используется SETRANGE вместо SETFILTER, и FINDFIRST вместо FIND(-). Еще у меня стояло вначале кода CLEAR(recFile), но работает и без этого.
Я вынес этот кусочек в отдельную функцию в кодеюните и запускал с кнопки на форме. Все работает и возвращает количество файлов в папке, при повторном запуске, даже не закрывая формы, все отрабатывает как надо. Может у вас при повторном прогоне фильтры накладываются не такие, например в конце пути нет слэша?
Старый 20.03.2013, 14:43   #15  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Цитата:
Сообщение от Shaitan-Babay Посмотреть сообщение
Такое ощущение что какие-то настройки должны быть.... типа не кешировать таблицу FILE.
Попробуйте перед запуском цикла (т.е. до того когда делаете FIND('-') для таблицы file) прописать строчку:
Код:
SELECTLATESTVERSION;
Старый 20.03.2013, 17:37   #16  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
Цитата:
Сообщение от Constantine Посмотреть сообщение
Shaitan-Babay, попробуйте чуть по другому код написать.
Код:
recFile.RESET;
recFile.SETRANGE(Path, 'c:\for_exchange\');
recFile.SETRANGE("Is a file", TRUE);
IF recFile.FINDFIRST THEN
REPEAT
  i += 1;
UNTIL recFile.NEXT = 0;
Отличия только в том, что используется SETRANGE вместо SETFILTER, и FINDFIRST вместо FIND(-). Еще у меня стояло вначале кода CLEAR(recFile), но работает и без этого.
Я вынес этот кусочек в отдельную функцию в кодеюните и запускал с кнопки на форме. Все работает и возвращает количество файлов в папке, при повторном запуске, даже не закрывая формы, все отрабатывает как надо. Может у вас при повторном прогоне фильтры накладываются не такие, например в конце пути нет слэша?
Цитата:
Сообщение от AlexB Посмотреть сообщение
Цитата:
Сообщение от Shaitan-Babay Посмотреть сообщение
Такое ощущение что какие-то настройки должны быть.... типа не кешировать таблицу FILE.
Попробуйте перед запуском цикла (т.е. до того когда делаете FIND('-') для таблицы file) прописать строчку:
Код:
SELECTLATESTVERSION;
К сожалению, ни то ни другое результат не дало />
Может всё таки есть какие-то настройки Клиента?
Кстати заметил такую вещь. Что если форму закрыть(а может это не обязательно)....подождать(больше 10 минут точно) и снова запустить и нажать кнопку запускающую функцию то система увидит новый файл... Буду дальше экспериментировать.
Старый 20.03.2013, 18:08   #17  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
Можно меня поздравить! Проблему решил. Всё оказалось просто. Клиент работает под Win7, и если клиента запустить под правами админа то всё отлично видит все перемещения файлов.
 


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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:49.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.