Думал, что можно из отчета вызвать другой отчет. В документации вариантов решения не нашел. Если нельзя, жаль. Можно, конечно, запомнить работника, дату. Перейти в террасофт, ввести эти параметры и вызвать другой отчет. Но по нажатию на ячейку отчета было бы лучше.
Можно, вообще, хоть какой-то террасофтовский скрипт как-то запустить из кода фастрепорт? Например, открыть окошко с инструкцией. JScript работает вроде бы в фастрепорт. Но import "scr_DB.js" не работает, import "scr_DB" тоже. Эти файлы где-то под оболочкой и достать их невозможно? Можно ли хотя бы в кросс-репорт менять высоту полей и перерисовывать отчет, используя refresh?
Нравится
"Зеннюков В.Ю." написал:Думал, что можно из отчета вызвать другой отчет. В документации вариантов решения не нашел. Если нельзя, жаль. Можно, конечно, запомнить работника, дату. Перейти в террасофт, ввести эти параметры и вызвать другой отчет. Но по нажатию на ячейку отчета было бы лучше.
Попробуйте создать свое окно фильтрации с несколькими кнопками для вызова отдельного отчета.
"Зеннюков В.Ю." написал:Можно, вообще, хоть какой-то террасофтовский скрипт как-то запустить из кода фастрепорт?
Посмотрите пример вызова во вложенном файле.
Спасибо за ответ. Правда, до цели я не добрался. В Pascal script не проходит даже первую строчку
procedure DBCross1Corner1OnPreviewClick(Sender: TfrxView; Button: TMouseButton; Shift: Integer; var Modified: Boolean);
var Connector: Variant;
var Window: Variant;
begin
Connector := ds_SocSor2.GetConnector();
// Window := Connector.Services.GetNewItemByUSI('wnd_myTestWindow');
// DBCross1Corner2.Text := Window.ScriptControl.Run('AmountToStr',
// FloatToStr(StrToFloat(DBCross1Cell22)), 'ua', 'UAH', true);
end;
Выдает на the OnBeforePrint - following error(s) have occured: script error at 58:23 Undeclared identifier: 'ds_SozSor2'
Думал, что-то не так с моим датасетом, заменил его на везде используемый ds_Call - та же ошибка.
На OnPreviewClick другая ошибка на первой строчке Invalid variant type (детали ошибки в прикрепленном файле)
Заменил тип скрипта на JScript.
var ii = "RUB";
function DBCross1CellHeader0OnPreviewClick(Sender, Button, Shift, &Modified)
{
var Connector = ds_SocSor2.GetConnector();
var Window = Connector.Services.GetNewItemByUSI("wnd_myTestWindow");
DBCross1Corner2.Text = Window.ScriptControl.Run("AmountToStr", FloatToStr(StrToFloat(DBCross1Cell22)),
"ua", "UAH", true);
}
function DBCross1Corner1OnPreviewClick(Sender, Button, Shift, &Modified)
{
var Connector = ds_SocSor2.GetConnector();
var Window = Connector.Services.GetNewItemByUSI("wnd_myTestWindow");
var ii = Window.ScriptControl.Run("AmountToStr", FloatToStr(StrToFloat("1.27")), "ua", "UAH", true);
}
function DBCross1Corner1OnBeforePrint(Sender)
{
var Connector = ds_SocSor2.GetConnector();
var Window = Connector.Services.GetNewItemByUSI("wnd_myTestWindow");
var ii = Window.ScriptControl.Run("AmountToStr", FloatToStr(StrToFloat("1.27")), "ua", "UAH", true);
}
function DBCross1OnPrintCell(Memo, RowIndex, ColumnIndex, CellIndex, RowValues, ColumnValues, Value)
{
if (CellIndex == 1)
if (ii == "RUB")
Memo.Color = clCream;
else
Memo.Color = clSilver;
}
Если присваиваю значение вызываемой функции ii, ошибок не выскакивает, но поставив debugger; в функцию, вижу, что программа туда не попадает. Если присваиваю значение вызываемой функции DBCross1Corner2.Text, выдает ошибку Could not convert variant of type (Null) into type (OleStr), что подтверждает предположение, что в функции программа не побывала. Подумал, что пятый параметр лишний, убрал его, но не помогло.
Как-то грустно, а этот механизм точно работает?
Сейчас проверил на простом отчете - работает, может быть, только на кросс-отчетах не работает.
Это уже легче, буду проверять дальше.