Имя: Пароль:
1C
 
Как сделать тип Long для VB
0 simol
 
09.09.06
21:09
Имею код:
   swApp = Новый COMОбъект("SldWorks.Application");
   Перем3 = 0;
   Перем4 = 0;
   swModel = swApp.OpenDoc6("D:\SW+1C\SW+1C\АТ.ХХХХХХ.111.SLDPRT", 1,1, "", Перем3, Перем4);
Вот описание функции:
retval = SldWorks.OpenDoc6 ( filename, type, options, configuration, &Errors, &Warnings )
где
Output:
(long) Errors
Load errors as defined in swFileLoadError_e

Output:
(long) Warnings
Warnings or extra information generated during the open operation as defined in swFileLoadWarning_e

При выполнении кода пишет несоответствие типов, параметры обязательные и в VB работает.
Подскажите как 1С должна передать переменную ,чтобы VB принял ее как тип Long.
1 АперБот
 
09.09.06
22:10
Поднимать тяжести тяжело, а ветки легко. Достаточно добавить в них сообщение
2 simol
 
10.09.06
20:04
up
3 dimoff
 
10.09.06
20:59
Из описания функции совершенно не следует, что параметры имеют тип Long, Более того, описание функции вообще какое-то, мало похожее на стандарты описания функций в VB
4 dimoff
 
10.09.06
21:01
Тип Long имеет возвращаемое функцией значение
5 simol
 
11.09.06
12:47
(3) вот описание функции
Syntax (OLE Automation)

retval = SldWorks.OpenDoc6 ( filename, type, options, configuration, &Errors, &Warnings )



Input:
(BSTR) Filename
Document name or full path if not in current directory, including extension

Input:
(long) Type
Document type as defined in swDocumentTypes_e

Input:
(long) Options
Mode in which to open the document as defined in swOpenDocOptions_e

Input:
(BSTR) Configuration
Model configuration in which to open this document

Applies to parts and assemblies, not drawings

If this argument is empty or the specified configuration is not present in the model, the model is opened in the last-used configuration.

Output:
(long) Errors
Load errors as defined in swFileLoadError_e

Output:
(long) Warnings
Warnings or extra information generated during the open operation as defined in swFileLoadWarning_e

Return:
(LPDISPATCH) retval
Pointer to a Dispatch object, the newly loaded ModelDoc2, or NULL if failed to open
6 simol
 
11.09.06
12:47
(4) Вот текст ошибки:
{Форма.Форма(43)}: Ошибка при вызове метода контекста (OpenDoc6): Типы не совпадают (5)
   swModel = swApp.OpenDoc6("D:\SW+1C\SW+1C\АТ.ХХХХХХ.111.SLDPRT", 1,1, "", Перем3, Перем4);
по причине:
Типы не совпадают (5)
7 simol
 
11.09.06
13:35
up
8 774816
 
11.09.06
13:46
в 1с не такого понятия обьявление переменных как лонг или интегер (к сожалению)
ты можешь только определить переменную присвоивь ему значение
попробуй убери
вот это
Перем3 = 0;
Перем4 = 0;
пусть определиться во время выполнения может поможет
9 774816
 
11.09.06
13:49
а что за прога и для чего SldWorks?
10 simol
 
11.09.06
14:11
(8) Такое пробовал, если тип Перем3 и перем4 Неопределено, то ошибка такаяже.
(9) Я с помощью 1С открываю сборка SolidWorks и заполняю(изменяю) справочник спецификаций в УПП
11 774816
 
11.09.06
14:34
покажи код в VB
12 simol
 
11.09.06
14:49
(11) Я не понял что показать.
Я получил перечень деталей входящих в сборку. И мне надо открыть последовательно эти детали и считать с них свойства.
Вот как получить перечень деталей:

Процедура TraverseComponent(swComp, nLevel)

   sPadStr = "";
   
   Для i = 0 По nLevel - 1 Цикл
       sPadStr = sPadStr + "  ";
   КонецЦикла;

   vChildComp = swComp.GetChildren;
   Для  i = 0 По vChildComp.GetLength(0) - 1 Цикл
       swChildComp = vChildComp.GetValue(i);
       TraverseComponent(swChildComp, nLevel + 1);
       Сообщить(sPadStr + swChildComp.Name2 + " <" + swChildComp.ReferencedConfiguration + "> " + swChildComp.GetPathName);
   КонецЦикла;    

