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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.07.2015, 11:52   #1  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Хочу понять объектную модель. Чего откуда вызывать хоть.

взял пример со странички скачивания мибусо
Код:
C:\> $na = new-object -com NavisionAutomation.1

C:\> $rot = $na.RunningObjectTable

C:\> $rot.names
lists all instances

C:\> $objectdesigner = $rot.ObjectDesigner(1)
get objectdesigner instance (index 1 in runningobjecttable)

C:\> $strm = $objectdesigner.ReadObject(1,18)
get stream for table (=1) object (=18)

перенес код в Navision
Код:
Name	DataType	Subtype	Length
NavObj	Automation	'Navision Automation'.diobjectdesigner	
NavRuningObj	Automation	'Navision Automation'.DIRunningObjectTable	
NavAuto	Automation	'Navision Automation'.NavisionAutomation

CREATE(NavAuto);
NavRuningObj := NavAuto.RunningObjectTable;
NavObj := NavRuningObj.ObjectDesigner(1);
на последней строчке ругается

---------------------------
Microsoft Dynamics NAV
---------------------------
Это сообщение для C/AL программистов:

Этот тип данных не поддерживается C/SIDE. Вы можете использовать данные
любого из следующих типов:
VT_VOID, VT_I2, VT_I4, VT_R4, VT_R8, VT_CY, VT_DATE, VT_BSTR и VT_BOOL

---------------------------
ОК
---------------------------
Старый 23.09.2016, 09:15   #2  
daimon67 is offline
daimon67
Участник
 
1 / 12 (1) ++
Регистрация: 16.10.2013
Цитата:
Сообщение от InTacto Посмотреть сообщение
Хочу понять объектную модель. Чего откуда вызывать хоть.

взял пример со странички скачивания мибусо
Код:
C:\> $na = new-object -com NavisionAutomation.1

C:\> $rot = $na.RunningObjectTable

C:\> $rot.names
lists all instances

C:\> $objectdesigner = $rot.ObjectDesigner(1)
get objectdesigner instance (index 1 in runningobjecttable)

C:\> $strm = $objectdesigner.ReadObject(1,18)
get stream for table (=1) object (=18)

перенес код в Navision
Код:
Name	DataType	Subtype	Length
NavObj	Automation	'Navision Automation'.diobjectdesigner	
NavRuningObj	Automation	'Navision Automation'.DIRunningObjectTable	
NavAuto	Automation	'Navision Automation'.NavisionAutomation

CREATE(NavAuto);
NavRuningObj := NavAuto.RunningObjectTable;
NavObj := NavRuningObj.ObjectDesigner(1);
на последней строчке ругается

---------------------------
Microsoft Dynamics NAV
---------------------------
Это сообщение для C/AL программистов:

Этот тип данных не поддерживается C/SIDE. Вы можете использовать данные
любого из следующих типов:
VT_VOID, VT_I2, VT_I4, VT_R4, VT_R8, VT_CY, VT_DATE, VT_BSTR и VT_BOOL

---------------------------
ОК
---------------------------
Специально зашёл под логином, под которым не заходил очень долго!)

Проблема в том, что метод NavRuningObj.ObjectDesigner(1) не понимает Navision типа Integer. Создайте переменную типа Variant, и присвойте ей значение 1. И все заработает.
За это сообщение автора поблагодарили: mazzy (2).
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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