Показать сообщение отдельно
Старый 09.09.2007, 19:59   #14  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Конечно, интересно разобраться до конца с этим SHOW.DETAIL, но находятся и другие варианты решения. Например, можно попробовать переложить на X++ следующие команды VBA:
Код:
'Скрыть детали (нажатие на "минусик")
Application.CommandBars("PivotTable").Controls( 5 ).Execute

'Отобразить детали (нажатие на "плюсик")
Application.CommandBars("PivotTable").Controls( 6 ).Execute
Можно еще попробовать воплотить в X++ такую универсальную процедуру на VBA:
Код:
Sub RunExcelMenu(ByVal menuID As Long)

    'в Аксапте все переменные будут типа COM
    Dim cmdBars As CommandBars
    Dim newCmdBar As CommandBar
    Dim ctrls As CommandBarControls
    Dim newCtrl As CommandBarControl
    
    Set cmdBars = Application.CommandBars
    Set newCmdBar = cmdBars.Add
    Set ctrls = newCmdBar.Controls
    Set newCtrl = ctrls.Add(1, menuID)
    
    newCtrl.Execute
    newCmdBar.Delete
    
End Sub

'Скрыть детали (нажатие на "минусик")
    RunExcelMenu( 464 )

'Отобразить детали (нажатие на "плюсик")
    RunExcelMenu( 462 )
А коды команд меню Excel можно узнать, например, в окне отладки:
Код:
? Application.CommandBars("PivotTable").Controls( 5 ).Id
 464 
? Application.CommandBars("PivotTable").Controls( 6 ).Id 
 462
Подпрограмма RunExcelMenu - адаптированная для последующего перевода на X++ версия подпрограммы RunMenu, заимствованная со стр. 418 из книги: Excel 2003 и VBA. Справочник программиста
За это сообщение автора поблагодарили: Stainless (1).