1. Вызов окна из скрипта самого окна 1




Дата31.08.2016
Размер93.5 Kb.
How TODO in Terrasoft CRM 3.0

Содержание



1. Вызов окна из скрипта самого окна 1

2. Логирование сообщений 1

2.1. Вывод сообщений в лог 1

2.2. Вывод активного действия в лог 1

3. Создание соединения с системой 2

3.1. Создание соединения для конкретного пользователя 2

3.2. Соединение с вызовом формы логина 3

4. Импорт данных в Excel из Terrasoft CRM 3.0 4

5. Создание COM объекта и вызов COM объекта из скрипта 5

6. Экспорт данных из Terrasoft CRM 3.0 в Excel 5

7. Динамическое создание сервисов 6

8. Обновление грида детали раздела 6

9. Экспорт данных из Excel в Terrasoft CRM 3.0 7




1.Вызов окна из скрипта самого окна


Для вызова окна необходимо добавить в текст скрипта следующую функцию Main в которой указать имя требуемого окна, после чего нажать F9:

function Main() {

var Window = Services.GetNewItemByUSI('wnd_TestWindow');

Window.IsDesigning = false;

Window.Prepare();

Window.Show();

}

2.Логирование сообщений

2.1.Вывод сообщений в лог


Для вывода сообщений в лог системы можно воспользоваться методом объекта Log.Write(). Для использования констант необходимо в скрипт включить модуль scr_SysEnums

function Main() {

Log.Write(lmtInformation, 'Information Text');

Log.Write(lmtWarning, 'Warning Text');

Log.Write(lmtError, 'Error Text');

}

2.2.Вывод активного действия в лог


Вывод сообщений можно эффективно дополнить функцией вывода активного сообщения. Активное сообщение позволяет не только вывести информацию, но и произвести соответсвующее действие пользователем. Для этого необходимо воспользоваться методом объекта Log.WriteAction(). Например, следующее действие открывает дизайнер сервиса Select Query 'sq_Opportunity':

function Main() {

Log.Write(lmtError, 'Error In Service sq_Opportunity');

Log.WriteAction('Edit', 'Edit sq_Opportunity',

'function Main() {' +

' Designers = Core.DesignerCore.Designers;' +

' Designers.DesignServiceByUSI("sq_Opportunity", "", false);' +

'}');


}

Данный метод можно активно использовать для создания интуитивно понятных сообщений, наподобие таких: 'Если вы хотите отредактировать сервис sq_Opportunity нажмите на «Редактировать», если хотите удалить, нажмите на «Удалить», хотите создать новый, нажмите «Создать»'.


3.Создание соединения с системой

3.1.Создание соединения для конкретного пользователя


Для создания соединения необходимо создать объект "TSObjectLibrary.Connector" и вызвать его метод OpenConfiguration:

function OpenConfiguration(const Configuration: IConfiguration;

const UserName: WideString; const UserPassword: WideString): WordBool;

Пример создания соединения из Excel:

Sub Macro1()

Dim Connector

Dim Configuration

Dim Window

Set Connector = CreateObject("TSObjectLibrary.Connector")

Set Configuration = Connector.Configurations.ItemsByName("TSCRM")

If (Not Connector.OpenConfiguration(Configuration, "Supervisor", "")) Then

Exit Sub


End If

Set Window = Connector.Services.GetNewItemByUSI("wnd_TestWindow")

Window.WindowCaption = "Test Caption"

Window.Prepare

Window.ShowModal

End Sub


Для вызова из Delphi:

unit Unit1;


interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, TSObjectLibrary_TLB, StdCtrls;
type

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }



public

{ Public declarations }

end;
var

Form1: TForm1;


implementation
{$R *.dfm}
uses

TSWindowLibrary_TLB, ComObj;


procedure TForm1.Button1Click(Sender: TObject);

var


//Value: OleVariant;

Connector: IConnector;

Configuration: IConfiguration;

Service: IService;

Window: IWindow;

begin


{Value := CreateOleObject('TSObjectLibrary.Connector');

if (not Supports(Value, IConnector, Connector)) then

begin

Exit;


end;}

Connector := CoConnector.Create();

Configuration := Connector.Configurations.ItemsByName['TSCRM'];

if (not Connector.OpenConfiguration(Configuration, 'Supervisor', '')) then

begin

Exit;


end;

Service := Connector.Services.GetNewItemByUSI('wnd_Customer');

if (not Supports(Service, IWindow, Window)) then

begin


Exit;

end;


Window.Prepare();

Window.ShowModal();

end;
end.

3.2.Соединение с вызовом формы логина


Для создания соединения с вызовом формы логина необходимо создать объект "TSDskObjectLibrary.DskConnector" и вызвать его метод Login:

