Импорт Из Excel По Времени

Тема в разделе "Lotus - Программирование", создана пользователем toli4sky, 18 ноя 2013.

  1. toli4sky

    toli4sky Active Member

    Регистрация:
    29 ноя 2011
    Сообщения:
    38
    Симпатии:
    0
    Доброго времени суток!
    Пришел я к выводу, что нужно упростить работу и двумя вариантами это все автоматизировать. Варианты похожи, но пока не совсем работают, поэтому я опять здесь)))
    Суть вопроса в следующем, есть либо список компов, либо конкретный ресурс сетевой. И там и там файлы Excel с конкретным шаблоном. Соответственно требуется как то агентом, по времени это все выдергивать и импортировать.
    Агент по импорту я сделал и в том, и в том варианте, он прекрасно работает, но только из меню, а как я ставлю его в режим запуск по времени он дает сбой.
    Права безопасности агента стоят полные (в разделе безопасность свойства агента), я в базе менеджер, агент подписан мной. Ошибка в следующем месте.
    Когда выполнение кода доходит до строки "Call xlWorkBooks.Open(xlPath)" и смотря через консоль сервера, выдает ошибку, что неправильно указан путь ...там то... или файл используется другой программой...
    Путь пытался указывать просто на конкретный адрес, сначала своего компа, потом и на сам сервер такого вида:
    \\имя сервера\с$\папка\*.* и так пробовал с:\папка, ошибка одна и та же, файл лежа на сервере занят быть не может, некому просто его трогать.
    Вроде все объяснил, если кому это знакомо, очень прошу помощи
     
  2. duchan

    duchan Well-Known Member

    Регистрация:
    20 сен 2006
    Сообщения:
    105
    Симпатии:
    2
    Уже даже не смешно... обсуждалось 100500 раз...
    Сервер работает под SYSTEM, и без "танцев с бубном" не имеет доступа к сетевым ресурсам...
    ... и это проблема не Domino (!!!) - так работает винда!...

    как обойти ищите на форуме, было описано множество раз!... :)

    ... и еще, раз не работают и локальные, то смотрите права агента в агенте - свойства агента, 2-ая закладка, security level
     
  3. toli4sky

    toli4sky Active Member

    Регистрация:
    29 ноя 2011
    Сообщения:
    38
    Симпатии:
    0
    Ну не надо ругаться, я в тут новичек, про 100500милион тысяч раз я понимаю, что может где то было обсуждено лет 20 назад, и мельком в какой то теме, может даже не касающейся excel, а просто по обращению к файлам, но что то все мои поиски приводят к нулю, может те самые руки из не оттудава растут при написании запроса в поиске.
    Если сталкивались дайте хоть намек, где искать, а то пришел спросить, а мне в ответ типа гугл и хелп в помощь, давай дуй отсюдава
     
  4. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    795
    Симпатии:
    78
    Не нужно обижаться - коллега верно заметил, что этот вопрос следует адресовать в другой форум. И так же коллега дал полностью исчерпывающую информацию по разрешению Вашей проблемы. Читайте внимательно.
     
  5. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    Toli4sky
    Запускай сервер домино под учёткой Админа с максимальными правами и он будет иметь доступ к папке
    Это в свойствах службы - указать от чьего имени она будет работать
     
  6. afest

    afest Well-Known Member

    Регистрация:
    16 июн 2009
    Сообщения:
    78
    Симпатии:
    0
    я вообще в таких случаях запускал агента под именем сервера, а не юзверя (даже при доступе манагера)
     
  7. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    795
    Симпатии:
    78
    Речь тут не о домино вообще то)
     
  8. toli4sky

    toli4sky Active Member

    Регистрация:
    29 ноя 2011
    Сообщения:
    38
    Симпатии:
    0
    ну вроде нашел такую штуку, указать там и перезапустить ее, ну даже если так, вроде интересная штука, а как путь до папки с файлами указать?
    так:
    \\сервер\папка\*.*
    или так:
    c:\папка\*.*
    ?
     
  9. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Toli4sky
    \\сервер\папка\*.* или \\IP-сервера\папка\*.*
    Сервер не обязательно может быть тот же, где лотусня работает.
    Но мы выгружаем.

    Добавлено: А еще лучше сделать документ-настройку в базе, где будет лежать путь до папки.
    И тянуть путь оттуда, тогда можно будет легче его сменить.
     
  10. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
  11. toli4sky

    toli4sky Active Member

    Регистрация:
    29 ноя 2011
    Сообщения:
    38
    Симпатии:
    0
    Разведал все штуки, сервер запущен от имени системы, т.е. права все есть, ескель тоже там стоит, если пишу своим вариантом
    \\сервер\c$\папка\*.* то пишет, что указан не верный путь или файл, или файл занят другой программой, а если просто пишу \\сервер\папка\*.* то пишет illegal function call
     
  12. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    А процессов excel на серванте не висит в адовом количестве теперь?
     
  13. toli4sky

    toli4sky Active Member

    Регистрация:
    29 ноя 2011
    Сообщения:
    38
    Симпатии:
    0
    Смотрел, в на серваке процессов нет екселя, максимум смотрю через управление, там только строка, что к моей папке висит сеанс и открыт один файл от системы, я его отбрубаю, запускаю заново, и опять ничего, опять один сеанс появляется...
     
  14. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    хм... Через IP сервера вместо имени тоже ошибка?
    Может стоит на сервере, где работает агент сделать подключение сетевого диска через путь к той папке.
    И тогда обращаться через букву этого диска.
     
  15. toli4sky

    toli4sky Active Member

    Регистрация:
    29 ноя 2011
    Сообщения:
    38
    Симпатии:
    0
    savl
    По ИП та же ерунда, ошибка, а вот про подключение сетевого диска я как то где то слышал, что можно на него будет ссылаться, только вот не пойму в чем будет разница от обычного, для сервера, своего диска?
    если на локальный диск сервера я пишу путь \\Сервер\C$\папка\*.*
    а на сетевой как лезть?
     
  16. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Toli4sky
    Так... Что-то я запутался откуда мы читаем...

    1. Если агент на серванте читает/пишет на свой же локальный диск серванта, то можно через букву {c:\ или d:\ и тд}
    2. Если агента на серванте читает/пишет сетевой диск другого серванта: расшариваем тот диск в сеть, обращение через сетевой путь или IP или подключаем сетевой диск и через букву.

    Судя по всему первый случай, да?
     
  17. toli4sky

    toli4sky Active Member

    Регистрация:
    29 ноя 2011
    Сообщения:
    38
    Симпатии:
    0
    savl
    Ну по идее первый вариант, т.к. наверно проще :rolleyes: (кстати в данном случае только читает, если только он не будет создавать временный файл, как при обычном открытии екселя)
    Но этот вариант почему то не срабатывает
     
  18. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Под идее все равно создает... хотя может вызов поможет: .Open(FileName, , true) типа только на чтение
    Хм... посмотрел один из своих импортеров:
    Код (LotusScript):
    Call ExcelApp.Workbooks.Add(fileName(0))
    Set ExcelBook = ExcelApp.Workbooks(1)
    Вполне работает, попробуйте.
    И еще, создайте в своей папке файлик 1.txt и выполните в том же агенте строку: fileExists = (Dir$ (strPath) <> "" )
    strPath - полный путь к 1.txt
    будет ошибка -> косяк с доступом.

    И еще, в свойствах агента. Выставите сервер где ему работать.
     
  19. toli4sky

    toli4sky Active Member

    Регистрация:
    29 ноя 2011
    Сообщения:
    38
    Симпатии:
    0
    Косяка с доступом нет, я сделал простущий агент, который просто возьмет из этой папки файл и создаст там же копию с другим именем...и этотзасранец создал....
    FileCopy "C:\Folder\asd.xls", "C:\folder\asdqw.xls"

    может в коде что то у меня косяк (хотя по запуску из меню все Ок работает)
    извините, если не так код пишу в сообщении

    'путь беру из дока с настройкой
    v = Evaluate({@DbLookup(NoCache; "":""; "ViewOpt"; "PathDir";"Values")})
    xlPathOrig$=v(0)
    Print "agent import 3" & xlPathOrig

    xlPathAll$=Dir(xlPathOrig$,0)
    Print "agent import 3.1" & xlPathOrig

    If IsEmpty(xlPathOrig) Then Exit Sub
    Do While xlPathAll$ <> ""

    'напишем полный путь до текущего файла
    xlPath=StrLeft(xlPathOrig,"*") & xlPathAll
    Print "agent import 4"

    'Создаем объект MS Excel и скрываем его
    Set xlApp= CreateObject("Excel.Application")
    xlApp.Visible = False
    Print "agent import 5"

    'Определяем книгу и лист
    Set xlWorkBooks = xlApp.Workbooks
    Print xlpath

    Call xlWorkBooks.Open(xlPath)
    Print "agent import 5.2"

    и в место этого последнего принта идет ошибка
     
  20. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    попробуйте так: вместо Set xlWorkBooks = xlApp.Workbooks
    Код (LotusScript):
    Call ExcelApp.Workbooks.Add(fileName(0))
    Set ExcelBook = ExcelApp.Workbooks(1)
    а значения принтов полагаю верные?
     
Загрузка...

Поделиться этой страницей