Сегодня в статье мы поговорим о режиме вычисления выражений в отчете. По сути, их может быть только два – Интерпретация (Interpretation) и Компиляция (Compilation). Понятия эти общепринятые, однако в этом тексте мы разберемся, что они означают в рамках платформы Stimulsoft.

Режим вычисления отчета

Режим обработки выражения определяется для каждого шаблона в отдельности. По умолчанию, при создании нового отчета в Stimulsoft Designer для него используется режим Компиляция, а при создании нового дашборда – Интерпретация. Поскольку эта настройка относится к шаблону, то и изменить режим обработки можно с помощью свойства шаблона отчета, которое так и называется – Режим вычисления (Calculation Mode). В свою очередь, его значением может быть или Интерпретация, или Компиляция. Обратите внимание, все наши дашборды работают в режиме интерпретации.

Какой режим выбрать?

Дальше – интереснее. Дело в том, что для некоторых платформ, а, соответственно, и наших продуктов, режим компиляции не поддерживается. В этом случае, все выражения будут обрабатываться в режиме Интерпретации. В результате произойдет следующее – то, что, например, работало локально, не будет работать в облаке. И речь тут не об ошибках в продукте, а в ограничениях безопасности платформ и сервисов.

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

К слову, режим компиляции поддерживается в продуктах: Reports.Net, Report.Wpf, Reports.Web, Reports.Angular, Report.Blazor (только для Blazor.Server). В продуктах Stimulsoft BI Server, Dashboards.WIN и Dashboards.WEB режим компиляции актуален только для отчетов.

Вкладка Код

Поскольку речь в нашей статье идет о режиме вычисления выражений и обработки отчета, то следует упомянуть, что в нашем дизайнере есть возможность увидеть код отчета, который фактически и будет обрабатываться компилятором или интерпретатором. Для этого в приложении есть вкладка Код (Code), которая по умолчанию скрыта. Включить её можно из контекстного меню заголовка страницы шаблона отчета, установив флажок у параметра Код. Два важных уточнения: во-первых, в дизайнере отчетов должен быть выбран уровень сложности Расширенный (Professional). Про уровни сложности, у нас есть достаточно подробная статья. ;Во-вторых, вкладка Код содержит код всего отчета, а не конкретной страницы шаблона отчета.
Итак, после того, как вы открыли вкладку Код, необходимо в контекстном меню области редактора кода установить флажок параметра Показать авто-генерируемый код (Show auto generated code). В результате будет сгенерирован код отчета, который при построении и будет обрабатываться транслятором.

Code Tab

Подробности

Теперь о том, как это все касается Stimulsoft. Как известно, компиляция – это трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке. Причем, сначала выполняется анализ кода, затем его трансляция в низкоуровневый язык и выполнение. При интерпретации анализ кода и его выполнение осуществляется построчно. Однако, в нашем генераторе отчетов используется собственный интерпретатор, но он, к сожалению, не умеет обрабатывать выражения в событиях. Поэтому сценарии событий в режиме интерпретации работать не будут. Но решение есть всегда, и об этом чуть ниже.

События

При разработке отчетов есть возможность использовать события компонентов или самого отчета. Другими словами, вы можете определить действие, которое будет срабатывать при возникновении какой-либо ситуации. Например, перед началом построения отчета или при его экспорте, или если количество строк в отчете будет больше 10. Вообще, по событиям в отчете можно написать не одну статью, а использование событий и сценариев в них ограничивается лишь вашими требованиями к отчетам.

Это важно!

  1. Событие – это сценарий, который выполняется при возникновении определенной ситуации. Этот сценарий пишется на языке программирования используемого продукта. Для Stimulsoft Designer – это C# / VB.Net, а, например, для Reports.JS – JavaScript. Отсюда вывод – сценарий отчета, который работает в Stimulsoft Designer, не будет выполняться в Report.JS.
  2. В нашем генераторе отчетов используется собственный интерпретатор, который на данный момент не умеет обрабатывать выражения в событиях. Поэтому и сценарии событий в режиме интерпретации работать не будут.

Причем тут Blockly

Не так давно , мы интегрировали Google Blockly в наши продукты. Эта возможность позволяет создавать сценарии событий визуальными блоками. При возникновении события сценарий обрабатывается с помощью нашей специальной библиотеки, которая умеет анализировать и вычислять выражения, созданные с помощью блоков. Таким образом, сценарии, созданные с использованием Blockly будут работать в режиме интерпретации и компиляции. Поэтому создание сценариев блоками является решением в тех случаях, когда режим вычисления отчета установлен как интерпретация.


Blockly Events
Это важно!

При создании сценария визуальными средствами не используется синтаксис языка программирования, а обработка этого сценария реализована отдельно для каждой платформы. Сценарий, созданный с помощью Blockly, является универсальным и не зависит от продукта, на котором он реализуется. Это актуально при разработке, к примеру, отчета в Reports.Net, а затем его построении в Reports.JS.

Коротко о главном

Ну вот мы немного и поговорили про режим вычисления в отчете. И хотелось бы еще раз тезисно о главном:
  • режим вычисления определяется с помощью свойства шаблона и может быть установлен как Компиляция или Интерпретация;
  • не все продукты поддерживают режим Компиляции;
  • выражения в сценариях не обрабатываются в режиме интерпретации;
  • сценарии, созданные с помощью Blockly, будут работать в режиме интерпретации и компиляции. Также эти сценарии не зависят от платформы и используемого языка программирования и являются, по сути, универсальным решением для всех платформ.

Надеемся, наша статья будет полезной для вас.
Используя этот сайт, вы соглашаетесь на использование файлов Cookie для аналитики и персонализированного контента. Файлы Cookie хранят полезную информацию на вашем компьютере, чтобы помочь нам повысить эффективность и удобство использования. Для получения дополнительной информации, пожалуйста, прочтите Конфиденциальность и Использование Cookie.