Данная функциональность на уровне пользовательских отчетов реализована в версиях 3.3.0 и выше.
В версии 2.8 реализованы выводы отчетов исключительно с помощью FastReport.
Пишем плагин - это заманчиво. Но главный вопрос КАК?
пишем свой плагин (Delphi, VS...) для Terrasoft (поднимаем Руководство по Адаптации для версии 2.8), который реализует вывод данных в Word. Потом обращаемся к нему, когда надо, из скрипта.
Насколько я помню, в 2.8 нельзя создать просто экземпляр Word и воспользоваться его методами для создания документа...
Для создания плагина Вам необходимо написать его в Delphi, сохранить с расширением .dll, затем вызвать в Terrasoft данный плагин на выполнение, передав ему параметры.
Ниже - примеры библиотеки и вызова ее из Terrasoft.
Комментарии
Если у Вас версия начиная с 3.2.0 используйте пользовательские отчеты
Данная функциональность на уровне пользовательских отчетов реализована в версиях 3.3.0 и выше.
В версии 2.8 реализованы выводы отчетов исключительно с помощью FastReport.
Лично я увидел как это делается на одном из вебинаров. И Вам рекомендую. Описание процедуры есть в документации.
У меня версия 2.8. и вывод надо сделать в Word. )))
Ага, вот и версия TS))
Тогда делаем простой отчет и экспортим его в Word.
Путь второй - пишем плагин для вывода в Word.
ООО "Лайнсервис"
www.ls-crm.ru
Экспортим его в Word и все колонки плывут влево/вправо. Пишем плагин - это заманчиво. Но главный вопрос КАК?
можно попробовать вылечить ОЧЕНЬ четкой структурой, разметкой отчета в FastReport
ООО "Лайнсервис"
www.ls-crm.ru
пишем свой плагин (Delphi, VS...) для Terrasoft (поднимаем Руководство по Адаптации для версии 2.8), который реализует вывод данных в Word. Потом обращаемся к нему, когда надо, из скрипта.
Насколько я помню, в 2.8 нельзя создать просто экземпляр Word и воспользоваться его методами для создания документа...
ООО "Лайнсервис"
www.ls-crm.ru
Для создания плагина Вам необходимо написать его в Delphi, сохранить с расширением .dll, затем вызвать в Terrasoft данный плагин на выполнение, передав ему параметры.
Ниже - примеры библиотеки и вызова ее из Terrasoft.
Реализация библиотеки:
library ScriptLibrary;
uses
SysUtils,
Classes,
Dialogs,
Forms,
Controls,
StdCtrls;
{$R *.res}
procedure InputText(var Param: Variant); export;
var
Form: TForm;
Button: TButton;
Edit: TEdit;
Result: Integer;
begin
Form := TForm.Create(nil);
Button := TButton.Create(nil);
Edit := TEdit.Create(nil);
try
Form.Caption := Param[0];
Form.Position := poMainFormCenter;
Button.Top := 50;
Button.Parent := Form;
Button.ModalResult := mrOk;
Button.Caption := 'OK';
Edit.Parent := Form;
Edit.Text := Param[2];
Result := Form.ShowModal;
Param[1] := Result;
if (Result = mrOk) then
Param[2] := Edit.Text;
finally
Edit.Free;
Button.Free;
Form.Free;
end;
end;
exports
InputText name 'InputText';
begin
end.
Пример вызова из скрипта:
var
Param: Variant;
ModuleHandle: Integer;
LibraryFileName: string;
ProcName: string;
begin
LibraryFileName := Format('%sScriptLibrary\%s', [ExtractFilePath(ParamStr(0)), 'ScriptLibrary.dll']);
ProcName := 'InputText';
ModuleHandle := LoadLibrary(LibraryFileName);
if (ModuleHandle <= 0) then
begin
ShowMessage(Format('Ошибка загрузки библиотеки "%s"', [LibraryFileName]));
Exit;
end;
try
Param := VarArrayOf(['Введите текст', 0, 'Текст']);
if (not CallLibraryProc(ModuleHandle, ProcName, Param)) then
begin
ShowMessage(Format('Ошибка вызова процедуры "%s" из библиотеки "%s"',
[ProcName ,LibraryFileName]));
Exit;
end;
if (Param[1] = mrOk) then
ShowMessage(Param[2]);
finally
FreeLibrary(ModuleHandle);
end;
to Клименко Николай
Спасибо. Как раз то что нужно.