КонецПроцедуры

Процедура КнопкаВыполнитьНажатие(Кнопка)

   swApp = Новый COMОбъект("SldWorks.Application");
   swModel = swApp.ActiveDoc;
   Если swModel = Неопределено Тогда
       Возврат;
   КонецЕсли;
   swConf = swModel.GetActiveConfiguration;
   swRootComp = swConf.GetRootComponent;

   Сообщить("File = " + swModel.GetPathName);

   TraverseComponent(swRootComp, 1);

КонецПроцедуры
13 simol
 
11.09.06
14:55
(11) Я не конял что именно показать. Но суть вовпроса в том, что я получаю имена файлов деталей из которых состоит сборка и мне надо их последловательно открыть, чтобы прочитать свойства. Перечень получаю так:

Процедура TraverseComponent(swComp, nLevel)

   sPadStr = "";
   
   Для i = 0 По nLevel - 1 Цикл
       sPadStr = sPadStr + "  ";
   КонецЦикла;

   vChildComp = swComp.GetChildren;
   Для  i = 0 По vChildComp.GetLength(0) - 1 Цикл
       swChildComp = vChildComp.GetValue(i);
       TraverseComponent(swChildComp, nLevel + 1);
       Сообщить(sPadStr + swChildComp.Name2 + " <" + swChildComp.ReferencedConfiguration + "> " + swChildComp.GetPathName);
   КонецЦикла;    

КонецПроцедуры


Процедура КнопкаВыполнитьНажатие(Кнопка)

   swApp = Новый COMОбъект("SldWorks.Application");
   swModel = swApp.ActiveDoc;
   Если swModel = Неопределено Тогда
       Возврат;
   КонецЕсли;
   swConf = swModel.GetActiveConfiguration;
   swRootComp = swConf.GetRootComponent;

   Сообщить("File = " + swModel.GetPathName);

   TraverseComponent(swRootComp, 1);

КонецПроцедуры
14 simol
 
11.09.06
14:56
(11) Я не конял что именно показать. Но суть вовпроса в том, что я получаю имена файлов деталей из которых состоит сборка и мне надо их последловательно открыть, чтобы прочитать свойства.
15 774816
 
11.09.06
15:18
я к тому что ты писал на счет
<При выполнении кода пишет несоответствие типов, параметры обязательные и в VB работает.>
16 774816
 
11.09.06
15:23
есть описание значений этих объектов
swFileLoadError_e или этой swFileLoadWarning_e
17 simol
 
11.09.06
16:53
(15)Вот открытие на VB:
   Sub main()
   Dim nErrors                 As Long
   Dim nWarnings               As Long
   Set swApp = Application.SldWorks
   Set swDrawModel = swApp.OpenDoc6("D:\SW+1C\SW+1C\??.??????.222.SLDPRT", swDocPART, swOpenDocOptions_Silent, "", nErrors, nWarnings)
   End Sub
(16)Поидее это константы, вот что есть по swFileLoadError_e
swFileLoadError_e  
Specifies possible values for file load errors.
swGenericError - Another error was encountered.
swFileNotFoundError - Unable to locate the file. The file is not loaded or the referenced file (that is, component) is suppressed.
swFileWithSameTitleAlreadyOpen - A document with same name is already open.

These enumerators were obsoleted as of SldWorks::OpenDoc6 and moved to swFileLoadWarning_e:
swIdMatchError
swReadOnlyWarn
swSharingViolationWarn
swDrawingANSIUpdateWarn
swSheetScaleUpdateWarn
swNeedsRegenWarn
swBasePartNotLoadedWarn
swFileAlreadyOpenWarn
swInvalidFileTypeError
swDrawingsOnlyRapidDraftWarn
swViewOnlyRestrictions
swFutureVersion
swViewMissingReferencedConfig
swDrawingSFSymbolConvertWarn
Основная теорема систематики: Новые системы плодят новые проблемы.