В рамках Лоцман WF и используемой им TMS Scripter 7.18.

При попытке использования следующей конструкции (при нажатии отмена на блоке выбора пользователей из списка (function GetUserList) пытаюсь вернуть задание этому же исполнителю) выдает ошибку (list index out of bounds (-1) when evaluating instruction CallProc ($FFFFFFFFF...…..)), хотя используется как автооперация, в справке написано, что должен возвращать значение -1 при этом. При установке >= 0 все отрабатывет, но это для обработчиков, а моя автооперация будет использоваться как обычная автооперация на схеме, укажите пожалуйста на ошибку.

 

if not result then 

   begin

   showmessage('Для завершения операции необходимо назначить исполнителя следующей стадии')     

begin    

  if Route.inAssignedStageindex-1 then

  begin                        

    CurStage:=Route.Stage(Route.inAssignedStageIndex);

  end   

                if Stage.stState = 'psExamined' then

                begin

                 Stage.SetState('psNone')

                         Route.Save;     

                         Stage.SetState('psConsider')                             

                         Route.Save;     

                  Stage.SetState('psExamined')

                  Route.Save;    

                  end;

                                     

end;

Нравится

1 комментарий

Обратите внимание, что Вы используете другой программный продукт, никак не связанный с тем, которому посвящён этот форум. Лучше будет обратиться к специалистам по упомянутой Вами программе, например, к автору следующего сайта.

Показать все комментарии

Добрый день. Захотелось попробовать создавать свои компоненты для TS CRM. Для разработки использую Delphi 7 и TS CRM 3.3.2. Создал свой COM объект подключил интерфейсы IWindowComponent, ICoreCollectionItem, ICoreObject. Указал родительский интерфейс для своего компонента IWindowComponent. Скомпилировал, зарегистрировал dll. Добавил компонент в файл WindowSettings.xml. В результате после создания окна в Администраторе TS появился мой компонент,
но при попытки добавить его в дерево объектов возникает ошибка:
Объект MyComponent.MyComponent ({095C50B4-37FD-4653-9ECE-6D8D9C718AD8}) не поддерживает интерфейс {12498E9F-2F20-4491-AAF8-F258E72BEF5B} ({12498E9F-2F20-4491-AAF8-F258E72BEF5B}).
Был бы очень благодарен если бы подсказали в чем может быть ошибка или дали ссылку на простейший пример разработки компонентов для TS.

Нравится

40 комментариев

Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.

Добрый день. А можно узнать когда примерно Ваш специалист проконсультирует меня ?:smile:

Добрый день!

Обращение находится в департаменте разработки, решение вопроса будет предоставлено до 03.02.2014.

Спасибо Арсений. Буду ждать.

Добрый день, Сергей!

По этой ссылке статья о работе с оконными компонентами в Terrasoft: Работа с окнами (Window)
Проверьте пожалуйста, все ли обязательные поля вы определили в своем компоненте?
Так же необходимо проверить правильно ли объявлен класс компонента, вот пример:

  TCalculatorControl = class(TFrameItem, ICalculatorControl, IConnectionPointContainer)

Вы создаёте элемент управления или оконный компонент?

С ув. Величко Максим, разработчик Terrasoft 3.x

Здравствуйте Максим. Спасибо за ссылку, но работать с компонентами Terrasoft я умею.
В классе компонента интерфейсы я объявил по примеру компонентов Terrasoft.
Свойства я унаследовал от IWindowComponent.
Я пробовал создавать и элементы управления и оконный компонент.
Не понятно, что это за интерфейс {12498E9F-2F20-4491-AAF8-F258E72BEF5B}, в реестре системы он не зарегистрирован.
Пробовал создавать компонент на С# та же история.
Был бы очень благодарен за простейший пример на любом языке программирования, можно создания пустого компонента.

Добрый день, Сергей!

{12498E9F-2F20-4491-AAF8-F258E72BEF5B} - это ID интерфейса IInternalWindowComponent
Попробуйте подключить этот интерфейс, он реализован в библиотеке TSWindowLibrary.dll

Спасибо Максим. Я попробую.

Добрый день, Сергей!

Хочу поинтересоваться как у Вас успехи с компонентом? Получилось ли добавить его в дерево? Ошибка исчезла?

Здравствуйте Максим. К сожалению у меня не получилось. При подключении интерфейса IInternalWindowComponent, пишет что необъявленный идентификатор.

TMyComponent = class(TAutoObject, IMyComponent, ICoreCollectionItem, ICoreObject, IWindowComponent, IInternalWindowComponent)

У меня такое ощущение, что я пошел не в том направлении, наверно все сложнее чем мне показалось на первый взгляд. Без явного примера с одним TLB файлом тяжело реализовать компонент. Будет свободное время продолжу попытки:smile:

Спасибо за помощь.

Сергей, если что - обращайтесь!

Дмитрий, Вы можете выложить пример на Delphi для создания простого оконного компонента? Это очень актуально.

Евгений, я передал Вашу просьбу разработчикам.