function Login(const ApplicationName: WideString): WordBool;

Пример создания соединения с вызовом формы из Excel:

Sub Macro1()

Dim Connector

Dim Window

Set Connector = CreateObject("TSDskObjectLibrary.DskConnector")

If (Not Connector.Login("Test Application")) Then

Exit Sub

End If


Set Window = Connector.Services.GetNewItemByUSI("wnd_TestWindow")

Window.WindowCaption = "Test Caption"

Window.Prepare

Window.ShowModal

End Sub

Для Delphi:



unit Unit1;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, TSObjectLibrary_TLB, StdCtrls;
type

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }



public

{ Public declarations }

end;
var

Form1: TForm1;


implementation
{$R *.dfm}
uses

TSWindowLibrary_TLB, TSDskObjectLibrary_TLB, ComObj;


procedure TForm1.Button1Click(Sender: TObject);

var


Connector: IDskConnector;

Configuration: IConfiguration;

Service: IService;

Window: IWindow;

begin

Connector := CoDskConnector.Create();



if (not Connector.Login()) then

begin


Exit;

end;


Service := Connector.Services.GetNewItemByUSI('wnd_Customer');

if (not Supports(Service, IWindow, Window)) then

begin

Exit;


end;

Window.Prepare();

Window.ShowModal();

end;
end.


4.Импорт данных в Excel из Terrasoft CRM 3.0


Sub ImportContacts()

Dim Connector

Dim Configuration

Set Connector = CreateObject("TSObjectLibrary.Connector")

Set Configuration = Connector.Configurations.ItemsByName("TSCRM")

If (Not Connector.OpenConfiguration(Configuration, "Supervisor", "")) Then

Exit Sub

End If


Dim Dataset

Set Dataset = Connector.Services.GetNewItemByUSI("ds_Contact")

Dim Sheet As Worksheet

Dataset.Open

Set Sheet = ActiveSheet

i = 2


Sheet.Cells(1, 1) = "Name"

Sheet.Cells(1, 2) = "Address"

While Not Dataset.IsEOF

Sheet.Cells(i, 1) = Dataset.ValAsStr("Name")

Sheet.Cells(i, 2) = Dataset.ValAsStr("Address")

Dataset.GotoNext

i = i + 1

Wend


Dataset.Close

End Sub

5.Создание COM объекта и вызов COM объекта из скрипта


1) Для создания COM объекта необходимо в Delphi создать проект (меню File  New  Other…  Закладка ActiveX  ActiveX Library ) и сохранить его с именем «TestComObject».

2) В проект добавляем объект автоматизации (меню File  New  Other…  Закладка ActiveX  ActiveX Library  Automation Object), вводим CoClassName «Test».

3) В редакторе библиотеки типа в интерфейсе ITest добавляем метод «MsgBox» с параметром Name = Message, Type = WideString.

Добавляем в раздел implementation модуль Dialogs:

implementation
uses ComServ, Dialogs;

А в тело метода MsgBox добавляем вызов функции ShowMessage:

procedure TTest.MsgBox(const Message: WideString);

begin


ShowMessage(Message);

end;


Сохраняем модуль объекта в файле Test.pas

4) Регистрируем библиотеку (меню Run  Register ActiveX Server).

5) Для вызова COM объекта необходимо создать произвольный сервис скрипта и добавить в текст скрипта следующую функцию Main, после чего нажать F9:

function Main() {

var TestObject = System.CreateObject('TestComObject.Test');

TestObject.MsgBox('Test Message');

}

6.Экспорт данных из Terrasoft CRM 3.0 в Excel


Для экспорта данных в Excel необходимо создать ActiveXObject с именем 'Excel.Application', затем создать Excel-книгу (Workbook) и вывести данные в соответствующие столбцы:

function btnExportToExcelOnClick(Control) {

var ExcelApplication = new ActiveXObject('Excel.Application');

var WorkBook = ExcelApplication.WorkBooks.Add();

var Sheet = WorkBook.ActiveSheet;

var Dataset = dlCustomer.Dataset;

Dataset.DisableEvents();

try {


for (var i = 0; i < Dataset.Datafields.Count; i++) {

var Datafield = Dataset.Datafields.Items(i);

Sheet.Cells(1, i + 1) = Datafield.Name;

}

var i = 2;



var IDField = Dataset.Datafields.ItemsByName('ID');

var NameField = Dataset.Datafields.ItemsByName('Name');

var AddressField = Dataset.Datafields.ItemsByName('Address');

var BalanceField = Dataset.Datafields.ItemsByName('Balance');

Dataset.GotoFirst();

while (!Dataset.IsEOF) {

Sheet.Cells(i, 1) = IDField.Value;

Sheet.Cells(i, 2) = NameField.Value;

Sheet.Cells(i, 3) = AddressField.Value;

Sheet.Cells(i, 4) = BalanceField.Value;

Dataset.GotoNext();

i = i + 1;

}

} finally {



Dataset.EnableEvents();

}

Sheet.Cells.Select();



Sheet.Cells.EntireColumn.AutoFit();

Sheet.Range('A2').Select();

ExcelApplication.Visible = true;

}

