Галактика vs DIRECTUM

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
EvilWish
Сообщения: 2
Зарегистрирован: 17 мар 2011, 12:32

Галактика vs DIRECTUM

Сообщение EvilWish »

Здравствуйте!

На мой взгляд, тема интеграции Галактики и системы документооборота Directum становится всё популярнее.
Хочу представить вариант на эту тему.
Это программа связи Галактики 8.1 и Directum (проверялось на версии 4.6.1), работающая через COM, запуск и настройка происходит именно на стороне Галактики.
В качестве примера использования там реализована синхронизация справочника организаций.
http://ifolder.ru/22449730

И вот тут версия для Atlantis 5.4.38, Directum 4.7, Windows 7. Впрочем, изменений по сравнению с прошлой версией почти нет.
http://ifolder.ru/28919929

С уважением,
Стецко Василий.
Последний раз редактировалось EvilWish 25 фев 2012, 13:38, всего редактировалось 1 раз.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Галактика vs DIRECTUM

Сообщение edward_K »

у меня в занаке покруче будет :). Настраивается в директуме, Таблица любая в принципе, для документов можно использовать объектные фейсы в 20 строк. Пашет как в com так и в файловом режиме, как в пакетном режиме так и в online.
Знаю еще как миниум еще 2 версии для связи - про них в директуме подскажут.
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Re: Галактика vs DIRECTUM

Сообщение KATZ »

EvilWish писал(а):На мой взгляд, тема интеграции Галактики и системы документооборота Directum становится всё популярнее.
Попался на глаза документ "Концепция развития системы Галактика ERP на 2011 год", в нем написано
на 2011 г. ставятся следующие задачи:
. . .
1.4. Интеграция с системами документооборота (Directum).
EvilWish
Сообщения: 2
Зарегистрирован: 17 мар 2011, 12:32

Re: Галактика vs DIRECTUM

Сообщение EvilWish »

у меня в занаке покруче будет . Настраивается в директуме, Таблица любая в принципе, для документов можно использовать объектные фейсы в 20 строк. Пашет как в com так и в файловом режиме, как в пакетном режиме так и в online.
Круто! :)
А можно поподробнее? Какие настройки реализованы в директуме? Таблица любая - это как?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Галактика vs DIRECTUM

Сообщение edward_K »

настройки в директуме реализованы согласно их требований к интеграции систем с добавлением соотв.функций.
+ реализация обработки вызовов в галактике, вплоть до просмотра документа(для примера сделал для 4)
Словарь + описание документов грузится из галки.
Таблица любая за счет генерации отчета (находу генерится и выполняется - все поля льются в TEMPDESCR) - для первасива, либо прямым запросом(mssql oracle) либо объектным фейсом - для выгрузки документов со спецификацией.
Обработка документов реализована через объекты(ест Директум получает описание всех подключенных )

Код: Выделить всё

#doc
  Объектный интерфейс плагина для браузера валидаторов.
#end
objinterface IDIR_ExpIMP;
  #doc
  Установить запись в протокол, пустой параметр отключает запись
  #end
  Procedure SetLogFileNM(w :string);

  #doc
  Вычислить произвольное выражение
  #end
  Function Expression_ ( w_express :string ) :string ;
  #doc
    Возвращает заголовок таблицы.
  #end
  function GetTableTitle: string;

  #doc
    Возвращает имя главной таблицы
  #end
  function GetTableName: string;
  #doc
    Возвращает имя следующей дочерней таблицы
  #end
  Function GetSlaveName(wnmslave :string) :string;
  
  #doc
    Запускает инициализацию.
  #end

  Function Export_Init(wpsDate:string; wpsTime:string; wpsNrec :string) : boolean ;
  #doc
    Получить первую запись.
  #end
  Function Export_First :boolean ;
  #doc
    Получить следующую запись.
  #end
  Function Export_Next :boolean ;
  #doc
    Получить первую запись дочерней таблицы.
  #end
  Function Export_SlaveFirst(w_slave :string) :boolean;
  #doc
    Получить следующую запись дочерней таблицы.
  #end
  Function Export_SlaveNext :boolean;
  #doc
    Инициализация импорта
  #end
  Function IMPORT_INIT(wnmfile:string) :boolean;
  #doc
   сохранить запись
  #end
  Function UpdateCurrent(wnmtable:string) :boolean;
  #doc
   Добавить чистую запись
  #end
  Function InsertCurrent(wnmtable:string) :boolean;  
  #doc
    Возвращает валидатор.
  #end
  function GetValidator: IDir_ExpImp;
