Страница 1 из 1
Пользовательские функции
Добавлено: 20 фев 2014, 14:26
kavit
Добрый день.
Существует возможность добавления собственных функций в отчеты? Например: число 23 нужно отображать как "двадцать три" или "зонт" => "зонты"
Re: Пользовательские функции
Добавлено: 20 фев 2014, 16:53
HighAley
Здравствуйте.
Для перевода чисел в строку вы можете использовать функцию Strings - ToWords - ToWordsRu()
Вы можете добавить свои функции перед вызовон дезайнера с помощью следующего статического метода:
Код: Выделить всё
public static StiFunction AddFunction(string category, string groupFunctionName, string functionName, string description, Type typeOfFunction, Type returnType, string returnDescription, Type []argumentTypes, string []argumentNames, string []argumentDescriptions)
Спасибо.
Re: Пользовательские функции
Добавлено: 21 фев 2014, 11:58
kavit
Получилось зарегистрировать функцию, но при открытии "Просмотра" в "Дизайнере", "Дизайнер" подвисает и ничего не показывает.
Регистрация функции выполняется следующим образом:
Код: Выделить всё
Type typeOfFunction = this.GetType();
Type returnType = typeof (string);
Type[] argumentTypes = { typeof (int) };
string[] argumentNames = { "value" };
string[] argumentDescriptions = { "Число для преобразования" };
StiFunctions.AddFunction(
"User",
"Group",
"MyConvert",
"Пользовательская функция",
typeOfFunction,
returnType,
"Строка с приставкой 'Ex: '",
argumentTypes,
argumentNames,
argumentDescriptions
);
Вызов регистрации выполняется так:
Код: Выделить всё
var report = new StiReport();
report.Load(@"Data\Report.mrt");
report.RegBusinessObject("Item", list);
report.Dictionary.SynchronizeBusinessObjects(7);
AddFunction();
report.Design();
Какие еще моменты нужно учесть при регистрации и вызове собственной функции?
Пример проекта прикрепляют. Прикрепить видео пример не могу: "расширение swf запрещено администратором"
Re: Пользовательские функции
Добавлено: 25 фев 2014, 02:40
Ivan
Здравствуйте.
kavit писал(а):Получилось зарегистрировать функцию, но при открытии "Просмотра" в "Дизайнере", "Дизайнер" подвисает и ничего не показывает.
Проблема решена.
Патч будет включен в следующий предрелизный билд в пятницу.
Также вам надо сделать вашу функцию статической, т.е.
Код: Выделить всё
public static string MyConvert(int value)
{
return "Ex: " + value;
}
Если не хотите ждать следующего билда, то в своём коде при вызове метода AddFunction замените имя группы на имя функции:
Код: Выделить всё
StiFunctions.AddFunction(
"User",
"MyConvert", // <---
"MyConvert",
"Пользовательская функция",
typeOfFunction,
returnType,
"Строка с приставкой 'Ex: '",
argumentTypes,
argumentNames,
argumentDescriptions
);
Спасибо.
Re: Пользовательские функции
Добавлено: 25 фев 2014, 11:07
HighAley
Здравствуйте.
Ваша функция должны быть статической.
Ещё мы поправили небольшой баг. На данный момент название группы должно быть такое же как и название функции.
Данный баг уже исправлен. Исправление будет доступно в нашем следующем предрелизном билде.
Спасибо.