7.Динамическое создание сервисов


Для экспорта данных в Excel необходимо создать ActiveXObject с именем 'Excel.Application', затем создать Excel-книгу (Workbook) и вывести данные в соответствующие столбцы:

function btnExportToExcelOnClick(Control) {

.. TODO

8.Обновление грида детали раздела


Пример: необходимо после создания задачи для указанного проекта обновить делать «задачи проекта».

Для обновление грида детали раздела необходимо изменить в скрипте карточки задачи scr_TaskEdit метод btnOKOnClick() (вставленный код выделенный жирным шрифтом) и добавить в скрипт дополнительный модуль (Inclusions  Script) scr_DB:

function btnOKOnClick(Control) {

var Dataset = dlData.Dataset;

var IsFinished = GetTaskStatusIsFinishByID(Dataset.Values('StatusID'));

var WorkflowItemID = Dataset.Values('WorkflowItemID');

var MadeByWorkflow = (WorkflowItemID != null);

if (IsFinished && MadeByWorkflow) {

Dataset.DataFields('ResultID').IsRequired = true;

} else {


Dataset.DataFields('ResultID').IsRequired = false;

}

if (!CheckTaskData(Dataset)) {



return;

}

CreateRemindings();



TaskEdit.IsCompleting = true;

try {


var ResultFlag = scr_BaseDBEdit.btnOKOnClick(Control);

}

finally {



TaskEdit.IsCompleting = false;

}

if (Self.IsVisible) {



return;

}

var MainWindow = Connector.Attributes('MainWindow');



var wndWorkspace = MainWindow.ComponentsByName('wndWorkspace');

var WorkspaceWindow = wndWorkspace.Window;

var WorkspaceWindowUSICode = System.ExtractUSICode(WorkspaceWindow.USI);

if (WorkspaceWindowUSICode == 'wnd_OpportunitiesWorkspace')

{

var wndTasksDetail = WorkspaceWindow.ComponentsByName('wndTasksDetail');

var TasksDetailWindow = wndTasksDetail.Window;

var DatasetLink = TasksDetailWindow.ComponentsByName('dlData');

RefreshDataset(DatasetLink.Dataset);

}

var WorkflowItemID = Dataset.ValAsStr('WorkflowItemID');

if ((!TaskEdit.StatusChanged) || (!IsFinished) ||

(IsEmptyGUID(WorkflowItemID))) {

return;

}

var WorkflowEngine = GetAttribute(Connector, 'WorkflowEngine');



if (Assigned(WorkflowEngine)) {

WorkflowEngine.ProcessWorkflowItem(WorkflowItemID);

}

}

9.Экспорт данных из Excel в Terrasoft CRM 3.0


Sub ExportToTSCRM()

Dim Connector

Dim Configuration

Set Connector = CreateObject("TSObjectLibrary.Connector")

Set Configuration = Connector.Configurations.ItemsByName("TSCRM")

If (Not Connector.OpenConfiguration(Configuration, "Supervisor", "")) Then

Exit Sub

End If


Dim Dataset

Set Dataset = Connector.Services.GetNewItemByUSI("ds_Contact")

Dim Sheet As Worksheet

Dataset.Open

Set Sheet = ActiveSheet

Dim MaxRange As Range

Set MaxRange = Selection.End(xlDown)

For Row = 2 To MaxRange.Row

Dataset.Append

Dataset.ValAsStr("ID") = Connector.GenGUID

Dataset.ValAsStr("Name") = Sheet.Cells(Row, 1)

Dataset.ValAsStr("Address") = Sheet.Cells(Row, 2)

Dataset.Post

Next Row


Dataset.Close

End Sub
Исходная таблица данных в Excel






A

B

1

Name

Address

2

Contact1

Address1

3

Contact2

Address2

4

Contact3

Address3

5

Contact4

Address4

6

Contact5

Address5

7

Contact6

Address6

8

Contact7

Address7

9

Contact8

Address8

10

Contact9

Address9

11

Contact10

Address10


База данных защищена авторским правом ©infoeto.ru 2016
обратиться к администрации
Как написать курсовую работу | Как написать хороший реферат
    Главная страница