end;
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Галактика vs DIRECTUM

Сообщение savov »

edward_K писал(а):настройки в директуме реализованы согласно их требований к интеграции систем с добавлением соотв.функций.
+ реализация обработки вызовов в галактике, вплоть до просмотра документа(для примера сделал для 4)
Словарь + описание документов грузится из галки.
Таблица любая за счет генерации отчета (находу генерится и выполняется - все поля льются в TEMPDESCR) - для первасива, либо прямым запросом(mssql oracle) либо объектным фейсом - для выгрузки документов со спецификацией.
Обработка документов реализована через объекты(ест Директум получает описание всех подключенных )
edward_k, нас сейчас сильно интересует данная тема.
Не могли бы выслать в личку подробное описание технологии?
Что настраивали на Галактике, что в Директуме? Ставился ли в Директуме коннектор?
Буду очень благодарен.
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Галактика vs DIRECTUM

Сообщение savov »

EvilWish писал(а):Хочу представить вариант на эту тему.
Скачал, попробовал собрать. Требуется файл atlcom.vih. В поставке не нашел. Где его можно взять?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Галактика vs DIRECTUM

Сообщение edward_K »

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

Код: Выделить всё

//-------------------------------------------------------------------
//--- Copyright(c) 2001 by Galaktika Corporation                  ---
//--- Этот файл автоматически генерируется для использования      ---
//--- COM интерфейсов из Атлантиса. Править этот файл запрещается ---
//--- так как это может привести к неработоспособности системы    ---
//-------------------------------------------------------------------
#ifndef __atlcom__
#define __atlcom__

#Component ""

#include IDynamicCast.vih

//--- Forwards declarations --------------

ObjInterface comIUnknown; forward;
ObjInterface comIDispatch; forward;
ObjInterface comIEnumVARIANT; forward;
ObjInterface comIFont; forward;
ObjInterface comFont; forward;
ObjInterface comIPicture; forward;
ObjInterface comPicture; forward;
ObjInterface comFontEvents; forward;

//--- Types definition  ------------------

type HRESULT    // #docl Результат работы функции. </brief>
                = longint;

type GUID // #docl Глобальный Уникальный Идентификатор. </brief> <br> В Com-модели - основной идентификатор интерфейса. 
    = record 
      Data1 : longint;
      Data2 : word;
      Data3 : word;
      Data4 : comp;
end;

type DISPPARAMS // #docl В COM-модели используется IDispatch::Invoke для хранения аргументов, передаваемых в метод или свойство. </brief>
    = record
      rgvarg : pointer;            // VARIANT*
      rgdispidNamedArgs : pointer; // longint* 
      cArgs : longint; 
      cNamedArgs : longint; 
end;

type EXCEPINFO // #docl Содержит информацию об исключении работы метода COM-модели IDispatch::Invoke. </brief>
    = record
      wCode : word;
      wReserved : word;
      bstrSource : string;
      bstrDescription : string;
      bstrHelpFile : string;
      dwHelpContext : longint;
      pvReserved : pointer; // void*
      pfnDeferredFillIn : pointer; // void*
      scode : HRESULT;
end;

type OLE_TRISTATE // #docl True -1, False  0, UseDefault -2. </brief>
                  = longint;

const
  Unchecked = -1; 
  Checked = 0; 
  Gray = 1; 
end;

type LoadPictureConstants   // #docl Документация отсутствует. </brief>
                            = longint;
const
  Default = -1; 
  Monochrome = 0; 
  VgaColor = 1; 
  Color = 2; 
end;

type OLE_COLOR  // #docl  Дополнительная информация отсутствует. </brief> 
                = longint;

type OLE_XPOS_PIXELS    // #docl  Положение по горизонтали в пикселях. </brief> 
                        = longint;

type OLE_YPOS_PIXELS    // #docl  Положение по вертикали в пикселях. </brief> 
                        = longint;

type OLE_XSIZE_PIXELS   // #docl  Размер по горизонтали в пикселях. </brief> 
                        = longint;

type OLE_YSIZE_PIXELS   // #docl  Размер по вертикали в пикселях. </brief> 
                        = longint;

type OLE_XPOS_HIMETRIC  // #docl  Векторное положение по горизонтали. </brief> 
                        = longint;

type OLE_YPOS_HIMETRIC  // #docl  Векторное положение по вертикали. </brief> 
                        = longint;

