Добрый день. Захотелось попробовать создавать свои компоненты для 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.
Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.
По этой ссылке статья о работе с оконными компонентами в Terrasoft: Работа с окнами (Window)
Проверьте пожалуйста, все ли обязательные поля вы определили в своем компоненте?
Так же необходимо проверить правильно ли объявлен класс компонента, вот пример:
Здравствуйте Максим. Спасибо за ссылку, но работать с компонентами Terrasoft я умею.
В классе компонента интерфейсы я объявил по примеру компонентов Terrasoft.
Свойства я унаследовал от IWindowComponent.
Я пробовал создавать и элементы управления и оконный компонент.
Не понятно, что это за интерфейс {12498E9F-2F20-4491-AAF8-F258E72BEF5B}, в реестре системы он не зарегистрирован.
Пробовал создавать компонент на С# та же история.
Был бы очень благодарен за простейший пример на любом языке программирования, можно создания пустого компонента.
{12498E9F-2F20-4491-AAF8-F258E72BEF5B} - это ID интерфейса IInternalWindowComponent
Попробуйте подключить этот интерфейс, он реализован в библиотеке TSWindowLibrary.dll
У меня такое ощущение, что я пошел не в том направлении, наверно все сложнее чем мне показалось на первый взгляд. Без явного примера с одним TLB файлом тяжело реализовать компонент. Будет свободное время продолжу попытки:smile:
Это действительно актуально. У меня есть много полезных COM библиотек, написаных на разных языках, в том числе и для телефонии, все они прекрасно работаю в Террасофт, но хотелось бы сделать их компонентами системы.
Дмитрий если разработчики согласятся выложить простейший пример создания компонента на любом из языков программирования, прошу Вас сообщить мне :smile:.
У меня похожая ситуация, создаю компонент для добавления его в дерево сервисов. При добавлении выдает: "Object doesn't support interface {BFA833D5-0868-426E-AABE-05C0D5AFA5D0}". Это что за интерфейс?
У меня вообще эти интерфейсы находятся в TSObjectLibrary.dll. Это "служебные" интерфейсы для разработчиков. Я просто взял и добавил в своей Type Lib недостающий интерфейс с ID из ошибки.
И он перестал ругаться :)
Но дальше пока не стал копать.
Здравствуйте.
Исходные файлы внутренней реализации кода закрыты. Мы можем предоставить idl-файл (во вложении), в котором описаны доступные интерфейсы библиотеки TSObjectLibrary.dll. Если возникнут сложности - прикрепите пример своего компонента чтобы можно было понять в чем проблема.
Извините, но зачем предоставлять idl файл который я и так могу получить из TSObjectLibrary.dll.
Проблема заключается в том что для разработки необходимо подключить пакет TSObject.bpl. Это не возможно сделать т.к. скорей всего это run-time пакет. А необходимый интерфейс находится именно в этом пакете. Я конечно не исключаю пробелы в знаниях делфи, поэтому прикрепляю свой компонент.
:lol:
Вы или не поняли тематику данной проблемы или издеваетесь )))
Могли бы изначально написать, что ваша компания запрещает создание компонентов, которые можно интегрировать в конфигурацию в Terrasoft Administrator. И всё.
Если Вас не затруднит, то предоставьте пожалуйста пример разработки компонента, который можно добавить в конфигурацию как показано ниже.
Вы или не поняли тематику данной проблемы или издеваетесь )))
Могли бы изначально написать, что ваша компания запрещает создание компонентов, которые можно интегрировать в конфигурацию в Terrasoft Administrator. И всё.
Если Вас не затруднит, то предоставьте пожалуйста пример разработки компонента, который можно добавить в конфигурацию как показано ниже.
Нет издевательство было когда я написал в тех поддержку можно ли программно менять курсор мыши в террасофт на, что мне ответили "поменять его в в настройках системы windows" .
Сегодня немного расскажу о новой версии Terrasoft 3.4.0, некоторых ее особенностях по сравнению с предыдущей версией (3.3.2) и о методах перехода с 3.3.2 на 3.4.0.
Новое ядро Terrasoft 3.4.0
Было сделано очень много работы. Некоторые задачи давно уже планировали, некоторые появились по ходу работы. Обо всем рассказать не смогу, остановлюсь только на крупных, наиболее значимых вещах.
Ядро Terrasoft. Все началось с того, что в Delphi 2009 наконец-то появился полноценный, «нативный» юникод. Поэтому было решено перейти с Delphi 7 на последнюю версию, на тот момент это был Delphi 2010. А в процессе перехода появилась следующая версия: Delphi XE, переход на который уже занял несколько дней. И вот релиз Terrasoft 3.4.0 вышел при использовании самой новой версии Delphi. Таким образом значительно упростится переход на следующую версию (Delphi XE2), которая уже поддерживает компиляцию приложений под х64. А с этим уже не за горами и Terrasoft x64.
Главной целью перехода была полная поддержка юникода. Автоматически исправились все ошибки с юникодом в Terrasoft. Теперь при работе с русским языком не обязательно использовать русские региональные настройки, что раньше было обязательным условием. Можно использовать несколько языков для ввода, хранения и отображения информации. Полноценным стало использование юникода в отчетах Fast Report. Появилась возможность запускать Terrasoft используя юникодный логин.
Так как теперь все «родные» компоненты Delphi полностью поддерживают юникод, то стало возможным не использовать промежуточные компоненты, которые приходилось писать поверх стандартных (чтобы обеспечить ввод и отображение юникода). Вследствие этого уменьшилось почти в два раза использование GDI Objects: значение после запуска у 3.3.2 – 1564, 3.4.0 – 881. Также на 30% уменьшилось потребление памяти.
При переходе на новую Delphi решили полностью переписать компонент Layout. В конфигурации он представлен в виде Frame и FrameGroup, а также всех других компонентов, которые его поддерживают: DataGrid, WindowContainer, PageControl и т.д. Именно он управляет автоматическим размещением и выравниванием компонентов на формах. И вместе с этим заново реализована отрисовка ScrollBar в компонентах Terrasoft. Таким образом, исправили большое количество старых ошибок и, благодаря этому, значительно улучшилась отрисовка интерфейса. Лучше всего это можно увидеть при изменении размеров окон, сворачивании/разворачивании главного окна.
В новой версии была произведена оптимизация и переработка библиотек. В библиотеку TSWindowLibrary.dll включена часть TSDskObjectLibrary.dll, полностью вся TSDskWindowLibrary.dll и TSReportLibrary.dll. Пакеты компонентов теперь представлены с помощью: TSCoreComponents.bpl, TSComponentsExtra.bpl, TSComponents.bpl и Terrasoft.bpl. Благодаря этому при работе с не визуальными COM-объектами Terrasoft, подгружается только необходимый минимум: TSObjectLibrary.dll и TSCoreComponents.bpl. Как следствие уменьшилось потребление памяти при работе Service Desk Web-формы.
Переход с Terrasoft 3.3.2
Главным требованием при разработке 3.4.0 было обеспечить полную обратную совместимость с 3.3.2. Поэтому если у вас есть 3.3.2 и вы хотите использовать новое ядро 3.4.0, то это можно сделать максимально быстро. Например, у вас продукт Terrasoft XRM и вы хотите перейти на бинарные файлы 3.4.0.53.
План действия таков:
В таблице tbl_DatabaseInfo меняете используемую версию:
Чтобы перенести все новые конфигурационные функции нужно делать полноценный переход. А это уже нужно делать с помощью пакетов перехода. Новые пакеты перехода всегда делаем по требованию, для этого вам нужно обратиться в техническую поддержку и указать вашу текущую версию, используемый продукт и СУБД. Уже с октября мы начинаем отгружать первые пакеты перехода.
Почти в каждом COM-объекте Terrasoft есть методы по умолчанию. В описании интерфейса эти методы имеют нулевой id. Например, ComponentsByName в IWindow, Values в IDataset или ItemsByName в IDataFields и т.д. А доступ к этим методам выполняется быстрее, если обращаться к ним именно как методам по умолчанию.
Т.е вместо Window.ComponentsByName('EditName') использовать Window('EditName'), вместо Dataset.Values('FieldName') использовать Dataset('FieldName') и т.д.
Для доказательства во вложении два сервиса. В примере тестирование 1 000 000 обращений к компоненту окна двумя способами.
Результаты теста:
через Self.ComponentsByName('Edit'): 12,1 с
через Self('Edit'): 8,1 с
Таким образом использование свойств по умолчанию дает ускорение в 1,5 раза.