Спасибо!
Жду.

Это действительно актуально. У меня есть много полезных COM библиотек, написаных на разных языках, в том числе и для телефонии, все они прекрасно работаю в Террасофт, но хотелось бы сделать их компонентами системы.
Дмитрий если разработчики согласятся выложить простейший пример создания компонента на любом из языков программирования, прошу Вас сообщить мне :smile:.

Добрый день!

Вот пример создания COM-контрола FloatDataControl:

Объявление класса контроал

  TFloatDataControl = class(TDataControl, IFloatDataControl,
    IDataControl, IBaseDataControl, IFrameItem, IFrameBaseItem,
    IWindowControl, IWindowComponent, ICoreCollectionItem, ICoreObject,
    IInternalControlWithButtons)
    ...
  protected
    function Get_Buttons(): IActionMenu; safecall;
    procedure Set_Buttons(const AValue: IActionMenu); safecall;
    function Get_ButtonsName(): WideString; safecall;
    procedure Set_ButtonsName(const AValue: WideString); safecall;
    ...
  protected
    property Buttons: IActionMenu
      read Get_Buttons write Set_Buttons;
    property ButtonsName: WideString
      read Get_ButtonsName write Set_ButtonsName;
  public
    procedure Initialize(); override;
    destructor Destroy(); override;
  end;

Объявление интерфейса IFloatDataControl

  IFloatDataControl = interface(IDataControl)
    ['{E2B975D4-6C8D-4FCA-8C80-46AB6DCECD36}']
    function Get_Buttons: IActionMenu; safecall;
    procedure Set_Buttons(const Value: IActionMenu); safecall;
    property Buttons: IActionMenu read Get_Buttons write Set_Buttons;
  end;

Определение контрола в IDL-файле

	// ------------------------------------------------------------------
	// ILookupDataControl (2043XX)
	// ------------------------------------------------------------------
	[
		odl,
		uuid(8670BB97-7134-4FED-A3E8-79EE08E25B6F),
		version(1.0),
		helpstring("Dispatch interface for LookupDataControl Object"),
		dual,
		oleautomation
	]
	interface ILookupDataControl : IDataControl {
		[id(204301), propget]
		HRESULT SelectWindowUSI([out, retval] BSTR* Value);
		[id(204301), propput]
		HRESULT SelectWindowUSI([in] BSTR Value);
 
		[id(204302)]
		HRESULT UnprepareDropDownList();
 
		[id(204303), propget]
		HRESULT Buttons([out, retval] IActionMenu** Value);
		[id(204303), propput]
		HRESULT Buttons([in] IActionMenu* Value);
 
		[id(204304), propget]
		HRESULT Text([out, retval] BSTR* Value);
	};

Максим извините, но разве TFloatDataControl не должен наследовать TAutoObject?

Добрый день, Сергей!

Всё верно, просто в данном примере указно наследование от TDataControl, который по иерархии наследования, наследует TAutoObject.

Так же необходимо в секции initialization добавить следующий код:

initialization
  CoInitialize(nil);

Спасибо Максим. Буду пробовать.

У меня похожая ситуация, создаю компонент для добавления его в дерево сервисов. При добавлении выдает: "Object doesn't support interface {BFA833D5-0868-426E-AABE-05C0D5AFA5D0}". Это что за интерфейс?

К сожалению мне так и не удалось полноценно внедрить компонент. Было бы не плохо если бы выложили бы подробный пример создания компонента террасофт.

Добрый день, Алексей!

{BFA833D5-0868-426E-AABE-05C0D5AFA5D0} - это ID интерфейса IInternalService.

Приятного дня!

"Вильшанский Дмитрий" написал:{12498E9F-2F20-4491-AAF8-F258E72BEF5B} - это ID интерфейса IInternalService.

В принципе это и так было понятно из сообщения об ошибки.:smile:

Это какой то скрытый интерфейс?
В TSObjectLibrary его нет...
Есть какая нибудь tlb с этими внутренними интерфейсами?

"Шмитько Алексей Анатольевич" написал:

Это какой то скрытый интерфейс?

В TSObjectLibrary его нет...

Есть какая нибудь tlb с этими внутренними интерфейсами?

Алексей, это внутренний интерфейс и он находится в библиотеке TSObject.bpl

"Вильшанский Дмитрий" написал:Алексей, это внутренний интерфейс и он находится в библиотеке TSObject.bpl

Эта библиотека простым смертным недоступна, я так понимаю?
У меня версия 3.3.2.157

Алексей, данная библиотека доступна в бинарных файлах. Ее просто необходимо подключить/добавить.

В общем для разработки это не годится :(

Не получается подгрузить TSObject.bpl, т.к конфликтует с rtl70.bpl. C динамической подгрузкой тоже ничего не получилось. Использую Delphi 7.

Я так понимаю, что TSObject.bpl это run-time пакет и просто так его не подключить хотелось бы получить инструкцию как его подключать.

У меня вообще эти интерфейсы находятся в TSObjectLibrary.dll. Это "служебные" интерфейсы для разработчиков. Я просто взял и добавил в своей Type Lib недостающий интерфейс с ID из ошибки.
И он перестал ругаться :)
Но дальше пока не стал копать.