type OLE_XSIZE_HIMETRIC // #docl  Векторный размер по горизонтали. </brief> 
                        = longint;

type OLE_YSIZE_HIMETRIC // #docl  Векторный размер по вертикали. </brief> 
                        = longint;

type OLE_XPOS_CONTAINER // #docl  Дополнительная информация отсутствует. </brief> 
                        = single;

type OLE_YPOS_CONTAINER // #docl  Дополнительная информация отсутствует. </brief> 
                        = single;

type OLE_XSIZE_CONTAINER// #docl  Дополнительная информация отсутствует. </brief>  
                        = single;

type OLE_YSIZE_CONTAINER// #docl  Дополнительная информация отсутствует. </brief>  
                        = single;

type OLE_HANDLE         // #docl  Handle объекта. </brief> 
                        = longint;

type OLE_OPTEXCLUSIVE   // #docl  Эксклюзивная работа с объектом. </brief> 
                        = boolean;

type OLE_CANCELBOOL     // #docl  Дополнительная информация отсутствует. </brief>  
                        = boolean;

type OLE_ENABLEDEFAULTBOOL // #docl  Дополнительная информация отсутствует. </brief>  
                        = boolean;

type FONTNAME           // #docl  Имя шрифта. </brief>  
                        = string;

type CURRENCY           // #docl  Единица измерения. </brief>
                        = comp;

type FONTSIZE           // #docl  Размер шрифта. </brief>
                        = CURRENCY;

type FONTBOLD           // #docl  Признак жирного шрифта. </brief>  
                        = boolean;

type FONTITALIC         // #docl  Признак курсивного шрифта. </brief>  
                        = boolean;

type FONTUNDERSCORE     // #docl  Признак подчеркнутого шрифта. </brief>  
                        = boolean;

type FONTSTRIKETHROUGH  // #docl  Признак перечеркнутого шрифта. </brief>  
                        = boolean;

ObjInterface IFontDisp; forward;
ObjInterface IPictureDisp; forward;
ObjInterface IFontEventsDisp; forward;

//--- Object Interfaces ------------------

/*============================================================================================================*/
ObjInterface comIUnknown;
// #docl Базовый интерфейс IUnknown. </brief> <br> Предоставляет доступ к базовым функциям наследников интерфейса.
  function OpenInWindow // #docl Активизация объекта в окне. </brief> <br> Используется автоматически формируемый заголовок (например, 'Excel - Document1'). При закрытии окна объект получает фокус.
                        : Boolean; // #docl Возвращает true в случае успешного завершения. </brief>
  property COMOptions   // #docl Получить флаги. </brief>
                        : LongInt Read Write; // #docl Возвращает текущие значения флагов. </brief>
  property COMHandle    // #docl Получить handle объекта. </brief>
                        : LongInt Read; // #docl Возвращает handle объекта. </brief>
  property COMDispatch  // #docl Возвращает handle интерфейса IDistapch. </brief>
                        : LongInt Read;  // #docl Handle интерфейса IDistapch. </brief>
end;                                        

VipInterface vcomIUnknown implements comIUnknown, IDynamicCast licensed(free);
// #docl Интерфейс, реализующий comIUnknown. </brief> Служебный объект, создавать запрещается !!! 
public:
  constructor CreateQI// #docl Создает экземпляр интерфейса. </brief>
                      ( iComHandle       // #docl Код экземпляра. </brief>
                      : longint; flags   // #docl Свойства экземпляра. </brief>
                      : word );
  destructor  Done // #docl Выполняет работу по завершению работы интерфейса. </brief>
                 ;
end;
/*============================================================================================================*/
ObjInterface comIDispatch( comIUnknown );
// #docl Интерфейс IDispatch. </brief>
end;

VipInterface vcomIDispatch( vcomIUnknown ) implements comIDispatch;
// #docl Интерфейс, реализующий comIDispatch. </brief> Служебный объект, создавать запрещается !!! 
/*============================================================================================================*/
ObjInterface comIEnumVARIANT( comIUnknown );
// #docl Интерфейс IEnumVARIANT. </brief>
end;

VipInterface vcomIEnumVARIANT( vcomIUnknown ) implements comIEnumVARIANT;
// #docl Интерфейс, реализующий comIEnumVARIANT. </brief> Служебный объект, создавать запрещается !!! 
/*============================================================================================================*/
ObjInterface comIFont( comIUnknown );
// #docl Font Object. </brief>
end;

