Re: Есть один бредовый вопросик)

Можно ли как-то, напр., средствами API (не исключаю и другие варианты), из модуля TCS_INV по заданному идентификатору номенклатуры получить ее спецификацию (в любом виде, можно даже просто массив идентификаторов входящих деталей, а не сам объект спецификации)?

Re: Есть один бредовый вопросик)

Модуль TCS_INV (Складской учет) не предусмотрен для обеспечения доступа к конструкторским спецификациям.

Re: Есть один бредовый вопросик)

Это я знаю, а вот все-таки интересно, если допустим я через функции dll подцеплюсь заного к ТКС_АПИ. и через него достану... Это возможно? Ведь ТКС_АПИ - должен поддерживать ВСЕ!

Re: Есть один бредовый вопросик)

Да, это возможно.

Re: Есть один бредовый вопросик)

:D 
А не будет ли уже "наглым" вопросик о том как лучше это сделать (через dll, через макрос, и как можно избежать ошибку при втором обращении к спецификации?, т.к. два раза цепляться нельзя, а все переменные после работы функции удалятся)? :roll:

Re: Есть один бредовый вопросик)

Пишите библиотеку с функцией, которая принимает в качестве параметра ID номенклатуры, а возвращает, массив идентификаторов номенклатур, входящих в ее состав. А в макросе просто вызываете данную функцию. По поводу создания и использования dll пользуйте поиск, тема уже обсуждалась.

Re: Есть один бредовый вопросик)

Спасибо

Re: Есть один бредовый вопросик)

А средствами скрипта никак нельзя?
Что-то типа 
Set TCSObj1 = CreateObject("CSDN.TCS")
    If Not (TCSObj1 Is Nothing) Then
        Set TCSApp1 = TCSObj1.LoginEx("Пупкин", "ххх")
        If Not (TCSApp1 Is Nothing) Then
            Call TCSApp.ShowMessageBox("Ура", "Ура")
        Else
            Call TCSApp.ShowMessageBox("Ууу", "ууу")
        End If
    Else
    Call TCSApp.ShowMessageBox("Библиотека API TechnologiCS не зарегистрирована!", "Ошибка")
    End If
Хотя все-равно выдает ошибку: "Создание повторного интерфейса..."

Re: Есть один бредовый вопросик)

Пытался написать dll. Вот исходник основной:
unit Unit1;

{$WARN SYMBOL_PLATFORM OFF}

interface

uses
  ComObj, ActiveX, Project1_TLB, StdVcl, Dialogs, CSDN_TLB;

type
  TSpec = class(TAutoObject, ISpec)
  protected
    procedure ConnectTCS; safecall;

  end;

implementation

uses ComServ;

procedure TSpec.ConnectTCS;
Var
  TCS: ITCS;
  App: ITCS_Application;
begin
  CoInitializeEx(nil, COINIT_APARTMENTTHREADED); 
  TCS:= CreateOLEObject('CSDN.TCS') as ITCS; 
  if Assigned(TCS) then
    App:= TCS.LoginEx('Пупкин', 'хххххххх');
  if App=nil then ShowMessage('Не получилось')
  else ShowMessage('Получилось');
  App:= nil; 
  TCS:= nil;
  CoUninitialize;
  //ShowMessage('Ура');
end;

initialization
  TAutoObjectFactory.Create(ComServer, TSpec, Class_Spec,
    ciMultiInstance, tmApartment);
end.
В ТКС написал следующее:
Sub FormMacro_GetSpecFromINV(TCSActiveModule)
    Dim MyObject 

    Set MyObject = CreateObject("Project1.Spec") 
    Call MyObject.ConnectTCS() 

    Set MyObject = Nothing   
End Sub
Не сработало:
написал internal DataSet: Cannot perform this operation on an open dataset.
В чем моя ошибка?
P.S. Заметил: спотыкается на строке
TCS:= CreateOLEObject('CSDN.TCS') as ITCS;

Re: Есть один бредовый вопросик)

Есть идеи?

Re: Есть один бредовый вопросик)

Станислав писал(а):
Есть идеи?

есть smile
купите TCS_ALL

Re: Есть один бредовый вопросик)

:D  :D  :D 
TCS_All>>TCS_INV+TCS_API, что не есть гуд.

Re: Есть один бредовый вопросик)

Станислав писал(а):
TCS_All>>TCS_INV+TCS_API

зато "сел и поехал" smile

Re: Есть один бредовый вопросик)

Нам нужно много складских учетов (INV). Есть макрос, который работает на основе спецификации номенклатур, пользователям знать и видеть спецификацию - не зачем, главное - чтобы макрос корректно завершил свою работу. Если на каждого покупать TCS_All - можно разориться :cry:

Re: Есть один бредовый вопросик)

Кстати, ближе к теме: исправил типы
Var 
TCS: ITCS; 
App: ITCS_Application;
на OleVariant - Стал ругаться на создание повторного интерфейса...

Re: Есть один бредовый вопросик)

А что тут такого? Ведь, судя по Вашему коду Вы действительно создаете объект каждый раз без всяких проверок перед этим.

Re: Есть один бредовый вопросик)

Мне проверки пока не нужны. Для начала я просто хочу взять еще одную лицензию TCS_API, для того чтобы иметь все возможности

Re: Есть один бредовый вопросик)

Уважаемые разработчики, правильно ли я понимаю:
выполнить вункцию CreateOLEObject('CSDN.TCS') мне не дает TCS (какая-то внутренняя проверка) и чтобы мне получить права, надо эту функцию выполнить в другом приложении...
Скажем например: у вас есть скрипт IntoExcel где-то в CSDN_Vis..., то есть я там пишу процедуру, которая возвращает спецификацию и запускаю ее - все это через скрипт в ТКС. Она возвращает результат и уничтожает все за собой - все это в фоновом режиме.
P.S. Это всего-лишь предположение
Можно ли как-то по другому?

Re: Есть один бредовый вопросик)

Я ещё раз перечитал тему  :oops: 
Я чего-то не понимаю, зачем Вам теперь Excel понадобился?

Re: Есть один бредовый вопросик)

Дак и я не понимаю, почему я не могу из ТКС создать его вторую копию объекта и работать с ней со всеми правами доступа. Ексель - взят для примера

Re: Есть один бредовый вопросик)

Станислав писал(а):
Дак и я не понимаю, почему я не могу из ТКС создать его вторую копию объекта и работать с ней со всеми правами доступа. Ексель - взят для примера

Если я не ошибаюсь, то повторное создание объекта недопустимо.

Re: Есть один бредовый вопросик)

AlexB писал(а):
Если я не ошибаюсь...

не ошибаетесь...

Re: Есть один бредовый вопросик)

Сергей Девятериков писал(а):
Да, это возможно.

...не случайно же написал...
У меня конечно есть более рациональная идея всего этого (более того она настолько проста, что кажется что проще некуда, если действительно нельзя создать копию объекта или сделать как-то по хитрому) - средствами ADO подцепиться к базе и SQL - запросами выкопать спецификацию - и все!

Re: Есть один бредовый вопросик)

Что Вам мешает в библиотеке сделать проверку на уже созданный объект и подключиться к существующей сессии? SQL - это конечно вариант, но...

Re: Есть один бредовый вопросик)

Если я подключусь к существующей сессии, то из TCS_INV я не смогу достать конструкторские спецификации. Или я не прав?