|
15.10.2012, 10:49 | #1 |
Участник
|
Наверно напишу какую то банальную и всем известную вещь, но вдруг кому-то понадобится.
В процессе работы столкнулся с необходимостью открытия нав по гиперссылке через RDP в опубликованном приложении NAV. Finhlink категорически отказывался запускать клиента NAV на терминале в окне приложения и я искал способ передать параметр гиперссылки напрямую опубликованному приложению finsql.exe Выход оказался довольно простым, достаточно в параметрах запуска RDP передать параметр url=navision://client/run?servername=... и опубликованное приложение замечательно открывается. Само собой эту гиперссылку можно вписать и в обычный ярлык запуска NAV. PS Странно, но в стандартной документации упоминания о такой возможности не нашел. Помог файл fin.stx в котором перечислены параметры запуска приложений NAV. Секция // Commandline Options
__________________
Want to believe... |
|
15.10.2012, 14:29 | #2 |
Участник
|
Цитата:
Сообщение от DA_NEAL
Наверно напишу какую то банальную и всем известную вещь, но вдруг кому-то понадобится.
В процессе работы столкнулся с необходимостью открытия нав по гиперссылке через RDP в опубликованном приложении NAV. Finhlink категорически отказывался запускать клиента NAV на терминале в окне приложения и я искал способ передать параметр гиперссылки напрямую опубликованному приложению finsql.exe Выход оказался довольно простым, достаточно в параметрах запуска RDP передать параметр url=navision://client/run?servername=... и опубликованное приложение замечательно открывается. Само собой эту гиперссылку можно вписать и в обычный ярлык запуска NAV. PS Странно, но в стандартной документации упоминания о такой возможности не нашел. Помог файл fin.stx в котором перечислены параметры запуска приложений NAV. Секция // Commandline Options |
|
15.10.2012, 15:30 | #3 |
Участник
|
[/quote]
Спасибо! Не додумался полазить по fin.stx. В свое время придумал просто монструозный способ запуска навика в RDP по ссылке из писем (механизм утверждения) с использованием AutoIt и запуском навика с параметрами изнутри навика без параметров... В общем, работало, но это было крайне нетривиальное костыльное решение, которое даже стыдно показывать. [/quote] Вот все таки как все похоже. Я до этого способа делал то же самое. На AutoIT написал утилиту которая по параметру URL создавала текстовой файлик с этим URL. Зарегал протокол в реестре а-ля navision:// где прописал эту утилиту. Она также создавала в локальном каталоге юзера RDP файлик и запускала его. В 1 кодюъните прописал проверку наличия файлика с URL в локальном каталоге и если он есть отрывал на CompanyOpen.Далее этот файлик грохался в этом же кодъюните. Таким образом работали гиперссылки на RDP. Но чето мне этот способ не очень нравился, тем более надо было бы всем ставить эту утилиту, вносить изменения в реестр у пользователей.
__________________
Want to believe... |
|
15.10.2012, 16:31 | #4 |
Участник
|
Цитата:
Сообщение от DA_NEAL
Вот все таки как все похоже.
Я до этого способа делал то же самое. На AutoIT написал утилиту которая по параметру URL создавала текстовой файлик с этим URL. Зарегал протокол в реестре а-ля navision:// где прописал эту утилиту. Она также создавала в локальном каталоге юзера RDP файлик и запускала его. В 1 кодюъните прописал проверку наличия файлика с URL в локальном каталоге и если он есть отрывал на CompanyOpen.Далее этот файлик грохался в этом же кодъюните. Таким образом работали гиперссылки на RDP. Но чето мне этот способ не очень нравился, тем более надо было бы всем ставить эту утилиту, вносить изменения в реестр у пользователей. не поленился нашел свой код в LogInStart Код: AutostartShortcutSetup.SETRANGE(Enabled, TRUE); IF AutostartShortcutSetup.FINDFIRST THEN BEGIN ShortcutNameWithPath:=STRSUBSTNO(AutostartShortcutSetup.Path, USERID); IF EXISTS(ShortcutNameWithPath) THEN BEGIN ShortcutToStart.TEXTMODE(TRUE); ShortcutToStart.OPEN(ShortcutNameWithPath); StartProgram := (ShortcutToStart.READ(Hlink)>0); ShortcutToStart.CLOSE; ERASE(ShortcutNameWithPath); IF StartProgram THEN IF UPPERCASE(Text50000)=UPPERCASE(COPYSTR(Hlink, 1, STRLEN(Text50000))) THEN HYPERLINK(Hlink); END; END; Проверки тут параноидальные сделаны были - формально можно было запустить на терминальном сервере что-угодно, поэтому проверял, что это именно ссылка в стиле NAV :-) Т.е. мое решение, кажется, вообще не отличается от вашего :-)) |
|
15.10.2012, 16:42 | #5 |
Участник
|
Ага почти тоже самое, только я запускал RDP приложение с примапленными локальными дисками юзера и файлик искал соответственно в локальной папке юзера по пути \\tsclient\...
а так то одна логика. Но имхо утопичный вариант, слишком все нахлобучено .
__________________
Want to believe... |
|
15.10.2012, 16:44 | #6 |
Участник
|
работает же :-)
Костыль. Но работает. Конечно, вариант с url - это просто громадный шаг вперед.;-) |
|
18.10.2012, 09:53 | #7 |
Участник
|
У нас единая БД. И пользователи в перспективе по всей России. Несмотря на то что все в одной локальной сети, каналы связи не могут обеспечить комфортной работы в классическом клиенте например из какого - нибудь Новокузнецка.
__________________
Want to believe... |
|
18.10.2012, 10:09 | #8 |
Участник
|
В моей ситуации сервер с NAV уезжал на удаленную корпоративную площадку в Европу без локального доступа вообще. А NAVовские стандартные механизмы утверждения документов во всю использовались в локальной, российской компании. Политика по централизации. Процесс был не быстрый, и не приоритетный, с тех пор много воды утекло. Не факт, что в итоге переехал - я на том проекте уже давно не работаю - финала процесса не застал.
|
|