VipInterface vcomIFont( vcomIUnknown ) implements comIFont;
// #docl Интерфейс, реализующий comIFont. </brief> Служебный объект, создавать запрещается !!! 
/*============================================================================================================*/
ObjInterface comFont( comIDispatch );
// #docl Интерфейс comFont. </brief>
end;

VipInterface vcomFont( vcomIDispatch ) implements comFont;
// #docl Интерфейс, реализующий comFont. </brief> Служебный объект, создавать запрещается !!! 
/*============================================================================================================*/
ObjInterface comIPicture( comIUnknown );
// #docl Picture Object. </brief>
end;

VipInterface vcomIPicture( vcomIUnknown ) implements comIPicture;
// #docl Интерфейс, реализующий comIPicture. </brief> Служебный объект, создавать запрещается !!! 
/*============================================================================================================*/
ObjInterface comPicture( comIDispatch );
// #docl Интерфейс comFont. </brief>
end;

VipInterface vcomPicture( vcomIDispatch ) implements comPicture;
// #docl Интерфейс, реализующий comPicture. </brief> Служебный объект, создавать запрещается !!! 
/*============================================================================================================*/
ObjInterface comFontEvents( comIDispatch );
// #docl Event interface for the Font object </brief>
end;

VipInterface vcomFontEvents( vcomIDispatch ) implements comFontEvents;
// #docl Интерфейс, реализующий comFontEvents. </brief> Служебный объект, создавать запрещается !!! 
/*============================================================================================================*/
ObjInterface IFontDisp( comFont );
// #docl Display inderface for the Font interface. </brief>
end;

VipInterface vIFontDisp( vcomFont ) implements IFontDisp;
// #docl Интерфейс, реализующий IFontDisp. </brief> Служебный объект, создавать запрещается !!! 
/*============================================================================================================*/
ObjInterface IPictureDisp( comPicture );
// #docl Интерфейс IPictureDisp. </brief>
end;

VipInterface vIPictureDisp( vcomPicture ) implements IPictureDisp;
// #docl Интерфейс, реализующий IPictureDisp. </brief> Служебный объект, создавать запрещается !!! 
/*============================================================================================================*/
ObjInterface IFontEventsDisp( comFontEvents );
// #docl Интерфейс IFontEventsDisp. </brief>
end;

VipInterface vIFontEventsDisp( vcomFontEvents ) implements IFontEventsDisp;
// #docl Интерфейс, реализующий IFontEventsDisp. </brief> Служебный объект, создавать запрещается !!! 
/*============================================================================================================*/
#endif
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Галактика vs DIRECTUM

Сообщение savov »

Спасибо, edward_K!
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Галактика vs DIRECTUM

Сообщение savov »

А рано я радовался!
Требуется теперь IDynamicCast.vih. Пробую закомментить, не получается, исходник начинает требовать объявленный в vih фейс.
Что это за вихи вообще? Атлантис?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Галактика vs DIRECTUM

Сообщение edward_K »

он самый

Код: Выделить всё

#ifndef _IDynamicCast_vih_
#define _IDynamicCast_vih_

#Component ""

/*
 Интерфейс : IDynamicCast
 Предназначение : Для динамического приведения типа.
 Разработал : Романов М.В.
*/

ObjInterface IDynamicCast;
// #docl Системный предопределенный интерфейс динамического приведения типа. </brief> <br> Динамическое приведение реализуется через вызов функции QueryInterface данного интерфейса.
  function QueryInterface // #docl Динамическое приведение. </brief> <br> Происходит при попытке приведения ссылки к неимплементированному через implements Obj-интерфейсу.
                            (strObjName // #docl имя OBJ-интерфейса </brief> <br> к которому пытаемся приводиться (требуемая функциональность).
                                        : String) : ObjRef; // #docl Возвращает ссылку на obj-интерфейс </brief> <br> которому делегируется выполнение или NullRef, если приведение невозможно.
End;

#endif
sth73
Постоянный гость
Сообщения: 52
Зарегистрирован: 29 ноя 2005, 19:47

Re: Галактика vs DIRECTUM

Сообщение sth73 »

Все эти вихи есть в дистрибутиве випера по пути Viper\bin\5.х.х.х\Source\SysObjIfc
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: Галактика vs DIRECTUM

Сообщение Алексей »

Тоже озадачился интеграцией пары справочников. Ссылки из шапки темы мёртвые... Где можно подробнее почитать о связке через COM объекты директума?
Ответить