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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.06.2010, 11:23   #1  
Fallen is offline
Fallen
Участник
 
15 / 10 (1) +
Регистрация: 18.06.2010
День добрый, никто не сталкивался со подобной задачей? Суть в том что из макроса нужно запускать отчет Navision у которого в target=Report reportNo view=SORTING(Field3) WHERE(Field3=1(ActiveCell.Value)) проблемма же заключается в следующем стандартную навовскую ссылку типа
navision://client/run?servername=ServerName%26database=DatabaseName%26company=CompanyName%26target=Report%20ReportNo%26view=SORTING(Field3)%20WHERE(Field3=1(Param))%26requestform=Да%26servertype=MSSQL VBA не понимает.
а при использовании ссылки:
Program = "C:\Program Files\Navision Attain\Client\fin.exe servername=ServerName, database=DatabaseName, company=CompanyName, target=Report ReportNo view=SORTING(Field3) WHERE(Field3=1(ActiveCell.Value)) requestform=Да,servertype=MSSQL" вылетает ошибка "неизвестное свойство программы 'target'."
Старый 18.06.2010, 11:33   #2  
GGNAME is offline
GGNAME
Участник
 
67 / 10 (1) +
Регистрация: 21.02.2010
Попробуй создать ярлык для отчёта и запускать его из макроса.
Старый 18.06.2010, 11:45   #3  
Fallen is offline
Fallen
Участник
 
15 / 10 (1) +
Регистрация: 18.06.2010
В том и дело что это не выход, проблемма в том что есть документ Excel в котором сохранены номера документов которые должны указываться в WHERE(Field3=1(ActiveCell.Value)) в качестве ActiveCell.Value (для построения отчета по ним) а соответветственно придеться создавать ярлыки из того же макроса для каждого номер документа(хотя я сомневаюсь в самой возможности этого) и запускать их
Старый 18.06.2010, 12:12   #4  
GGNAME is offline
GGNAME
Участник
 
67 / 10 (1) +
Регистрация: 21.02.2010
Ну на край в файле ярлыка свободный доступ к пути и параметрам, можно подредактировать его через макрос, понимаю изврат, но это на крайний случай -)
Старый 18.06.2010, 16:07   #5  
Fallen is offline
Fallen
Участник
 
15 / 10 (1) +
Регистрация: 18.06.2010
Действительно что на крайний случай... А насчет изврат, так тут сама задача изврат
Старый 18.06.2010, 16:17   #6  
GGNAME is offline
GGNAME
Участник
 
67 / 10 (1) +
Регистрация: 21.02.2010
А функцию Shell не пробовал?
Старый 18.06.2010, 16:25   #7  
Fallen is offline
Fallen
Участник
 
15 / 10 (1) +
Регистрация: 18.06.2010
Через нее родную и пытаюсь:



Sub RunNav()

On Error Resume Next

Program = "C:\Program Files\Navision Attain\Client\fin.exe servername=ServerName, database=DatabaseName, company=CompanyName, target= Report ReportNo, view=SORTING(Field3) WHERE(Field3=1(ActiveCell.Value)), requestform=Да,servertype=MSSQL"

TaskID = Shell(Program, 1)
If Err <> 0 Then
MsgBox "Нельзя запустить" & Program, vbCritical, "Ошибка"
End If
End Sub

вот так оно выглядит(я в VBA дуб-дерево =))
Старый 18.06.2010, 17:58   #8  
GGNAME is offline
GGNAME
Участник
 
67 / 10 (1) +
Регистрация: 21.02.2010
Может Report ReportNo в кавычки попробовать взять? "Report ReportNo" или без пробела?
Старый 21.06.2010, 08:09   #9  
Fallen is offline
Fallen
Участник
 
15 / 10 (1) +
Регистрация: 18.06.2010
Как и предполагалось эффекта от кавычек или удаления пробела 0, собственно как я понимаю VBA ругаеться не на значение target = .....,
а на сам target, так как сам не знает что за свойство программы.
Старый 21.06.2010, 10:01   #10  
Fallen is offline
Fallen
Участник
 
15 / 10 (1) +
Регистрация: 18.06.2010
Ну раз уж пошла такая "пьянка". Может подскажешь как сделать свободный доступ к пути в файле *lnk ?
Старый 21.06.2010, 11:32   #11  
.Quattro. is offline
.Quattro.
Участник
Лучший по профессии 2009
 
194 / 22 (1) +++
Регистрация: 22.05.2006
Попробуйте сделать в ячейке гиперссылку и использовать следующий вариант открытия Nav из VB:

Код:
Sub RunNav()
Excel.ActiveSheet.Range("A1").Hyperlinks(1).Follow
End Sub
Старый 21.06.2010, 11:56   #12  
Fallen is offline
Fallen
Участник
 
15 / 10 (1) +
Регистрация: 18.06.2010
Сейчас VBA script выглядит так:

Sub RunLNK()
Set WshShell = CreateObject("WScript.Shell")
Set WshUrlShortcut = WshShell.CreateShortcut(Desktop & "nav.lnk")
WshUrlShortcut.TargetPath = "navision://client/run?servername=ServerName%26database=DatabaseName%26company=CompanyName%26target=Report%20ReportNo%26view=SORTING(Field3)%20WHERE(Field3=1(ActiveCell.Value))%26requestform=Да%26servertype=MSSQL"
WshUrlShortcut.Save
WshShell.Run ("""*Путь к ярлыку*\nav.lnk""")
End Sub

запускает Nav и казалось бы все путем но значение ActiveCell.Value, не учитывает то есть в отчете в фильтре стоит номер первого документа а не указанного в документе(находящегося в активной ячейке Excel)
Старый 21.06.2010, 16:37   #13  
artkashin is offline
artkashin
Участник
MCBMSS
 
519 / 18 (2) ++
Регистрация: 06.12.2006
Цитата:
Сообщение от Fallen Посмотреть сообщение
"navision://client/run?servername=ServerName%26database=DatabaseName%26company=CompanyName%26target=Report%20ReportNo%26view=SORTING(Field3)%20WHERE(Field3=1("+ActiveCell.Value+"))%26requestform=Да%26servertype=MSSQL"
во-вторых, присоединяюсь к Quattro используйте Excel.ActiveSheet.Range("A1").Hyperlinks(1).Follow
Старый 22.06.2010, 10:44   #14  
Fallen is offline
Fallen
Участник
 
15 / 10 (1) +
Регистрация: 18.06.2010
Не уверен что это решить проблему, так как сами ссылки сделанные из Nav'а запускаются с тем же успехом =(
то есть в отчете в фильтре указывается не параметр размещенный в ссылке(даже если воспользоваться "Файл->Отправить->Создать ярлык" или "Правка->Копировать ссылку и дальше создать ярлык самому") эффект одинаков открывает отчет в фильтре которого указан не тот документ что указан view=SORTING(Field3)%20WHERE(Field3=1(DocNo)) а первый документ.
Старый 23.06.2010, 13:08   #15  
Fallen is offline
Fallen
Участник
 
15 / 10 (1) +
Регистрация: 18.06.2010
Как я и предполагал никакого эффекта, все тоже самое что при использовании моего макроса=(
Старый 23.06.2010, 14:13   #16  
GGNAME is offline
GGNAME
Участник
 
67 / 10 (1) +
Регистрация: 21.02.2010
Слушай, мы тут недавно столкнулись с такой проблемой, при вызове функции из отчёта, оказывается обрабатывается триггер OnInitRecord отчёта, посмотри может он тебе настройки сбивает.
Старый 23.06.2010, 14:40   #17  
Fallen is offline
Fallen
Участник
 
15 / 10 (1) +
Регистрация: 18.06.2010
OnInitRecord - даже не нашел такой =(

возможно речь идет о

OnInitReport - он пустой
Старый 23.06.2010, 16:04   #18  
GGNAME is offline
GGNAME
Участник
 
67 / 10 (1) +
Регистрация: 21.02.2010
Я сделал это! Правда считаю это полным извратом, но всё же выложу код макроса:

Sub Run()
txt1 = "[InternetShortcut]"
txt2 = "navision://client/run?servername=ServerName%26database=DatabaseName%26company=CompanyName% 26target=Report%20ReportNo%26view=SORTING(Field3)%20WHERE(Field3=1(" + ActiveCell.Value + "))%26requestform=Да% 26servertype=MSSQL"

Open "c:\ПУТЬ К ТЕМПОВОЙ ПАПКЕ\mylink.url" For Output Access Write As 1
Print #1, txt1
Print #1, txt2
Close #1

mycommand = "c:\mylink.url"
Set WshScript = CreateObject("WScript.Shell")
D = WshScript.Run(mycommand, 4, False)
End Sub

Есть и второй вариант, только что додумал: единственная сложность это непостоянность путей к iexplore и темповой папке
Второй вариант будет попроще:

sub run()
Shell "C:\Program Files\Internet Explorer\iexplore.exe navision://client/run?servername=ServerName%26database=DatabaseName%26company=CompanyName% 26target=Report%20ReportNo%26view=SORTING(Field3)%20WHERE(Field3=1(" + ActiveCell.Value + "))%26requestform=Да% 26servertype=MSSQL", 1
end sub

Вот такие идеи, проверил, работает -)
Старый 23.06.2010, 16:29   #19  
Fallen is offline
Fallen
Участник
 
15 / 10 (1) +
Регистрация: 18.06.2010
Спасибо за помощь, но увы , возможно дело каких нибудь специфических насройках самого Nav'a буду рыть в этом направлении
Старый 23.06.2010, 16:42   #20  
Fallen is offline
Fallen
Участник
 
15 / 10 (1) +
Регистрация: 18.06.2010
Забавно но если в самом Nav'e номер документа(поля фильтра в которое заносятся данные из ссылки) пустое то все нормально работает, и ваши макросы, и мой.
 


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

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

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