В этой главе представлены некоторые примеры использования конструкций C# в описании скриптов.

 

Переменные и типы

В скриптах Stimulsoft можно объявлять переменные с помощью ключевого слова var или явно указывать тип. Поддерживаются все основные типы C#, включая числа, строки, даты, булевы значения, цвета, коллекции и объекты.

 

C#

...

var number = 10;

var text = "Hello, World!";

var isActive = true;

var price = 19.99m;

var date = DateTime.Today;

var color = Color.Red;

...

 

 

Массивы и коллекции

Доступны массивы и коллекции .NET.

 

C#

...

var numbers = new int[3];

var list = new List<string>();

var dict = new Dictionary<string, int>();

...

 

 

Специальные типы

Можно использовать типы вроде GUID, Color, а также собственные бизнес-объекты, если они зарегистрированы в отчете.

 

C#

...

var id = Guid.NewGuid();

var color = Color.FromArgb(255, 128, 64);

...

 

 

В скриптах Stimulsoft можно напрямую использовать переменные, определенные в отчете, а также обращаться к их значениям и изменять их в коде. Для доступа к переменной достаточно указать ее имя, без дополнительных префиксов, например: var value = MyVariable;. Если переменная объявлена в отчете, она автоматически становится доступна во всех скриптах отчета, включая события компонентов, выражения, пользовательские функции и глобальные скрипты. Также можно присваивать новые значения переменным: MyVariable = 42;. Это позволяет использовать переменные для хранения промежуточных результатов, передачи данных между различными частями отчета и управления логикой построения отчета на лету.

 

 

Преобразование типов

Поддерживается явное и неявное приведение типов.

 

C#

...

var d = 5.5;

var i = (int)d; // 5

var s = (string)123; // "123"

...

 

 

Операторы в скриптах Stimulsoft

В скриптах Stimulsoft поддерживаются все стандартные операторы C#:

включая арифметические (+, -, *, /, %);
операторы сравнения (==, !=, <, >, <=, >=), логические (&&, ||, !);
побитовые (&, |, ^, ~, <<, >>);
операторы присваивания (=, +=, -=, *=, /=, %=, etc.);
тернарный оператор (? :);
инкремент и декремент (++, --);
операторы проверки и приведения типа (is, as, typeof, GetType).

 

Это позволяет использовать привычные конструкции и выражения для вычислений, условий, работы с переменными и типами, как в обычном C#. Все операторы работают с теми же приоритетами и правилами ассоциативности, что и в языке C#, поддерживаются сложные выражения, комбинирование операторов, а также все стандартные сценарии использования операторов в условиях, циклах, функциях и при работе с коллекциями.

 

 

Циклы в скриптах Stimulsoft

В скриптах Stimulsoft можно использовать все основные виды циклов, которые есть в C#:

 

Цикл for. Цикл с явным счетчиком. Обычно используется, когда известно, сколько раз нужно повторить действие.

 

C#

...

var sum = 0;

for (var i = 0; i < 5; i++) {

sum += i;

}

// sum = 0 + 1 + 2 + 3 + 4 = 10

...

 

 

Цикл while. Цикл с предусловием. Выполняется, пока условие истинно.

C#

...

var count = 0;

while (count < 3) {

count++;

}

// count = 3

...

 

 

Цикл do...while. Цикл с постусловием. Тело цикла выполнится хотя бы один раз.

 

C#

...

var value = 0;

do {

value += 2;

} while (value < 6);

// value = 6

...

 

 

Цикл foreach. Цикл для перебора всех элементов коллекции (списка, массива и так далее).

 

C#

...

var list = new List<int>();

list.Add(1);

list.Add(2);

list.Add(3);

var total = 0;

 

foreach (var item in list) {

total += item;

}

// total = 6

...

 

 

Внутри циклов можно использовать break (для выхода из цикла) и continue (для перехода к следующей итерации). Пример с break и continue:

 

C#

...

for (var i = 0; i < 10; i++) {

if (i == 5) break;

if (i % 2 == 0) continue;

// This code will only execute for odd i values less than 5.

}

...

 

 

Функции в скриптах Stimulsoft

В скриптах можно использовать разные виды функций: встроенные, статические, функции типов, а также собственные функции, определенные прямо в коде или доступные из отчета.

 

 