Ну я думаю еще пару лет и Мы осилим:smile:

Здравствуйте.
Пишите, если возникнут вопросы.

Я то конечно пишу, а толку? За 2 года не получил полезной информации. Сначала пишут одно потом другое.

"Перонко Сергей Сергеевич" написал:Я то конечно пишу, а толку? За 2 года не получил полезной информации. Сначала пишут одно потом другое.

100%

"Котенко Александр" написал:Здравствуйте.
Пишите, если возникнут вопросы.

Вопросы есть :)
Вы сотрудник компании Terrasoft? Если да, то можно ли получить модуль с объявлением Internal интерфейсов?

Здравствуйте.
Исходные файлы внутренней реализации кода закрыты. Мы можем предоставить idl-файл (во вложении), в котором описаны доступные интерфейсы библиотеки TSObjectLibrary.dll. Если возникнут сложности - прикрепите пример своего компонента чтобы можно было понять в чем проблема.

Извините, но зачем предоставлять idl файл который я и так могу получить из TSObjectLibrary.dll.
Проблема заключается в том что для разработки необходимо подключить пакет TSObject.bpl. Это не возможно сделать т.к. скорей всего это run-time пакет. А необходимый интерфейс находится именно в этом пакете. Я конечно не исключаю пробелы в знаниях делфи, поэтому прикрепляю свой компонент.

:lol:
Вы или не поняли тематику данной проблемы или издеваетесь )))
Могли бы изначально написать, что ваша компания запрещает создание компонентов, которые можно интегрировать в конфигурацию в Terrasoft Administrator. И всё.
Если Вас не затруднит, то предоставьте пожалуйста пример разработки компонента, который можно добавить в конфигурацию как показано ниже.

"Шмитько Алексей Анатольевич" написал:

:lol:

Вы или не поняли тематику данной проблемы или издеваетесь )))

Могли бы изначально написать, что ваша компания запрещает создание компонентов, которые можно интегрировать в конфигурацию в Terrasoft Administrator. И всё.

Если Вас не затруднит, то предоставьте пожалуйста пример разработки компонента, который можно добавить в конфигурацию как показано ниже.


Нет издевательство было когда я написал в тех поддержку можно ли программно менять курсор мыши в террасофт на, что мне ответили "поменять его в в настройках системы windows" .

Здравствуйте!
Те компоненты, о которых Вы пишете не реализуются на уровне конфигурации. Это сугубо ядровая логика

Показать все комментарии

Добрый день! Подскажите пожалуйста где можно найти бесплатную COM библиотеку интеграции с Asterisk. нашел VaxSIPUserAgentSDK но она как я понял платная. Если кто делал интеграцию подскажите может легче самому написать на Delphi COM библиотеку???

Нравится

13 комментариев

Спасибо! Вот еще бы SDK на русском языке было бы отлично или примеры.

Как я припоминаю, там на английском...

--
www.it-sfera.com.ua

По тем ссылкам которые вы мне дали на русском. Но в них описываются общие принципы интеграции а хотелось бы примеры с конкретной библиотекой. например SipXtapi. список ее функций.

Собственно отпишусь....

Интеграция которая пишется нами уже в финальной стадии, найдено много нюансов....

По заверениям наших разработчиков финал в течении пары недель..:cool:

Александр Ярмоленко
Лайнсервис
http://www.ls-crm.ru

Сколько будет стоить ваш продукт? Есть ли демо версия?

"alexsandr yarmolenko" написал:Интеграция которая пишется нами уже в финальной стадии, найдено много нюансов....

По заверениям наших разработчиков финал в течении пары недель..

Александр,

Завершены ли работы по интеграции? Если да то итог - модуль интеграции или проектное решение?

Евгений Либин писал свою библиотеку и даже у него есть SoftPhone для Террасофт, я смотрел демоверсию в принципе есть небольшие претензии, НО в целом работоспособное решение, мы его пробовали в связке с Asterisk. Где-то толи в его блоге, то ли на форуме, щас искать нет времени есть описание.

В принципе если у кого-то есть готовое решение для интеграции звонков в террасофт через SIP-протокол могу поучавствовать в тестировании и при положительном исходе юзабилити - купить.

Есть ли на текущий момент, кем-то реализованный модуль интеграции Terrasoft 3.4. с Asterisk?

Добрый день!
На текущий момент подобного решения не было.

Добрый день!
На текущий момент подобного решения не было.

Как вариант, можете посмотреть на наше новое решение: http://wiki.webitel.com/0/Terrasoft_Webitel_CallManager

Простое лицензирование, схожая платформа с Asterisk...
Можно пользователей Terrasoft подключить к нашему продукту, а все остальные и дальше будут работать под Asterisk. Все настройки IVR и маршрутизации сохраняться под Asterisk.

Сейчас будет открытое beta-тестирование

Показать все комментарии