Встроенные функции Stimulsoft

Скрипты поддерживают большое количество встроенных функций Stimulsoft для работы с данными, строками, числами, датами, цветами и т.д. Их можно вызывать напрямую по имени.

 

C#

...

var empty = IsNullOrEmpty("");

var max = Maximum(3, 5);

var color = RGB(255, 0, 0);

...

 

 

Полный список встроенных функций.

 

 

Статические функции и методы .NET

Можно использовать статические методы стандартных .NET-классов, например, для преобразования типов, работы с числами, строками, датами.

C#

...

var absValue = Math.Abs(-10);

var rounded = Math.Round(2.6);

var parsed = int.Parse("123");

var now = DateTime.Now;

var formatted = string.Format("Value: {0}", 42);

...

 

 

Функции типов (методы объектов)

Доступны методы стандартных типов .NET, например, для строк, чисел, дат, коллекций.

 

C#

...

var text = "hello";

var upper = text.ToUpper();

var length = text.Length;

var tomorrow = now.AddDays(1);

var exists = list.Contains(2);

...

 

 

Пользовательские функции

Можно объявлять свои функции прямо в скрипте и вызывать их как обычно.

 

C#

...

double square(double n) {

return n * n;

}

var result = square(5);

...

 

 

Функции из отчета

Если в отчете определены пользовательские функциях можно вызывать по имени, если они доступны в контексте скрипта.

 

C#

...

var value = MyReportFunction(10);

...

 

 

Приведение типов и проверки типа

В скриптах Stimulsoft поддерживаются стандартные C#-операторы для работы с типами: as, is, typeof, а также явное и неявное преобразование типов. Можно также использовать метод GetType() для получения информации о типе объекта.

 

Оператор is. Позволяет проверить, относится ли объект к определенному типу. Возвращает true или false.

 

C#

...

var result = "hello" is string; // true

var isInt = 123 is int; // true

var isBool = 123 is bool; // false

...

 

 

Оператор as. Выполняет попытку приведения типа. Если преобразование невозможно — возвращает null (а не выбрасывает исключение).

 

C#

...

var obj = "hello";

var str = obj as string; // "hello"

var num = obj as int;   // null

...

 

 

Оператор typeof. Позволяет получить объект типа для дальнейших проверок или рефлексии.

 

C#

...

typeof(string); // Type { Name = "String", FullName = "System.String" }

typeof(int);   // Type { Name = "Int32",  FullName = "System.Int32" }

...

 

 

Оператор GetType(). Метод возвращает реальный тип объекта во время выполнения. Это удобно для динамических проверок и отладки.

 

C#

...

var value = 123;

var typeName = value.GetType().Name; // "Int32"

var typeFullName = value.GetType().FullName; // "System.Int32"

var text = "abc";

var isString = text.GetType() == typeof(string); // true

...

 

 

Парсер поддерживает стандартный синтаксис C# для приведения типов, в том числе между числами, строками, булевыми значениями и т.д. Если преобразование невозможно, будет выброшено исключение (как в обычном C#).

 

 

Использование источников данных и бизнес-объектов в скриптах Stimulsoft

В скриптах Stimulsoft можно напрямую обращаться к источникам данных, зарегистрированным в отчете, а также к их связанным данным и бизнес-объектам. Для доступа к данным достаточно использовать имя источника, например:

 

C#

...

Products.First();

var name = Products.ProductName;

...

 

 

Здесь происходит переход к первой строке источника данных Products и чтение значения столбца ProductName. Если между источниками данных настроены связи (relations), можно обращаться к связанным данным через точку:

 

C#

...

var categoryName = Products.Categories.CategoryName;

...

 

 

Так можно получить имя категории для текущего продукта. Для работы с источниками данных доступны методы навигации, такие как First(), Next(), Previous().

 

Если в отчет добавлены бизнес-объекты через метод RegBusinessObject(), к ним можно обращаться по имени, как к обычным объектам:

 

C#

...

var id = Business.Id;

var name = Business.Name;

Business.Name = "NewName";

...

 

 

Для вложенных объектов используйте доступ через точку:

 

C#

...

var subPrice = Business.Child.SubChild.Price;

...