С релизом 2025.2 подписка на Ultimate .NET стала еще выгодней! Все владельцы лицензии получили дополнительный плагин для импорта документов из Microsoft Word.
Отличные новости для владельцев FastReport VCL и FastReport .NET лицензии Single!
Только до 30 апреля вы можете продлить свою лицензию с внушительной скидкой 50%.
Это отличный повод снова получить доступ ко всем свежим обновлениям, улучшениям и технической поддержке.
К тому же, вы экономите значительную сумму — от 20 000 рублей!
Почему это важно:
Снова с нами — продолжайте использовать FastReport с максимальной эффективностью.
Никаких рисков — продление гарантирует корректную работу и безопасность.
Максимум пользы — оставайтесь в курсе всех новых функций и улучшений.
Не откладывайте на потом — специальное предложение действует всего несколько недель! Напишите нам на sales@fastreport.ru, чтобы воспользоваться им.
Встречайте новый релиз 2025.2 для вариантов поставок FastReport .NET: WinForms, WPF, Avalonia, Mono, WEB, Ultimate. В этом обновлении вас ждёт поддержка .NET 9, библиотека для выполнения скриптов на языке C#, плагин импорта документов из Word, коннектор к Apache Ignite, улучшения дизайнера и экспортов, а также новые функции в WebReport.
Не упустите возможность обновить FastReport .NET и расширить свой функционал!
Импорт документов из Word
В наборе компонентов FastReport .NET Ultimate появился плагин, который позволяет импортировать документы Microsoft Word (.docx). При открытии такого файла он преобразуется в шаблон отчета FastReport .NET (.frx).
Ввиду больших отличий в форматах полное соответствие двух документов не всегда возможно. Однако, данный плагин позволяет значительно сократить время создания шаблона на основе существующего docx-файла.
На данный момент наш плагин не поддерживает: подсветку фона части строки, шейпы (Shapes), а также вложенную векторную графику Vector Markup Language (VML) и OLE объекты. Об особенностях работы импорта и как подключить плагин, можно прочитать в статье.
Читать статью
Поддержка .NET 9
Эта платформа повышает производительность приложений и добавляет множество новых возможностей для ваших проектов. В этом обновлении появилась поддержка .NET 9 для:
FastReport .NET,
FastReport.Core,
FastReport.Core.Skia,
FastReport.WPF,
FastReport.Avalonia,
FastReport.Web,
FastReport.Web.Skia,
FastReport.Blazor.Wasm.
Мы отказались от бинарной сериализации. BinaryFormatter стал причиной целого ряда проблем с безопасностью и Microsoft в .NET 9 отказались от его использования. Наша команда также убрала класс BinaryFormatter из исходного кода. Подробнее об этом можно прочитать по этой ссылке.
Узнать больше
Улучшения дизайнера отчетов
Также в этой версии были внедрены несколько полезных функций, упрощающих работу с отчётами.
Теперь в инспекторе объектов можно быстро копировать данные из списка свойств объекта с помощью горячих клавиш Ctrl + C. Это поможет легко переносить свойства объектов между различными частями документа или даже между разными отчётами.
Кроме того, появилась возможность копировать итоги и параметры с сохранением иерархии вложенности. Это означает, что при копировании сложных структур данных их первоначальная организация будет сохранена, что позволяет избежать необходимости вручную восстанавливать структуру после копирования.
Подключение к Apache Ignite и РЕД Квант
С этим обновлением был добавлен новый плагин, который значительно упрощает процесс работы с базами данных Apache Ignite и РЕД Квант при создании отчётов. Этот плагин позволяет напрямую подключать отчёты к указанным базам данных, обеспечивая удобный доступ к необходимым данным для анализа и визуализации.
Коннектор Apache Ignite реализован на основе .NET Thin Client Ignite.NET. Он предоставляет возможность подключения к кластерам Apache Ignite, работы с кэшами (включая SQL-таблицы) и обработки различных типов данных.
Кроме того, коннектор поддерживает подключение к одному или нескольким узлам Apache Ignite. Адреса узлов указываются в формате хост:порт и разделяются запятыми. Подключение возможно как с аутентификацией (если authenticationEnabled используется в конфигурации), так и без неё.
В коннекторе поддерживается работа с кэшами, созданными как ключ-значение, так и с SQL-таблицами. Для кэшей с метаданными QueryEntity поддерживаются операции получения списка полей и их типов данных. Подробнее можно прочитать в статье.
Читать статью
Улучшения окна предварительного просмотра
В OutlineControl мы добавили удобные кнопки с иконками для сворачивания и разворачивания. Эти кнопки были и раньше, но без иконок.
Помимо этого, были добавлены свойства, которые позволяют изменять ширину и высоту полос прокрутки в окне предварительного просмотра.
Улучшения экспортов
Добавлен экспорт форматов чисел, валюты, даты, времени и процентов в OpenOffice Calc (.ods).
В этом обновлении также был внедрён новый режим экспортов в виде параграфов для файлов формата OpenOffice Writer (.odt). Это упрощает редактирование сгенерированных документов и делает их более визуально понятными для человека. Новый режим экспорта не заменяет, а дополняет уже существующий режим и расширяет его возможности.
Кроме того, была добавлена опция "Автоподбор ширины" для MS Excel-экспорта.
Будет работать только при определенных значениях свойств текстового объекта: свойства AutoWidth и AutoShrink включены; значение свойства HorzAling любое, кроме Justify.
Изменения в WebReport
Поиск по всему отчету
Добавлен поиск текста по всему отчету, аналогично десктопной версии Viewer, при нахождении слова на другой странице, просмотр будет автоматически на нее переключен. Поиск доступен в WebReport с FastReport.Core, в WebReport для Blazor Server и WebReport для Blazor Wasm. Управлять отображением кнопки поиска можно с помощью свойства:
WebReport.Toolbar.ShowSearchButton = false;
Цвет подсветки найденных слов можно изменить с помощью свойства:
WebReport.Toolbar.SearchHighlight = Color.Red;
Улучшения в настройке кэширования для WebReport
С выходом новой версии в WebReport появились дополнительные возможности для настройки кэширования.
Во-первых, теперь можно задавать индивидуальные параметры кэширования для каждого конкретного экземпляра WebReport. Ранее были доступны только общие настройки, применявшиеся ко всем отчётам, что могло быть неудобно, особенно если требовалось дольше сохранять в памяти определённые отчёты. С помощью свойства webReport.CacheOptions вы можете настроить время хранения в кэше для конкретного отчёта.
Во-вторых, появилась более гибкая настройка времени хранения отчёта в кэше благодаря параметрам AbsoluteExpirationDuration и AbsoluteExpiration. Ранее использовалась только опция CacheDuration, основанная на скользящем принципе: если отчёт использовался в течение заданного времени, таймер сбрасывался, и отчёт оставался в памяти. Это могло привести к тому, что отчёт никогда не удалялся из кэша.
Новые параметры позволяют задать точное время, когда отчёт должен быть окончательно удалён из кэша, независимо от его использования. При этом CacheDuration и новые параметры AbsoluteExpiration и AbsoluteExpirationDuration можно использовать совместно.
// Общие настройки для всех WebReport
services.AddFastReport(options =>
{
options.CacheOptions.CacheDuration = TimeSpan.FromMinutes(10);
options.CacheOptions.AbsoluteExpirationDuration = TimeSpan.FromMinutes(20);
});
// Индивидуальные настройки WebReport, имеющие больший приоритет
webReport.CacheOptions = new WebReportCacheOptions()
{
CacheDuration = // ...,
AbsoluteExpiration = DateTime.Now.AddMinutes(30),
// или
AbsoluteExpirationDuration = // ...
};
Обновленное демонстрационное веб-приложение на ASP .NET Core
Мы обновили наше демо-приложение на ASP .NET Core, чтобы продукт радовал вас не только своим функционалом, но и внешним видом. Обновленное приложение доступно по ссылке.
Онлайн демо
Обновленное демо Online Designer
Кроме того, мы обновили демо-приложение Online Designer, на котором вы сможете посмотреть больше примеров наших отчётов, экспортировать их, а также попробовать обновленный онлайн дизайнер на них. Обновленное приложение доступно по ссылке.
Попробовать демо
Поддержка FastScript .NET
Добавлена возможность выполнения скрипта отчета, используя FastScript .NET.
FastScript .NET — это библиотека для выполнения скриптов на языке C#, которая не зависит от CodeDOM/Roslyn и может быть использована в средах, где запрещена кодогенерация (Native AOT, iOS, WASM).
FastScript .NET входит в состав следующих вариантов поставок FastReport .NET: WinForms, WPF, Avalonia, Mono, WEB, Ultimate.
Для использования FastScript .NET совместно с FastReport .NET:
добавьте в свое приложение ссылку на nuget пакет FastReport.Plugins.FastScript;
выполните следующий код перед первым использованием объекта Report:
FastReport.Code.CodeProvider.DefaultProvider = typeof(FastReport.Code.FastScript.FastScriptCodeProvider);
Теперь все отчеты будут использовать FastScript .NET для вычисления выражений и выполнения кода отчета.
В FastScript .NET нет поддержки языка скрипта VB.NET, а также не поддерживается тип dynamic. Некоторые отчеты, использующие объект "Улучшенная матрица", не будут работать.
Подробная документация по работе с FastScript .NET доступна по этой ссылке.
Онлайн документация
Полный список изменений
[Engine]+ добавлен новый движок скрипта - FastScript .NET;+ добавлена поддержка вертикальной табуляции;+ добавлен импорт документов DOCX в шаблон отчёта;+ добавлена поддержка кодировки для китайского (упрощенного) языка при конвертации RTF;+ добавлена возможность отключить интеграцию с МоиОтчеты Облако;+ добавлен штрих-код GS1 Datamatrix;+ добавлено преобразование SkBitmap в Bitmap и Image в FastReport.SkiaDrawing;- исправлена ошибка с RichObject в кодировке zh-tw;- исправлена ошибка одновременной компиляции скрипта отчёта при подготовке отчётов в нескольких потоках;- исправлена ошибка при печати пустой матрицы;- исправлена ошибка передаче null значения в параметр запроса MS SQL;- исправлены ошибки при компиляции библиотек под .NET 9;- исправлена ошибка приводящая к бесконечному циклу, когда включено свойство "StartNewPage" дочернего бэнда "Заголовка страницы" или "Заголовка колонки";- исправлена ошибка приводящая к System.ArgumentException при подключении к MySQL;- исправлена ошибка вычисления выражения PrintableExpression страницы;- исправлена ошибка приводящая к System.NullReferenceException в методе Report.GetParameterValue;
[Designer]+ добавлена возможность копировать данные из списка свойств объекта с помощью горячих клавиш Ctrl + C;+ добавлена возможность копировать итоги и параметры с сохранением иерархии вложенности;* в окне открытия страницы отчета осталась возможность выбрать только *.frx файл;* в настройках дизайнера Mono скрыта вкладка с недоступными настройками (Страница "Код");* изменена логика обработки стилей .rtf файла при его открытии в дизайнере;- исправлена ошибка, когда пропадало изображение PictureObject, после отмены изменений в дизайнере, при редактировании подготовленной страницы;- исправлена ошибка поискового фильтра в дереве данных, при которой сбрасывалось текущее состояние поиска;- удален пункт "Новый диалог" контекстного меню в Community версии, выбор которого приводил к необрабатываемому исключению;- исправлена ошибка при запуске просмотра отчета из дизайнера;- исправлено исключение System.InvalidOperationException при удалении столбца источника данных, если такого столбца больше нет в базе данных;- исправлено считывание штрихкода GS1 DataMatrix как DataMatrix;- исправлена ошибка с выбором размещения колонок бэнда в окне "Редактор колонок";- исправлено удаление объектов и категорий с боковой панели в дизайнере;- исправлена ошибка с отображением иконок, которая появилась с версией AvaloniaUI 11.1;- исправлена ошибка, когда при добавлении функции IsNull через "Редактор текста" добавлялась лишняя запятая;
[Preview]+ добавлена кнопка для отправки отчета по электронной почте при использовании MAPI в превью в WPF;+ добавлены кнопки сворачивания и разворачивания с иконками в OutlineControl;+ добавлена возможность изменять ширину и высоту полосы прокрутки через код;- исправлена ошибка с неправильным размером бумаги для принтеров без опции "Авторазмер бумаги" при нажатии кнопок "Настройки", а затем "Дополнительно" в окне "Печать";- исправлено отключение кнопки сохранения подготовленного отчета в превью;- исправлено отключение вкладки "Хранилище" в меню сохранения отчета в предварительном просмотре;- исправлена ошибка с "Улучшенной матрицей" при отсутствие фильтров;- исправлена ошибка при которой не появлялась форма печати в превью по нажатию Ctrl + P;
[Exports]+ добавлен экспорт свойства "Author" при экспорте в PDF/A;+ добавлена поддержка HTML тега неразрывного пробела при экспорте в Excel;+ добавлен экспорт форматов чисел, валюты, даты, времени и процентов в OpenOffice Calc (.ods);+ добавлена опция "Автоподбор ширины" для экспорта в MS Excel;+ добавлен новый режим экспорта по параграфам в документы OpenOffice Writer (формат .odt);* теперь при экспорте страниц со свойством ExportAlias в Excel, суффикс "-n" не будет добавляться к имени листа, если это возможно;- исправлена ошибка, когда название шрифта экспортировалось без кавычек в HTML;- исправлена ошибка в FastReport.Core с некоторыми пользовательскими шрифтами;- исправлена ошибка в HTML-экспорте при которой, не отображалась граница штрих-кода;- исправлена ошибка открытия файлов при экспорте отчета с спецсимволами в форматы ODT и ODS;- исправлено некорректное отображение и экспорт некоторых Unicode символов в Skia/Avalonia;- исправлен экспорт заливки TableObject в PDF-экспорте;- исправлен экспорт заливки TableObject и страниц в HTML-экспорте;- добавлен экспорт высоты для объединенных ячеек при экспорте в Excel;
[WebReport]+ добавлен поиск по WebReport для ASP.NET;+ добавлен поиск по WebReport для Blazor WASM;+ добавлена поддержка .NET 9 для FastReport.Blazor.Wasm;+ добавлена возможность создания подключения к хранимым процедурам в WebReport;- исправлена проблема, которая не позволяла изменить DataConnection после его создания в OnlineDesigner;- исправлено преобразование TextObject в SVG при предварительном просмотре в Blazor;- исправлена поддержка Size CommandParameter;- исправлена отрисовка кнопок переключения страниц в Blazor при их выключении;- исправлена ошибка, когда значение параметра RouteBasePath не учитывалось при настройке WebReport;
[.NET Core]+ добавлен фильтр таблиц подключений;+ добавлен класс JsonConnectionType для использования в методе JsonDataConnection.GetConnectionType и методы GetConnectionType() и GetParameterType() в коннектор JsonDataConnection;- исправлена ошибка с кодировкой при подключении файла данных CSV для отчета в .NET Core;
[Common]* изменена ширина окна "О программе...";
[Extras]+ добавлена возможность подключения к Apache Ignite и РЕД Квант;
[Demos]+ добавлен файл UsedPackages.version для паков WPF;- исправлено название Avalonia и WPF при запуске демо приложения.
Рады представить вам релиз FastReport Business Graphics .NET! В этом обновлении мы сконцентрировались на повышении совместимости, улучшении поддержки современных платформ и подготовке к будущим версиям .NET.
Совместимость с .NET 9
Одним из ключевых изменений стало добавление необходимых атрибутов в компоненты для обеспечения полной совместимости с .NET 9. Это означает, что теперь FastReport Business Graphics .NET корректно работает в самых актуальных средах, сохраняя стабильность, производительность и поддержку всех новых возможностей фреймворка.
Если вы планируете переходить на .NET 9 или уже используете его в своих проектах, можете быть уверены, что наши компоненты готовы к работе без дополнительных доработок!
Обновление поддерживаемых версий .NET
Мы обновили список целевых платформ, ориентируясь на современные требования разработчиков:
Основной версией теперь считается .NET 8 – это стабильный и производительный фреймворк, который рекомендован для большинства проектов.
Также сохраняется поддержка .NET 6 – для тех, кто еще не обновился, но использует долгосрочную поддержку (LTS).
Добавлена поддержка .NET 9 – для разработчиков, которые хотят использовать самые свежие технологии и возможности.
Благодаря этим изменениям FastReport Business Graphics .NET остается актуальным инструментом для работы с бизнес-графикой в ваших проектах.
Список изменений
[Common]+ добавлены атрибуты в компоненты необходимые для совместимости с .NET 9;+ обновлены версии .NET, основной версией теперь считается .NET 8, а поддерживаемые целевые платформы включают .NET 6, .NET 8 и .NET 9.
В этом обновлении мы сосредоточились на ускорении вычислений, улучшении совместимости с .NET 9 и упрощении понимания изменений.
Переход на инвариантную математику – до 2 раз быстрее!
Одним из самых значительных улучшений стало отказ от типа "вариант" в пользу инвариантной математики. Это изменение привело к существенному ускорению построения и пересчета куба, в некоторых случаях – более чем в 2 раза!
Кроме того, теперь куб работает корректно в различных локализациях, включая нестандартные (отличные от латиницы), что расширяет его применение для международных пользователей.
Разделение изменений по продуктам
Теперь обновления FastCube .NET разделены на разные продукты (WinForms, Web, Mono и общий FastCube .NET). Это сделало процесс обновления более прозрачным – вы можете сразу понять, какие изменения затрагивают нужную версию.
Исправлена ошибка считывания потока из сжатого файла
Ранее в некоторых случаях происходила некорректная обработка сжатых файлов, из-за чего данные могли загружаться неправильно или вовсе не загружаться.
Теперь этот баг устранён, и механизм работы со сжатыми файлами полностью исправлен. Это означает:
Корректное чтение данных из архивных файлов.
Более стабильная работа при загрузке больших файлов.
Отсутствие ошибок в многопоточном режиме, что особенно важно для Web-приложений.
Если ваш проект активно использует сжатие данных, рекомендуем обновиться до версии 2025.2, чтобы избежать возможные проблемы.
Сигнатура файла для куба теперь неизменяемая (const вместо static)
Ранее сигнатура файла была объявлена как static, что позволяло менять её в ходе выполнения программы. В ряде случаев это могло привести к ошибкам, связанным с изменением структуры данных или даже повреждению файла.
В новой версии:
- Сигнатура теперь объявлена как const, что делает её неизменяемой на уровне кода.- Гарантирована целостность структуры файла, независимо от изменений в коде программы.- Повышена стабильность работы с файлами куба в разных средах, включая Web и Mono.
Это особенно важно для разработчиков, которые работают в многопользовательских и распределённых системах.
Совместимость с .NET 9
Одним из ключевых улучшений стало добавление поддержки .NET 9. Теперь FastCube .NET полностью совместим с последней версией платформы, что позволяет использовать новые возможности и улучшения, предложенные Microsoft. Это важное обновление для разработчиков, которые переходят на .NET 9 или планируют использовать его в своих проектах.
Отдельно отметим, что поддержка новых версий позволяет обеспечить стабильность работы продукта и интеграцию с последними технологиями.
Обновление поддерживаемых версий .NET
Основной версией теперь считается .NET 8, что соответствует текущим стандартам для большинства корпоративных проектов. Тем не менее, сохранена поддержка .NET 6, которая представляет собой долгосрочную версию с расширенной поддержкой.
Кроме того, как уже было упомянуто, добавлена поддержка .NET 9, что даёт вам гибкость при выборе платформы для работы с FastCube .NET, будь то стабильность (через .NET 6) или новейшие возможности и улучшения производительности (.NET 9).
Исправления и улучшения в демонстрационном примере
В демонстрационном примере для формата boolean была исправлена ошибка, из-за которой корректность отображения данных была нарушена. Теперь данный формат работает правильно и не вызывает ошибок, что улучшает опыт пользователей, работающих с демонстрационными примерами.
В демонстрационном кубе "Sales by months" ранее возникали ситуации, когда заголовки отображались некорректно. Теперь эта ошибка устранена, и названия полей выводятся корректно, обеспечивая точность и удобство работы с данными.
Улучшение сериализации данных
Одним из важных улучшений является оптимизация процесса сериализация данных. Были добавлены новые методы и установлены свойства, благодаря чему значения по умолчанию теперь реже сериализуются.
Снижение объема сериализуемых данных уменьшает нагрузку на систему при сохранении и загрузке информации. Кроме того, эти изменения способствует улучшению производительности, что будет особенно заметно при работе с большими наборами данных.
Список изменений
FastCube .NET WinForms
[Common]- исправлена ошибка, при которой поток из сжатого файла считывался некорректно;* сигнатура файла для куба теперь имеет модификатор const вместо static и не может быть изменена;
FastCube .NET Web
[Common]- исправлена ошибка, при которой поток из сжатого файла считывался некорректно;* сигнатура файла для куба теперь имеет модификатор const вместо static и не может быть изменена;
FastCube .NET Mono
[Common]- исправлена ошибка, при которой поток из сжатого файла считывался некорректно;* сигнатура файла для куба теперь имеет модификатор const вместо static и не может быть изменена;
FastCube .NET
[Common]+ добавлена совместимость с .NET 9;+ обновлены версии .NET, основной версией теперь считается .NET 8, а поддерживаемые целевые платформы включают .NET 6, .NET 8 и .NET 9;* скрыта часть свойств от пользователя в редакторе WinForms;* тип "вариант" был заменён на вариантную математику;* улучшена сериализация, добавлены методы и установлены свойства, благодаря чему значения по умолчанию реже сериализуются;- исправлено отображение названия поля в демонстрационном кубе "Sales by months";- исправлена ошибка в демонстрационном примере для boolean format.
Другие критические изменения
Общие изменения для FastCube Web, FastCube WinForms и FastCube Mono
Устаревшие делегаты. Были заменены на совместимые, т.к. был убран тип Variant теперь вместо него используется боксинг через Object:
Нажмите сюда, чтобы развернуть
FastReport.Olap.Slice.Value2Delegate(System.Int32, System.Int32, FastReport.Olap.Utils.Variant, FastReport.Olap.Utils.Variant, System.Int32)
FastReport.Olap.Slice.ValueDelegate(System.Int32, System.Int32, FastReport.Olap.Utils.Variant, System.Int32)
FastReport.Olap.Slice.SliceChartDataHandler(FastReport.Olap.Slice.Slice, FastReport.Olap.Slice.ChartParams, System.String[], System.String[], FastReport.Olap.Utils.Variant[], System.Int32)
Устаревшие поля. Следующие поля были заменены на соответствующие свойства:
Нажмите сюда, чтобы развернуть
FastReport.Olap.Types.BoolValue -> public System.Boolean Value
FastReport.Olap.Types.ByteValue -> public System.Byte Value
FastReport.Olap.Types.DateTimeValue -> public System.DateTime Value
FastReport.Olap.Types.DecimalValue -> public System.Decimal Value
FastReport.Olap.Types.DoubleValue -> public System.Double Value
FastReport.Olap.Types.FloatValue -> public System.Single Value
FastReport.Olap.Types.IntValue -> public System.Int32 Value
FastReport.Olap.Types.LongValue -> public System.Int64 Value
FastReport.Olap.Types.SByteValue -> public System.SByte Value
FastReport.Olap.Types.ShortValue -> public System.Int16 Value
FastReport.Olap.Types.StringValue -> public System.String Value
FastReport.Olap.Types.TimeSpanValue -> public System.TimeSpan Value
FastReport.Olap.Types.UIntValue -> public System.UInt32 Value
FastReport.Olap.Types.ULongValue -> public System.UInt64 Value
FastReport.Olap.Types.UShortValue -> public System.UInt16 Value
FastReport.Olap.Slice.MeasureCell -> public FastReport.Olap.Utils.Variant Value
Устаревшие методы. Были заменены на совместимые методы, но вместо типа Variant теперь используется боксинг данных через Object что позволяет передавать не значения с копированием памяти а ссылку на объект.
Нажмите сюда, чтобы развернуть
FastReport.Olap.Types.BoolDTP -> public FastReport.Olap.Types.BoolValue VariantToValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Types.ByteDTP -> public FastReport.Olap.Types.ByteValue VariantToValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Types.CommonDataTypeProcessor``2<T, T2> -> public System.Int32 AddNewVariantValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Types.CommonDataTypeProcessor``2<T, T2> -> public T VariantToValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Types.DateTimeDTP -> public FastReport.Olap.Types.DateTimeValue VariantToValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Types.DecimalDTP -> public FastReport.Olap.Types.DecimalValue VariantToValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Types.DoubleDTP -> public FastReport.Olap.Types.DoubleValue VariantToValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Types.FloatDTP -> public FastReport.Olap.Types.FloatValue VariantToValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Types.IntDTP -> public FastReport.Olap.Types.IntValue VariantToValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Types.LongDTP -> public FastReport.Olap.Types.LongValue VariantToValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Types.Range -> public System.Boolean Match(FastReport.Olap.Utils.Variant)
FastReport.Olap.Types.Ranges -> public System.Boolean Match(FastReport.Olap.Utils.Variant)
FastReport.Olap.Types.SByteDTP -> public FastReport.Olap.Types.SByteValue VariantToValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Types.ShortDTP -> public FastReport.Olap.Types.ShortValue VariantToValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Types.StringDTP -> public FastReport.Olap.Types.StringValue VariantToValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Types.TimeSpanDTP -> public FastReport.Olap.Types.TimeSpanValue VariantToValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Types.UIntDTP -> public FastReport.Olap.Types.UIntValue VariantToValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Types.ULongDTP -> public FastReport.Olap.Types.ULongValue VariantToValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Types.UShortDTP -> public FastReport.Olap.Types.UShortValue VariantToValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Slice.AxisContainer -> public FastReport.Olap.Utils.Variant GetValue(System.Int32, System.Int32)
FastReport.Olap.Slice.MeasuresContainer -> public FastReport.Olap.Utils.Variant GetMeasureValue(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)
FastReport.Olap.Slice.MeasuresContainer -> public FastReport.Olap.Utils.Variant GetSecondAdditionalTotalMeasureValue(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)
FastReport.Olap.Slice.Slice -> public System.Object Calc(FastReport.Olap.Types.Expression, FastReport.Olap.Utils.Variant)
FastReport.Olap.Slice.Slice -> public FastReport.Olap.Utils.Variant CalcFuncForSelectedArea(FastReport.Olap.Types.AggregateFunction, FastReport.Olap.Types.Selection)
FastReport.Olap.Slice.Slice -> public FastReport.Olap.Utils.Variant GetMeasureValue(System.Int32, System.Int32)
FastReport.Olap.Slice.SliceField -> public FastReport.Olap.Utils.Variant GetUniqueValue(System.Int32)
FastReport.Olap.Slice.SliceField -> public FastReport.Olap.Utils.Variant GetUniqueValueFromRecord(System.Int32)
FastReport.Olap.Slice.SliceField -> public System.Int32 GetUniqueValueIdAndVariantFromRecord(System.Int32, FastReport.Olap.Utils.Variant&)
FastReport.Olap.Slice.UniqueValuesFieldFilter -> public System.Void SetAllowedUniqueValueByValue(FastReport.Olap.Utils.Variant, System.Boolean)
FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValueFromParentValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValueFromParentValueByAppend(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 GetValueIdAtValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.CommonUniqueValues -> public FastReport.Olap.Utils.Variant GetVariantByOrder(System.Int32)
FastReport.Olap.Cube.CommonUniqueValues -> public FastReport.Olap.Utils.Variant GetVariantByValueId(System.Int32)
FastReport.Olap.Cube.Cube -> public FastReport.Olap.Utils.Variant GetSourceValue(System.Int32, System.Int32)
FastReport.Olap.Cube.Cube -> public FastReport.Olap.Utils.Variant GetSourceValue(System.Int32, FastReport.Olap.Cube.CubeField)
FastReport.Olap.Cube.Cube -> public System.Int32 GetSourceValueIdAndVariant(System.Int32, System.Int32, FastReport.Olap.Utils.Variant&)
FastReport.Olap.Cube.Cube -> public System.Int32 GetSourceValueIdAndVariant(System.Int32, FastReport.Olap.Cube.CubeField, FastReport.Olap.Utils.Variant&)
FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean AddUniqueValue(System.Int32, FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean AddUniqueValue(FastReport.Olap.Cube.CubeField, FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean SetFieldValue(System.Int32, FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean SetFieldValue(FastReport.Olap.Cube.CubeField, FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.DatePartUniqueValues -> public System.DateTime GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.DayOfWeekPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.DayOfYearPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.DayPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.HalfYearPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.HourPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.MillisecondPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.MinutePartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.MonthPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.QuarterPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.SecondPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.TimePartUniqueValues -> public System.TimeSpan GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValueFromParentValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValueFromParentValueByAppend(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public T2 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 GetValueIdAtValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public FastReport.Olap.Utils.Variant GetVariantByOrder(System.Int32)
FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public FastReport.Olap.Utils.Variant GetVariantByValueId(System.Int32)
FastReport.Olap.Cube.WeekNumberPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.YearMonthPartUniqueValues -> public System.Int32 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Cube.YearPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColOffsetTotalValueForDims(System.Int32, System.String)
FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColOffsetValue(System.Int32)
FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColOffsetValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColRowOffsetValue(System.Int32, System.Int32)
FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColRowOffsetWithLevelValue(System.Int32, System.Int32, System.Int32, System.Int32)
FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetRowOffsetTotalValueForDims(System.Int32, System.String)
FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetRowOffsetValue(System.Int32)
FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetRowOffsetValue(FastReport.Olap.Utils.Variant)
FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetTotalValueForDims(System.String)
FastReport.Olap.Code.Measures -> public FastReport.Olap.Utils.Variant GetDetailValue(System.Int32, System.String)
Устаревшие свойства. Следующие свойства были заменены на использование боксинга вместо типа Variant:
Нажмите сюда, чтобы развернуть
FastReport.Olap.Types.BoolValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
FastReport.Olap.Types.ByteValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
FastReport.Olap.Types.DateTimeValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
FastReport.Olap.Types.DecimalValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
FastReport.Olap.Types.DoubleValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
FastReport.Olap.Types.FloatValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
FastReport.Olap.Types.IntValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
FastReport.Olap.Types.LongValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
FastReport.Olap.Types.Range -> FastReport.Olap.Utils.Variant HighRange { public get; public set; }
FastReport.Olap.Types.Range -> FastReport.Olap.Utils.Variant LowRange { public get; public set; }
FastReport.Olap.Types.SByteValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
FastReport.Olap.Types.ShortValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
FastReport.Olap.Types.StringValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
FastReport.Olap.Types.TimeSpanValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
FastReport.Olap.Types.UIntValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
FastReport.Olap.Types.ULongValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
FastReport.Olap.Types.UShortValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
FastReport.Olap.Slice.CalculateMeasureEventArgs -> FastReport.Olap.Utils.Variant Data { public get; public set; }
FastReport.Olap.Slice.CalculateValueEventArgs -> FastReport.Olap.Utils.Variant Value { public get; public set; }
FastReport.Olap.Slice.SliceField -> FastReport.Olap.Utils.Variant CurrentValue { public get; }
FastReport.Olap.Code.ContainerFieldItem -> FastReport.Olap.Utils.Variant CurrentValue { public get; }
FastReport.Olap.Code.Dimension -> FastReport.Olap.Utils.Variant CurrentValue { public get; }
FastReport.Olap.Code.Dimensions -> FastReport.Olap.Utils.Variant DetailValue { public get; }
FastReport.Olap.Code.Measure -> FastReport.Olap.Utils.Variant CurrentValue { public get; }
Устаревшие типы. Следующие типы устарели и были целиком удалены, т.к. теперь они не используются.
FastReport.Olap.Utils.Variant
FastReport.Olap.Types.IVariantable
FastReport.Olap.Types.UnAssigned
Новые делегаты заменили старые, которые использовали тип Variant.
FastReport.Olap.Slice.Value2Delegate(System.Int32, System.Int32, System.Object, System.Object, System.Int32)
FastReport.Olap.Slice.ValueDelegate(System.Int32, System.Int32, System.Object, System.Int32)
FastReport.Olap.Slice.SliceChartDataHandler(FastReport.Olap.Slice.Slice, FastReport.Olap.Slice.ChartParams, System.String[], System.String[], System.Object[], System.Int32)
Новое поле заменило существующие, теперь вместо типа Variant используется боксинг через Object.
FastReport.Olap.Slice.MeasureCell -> public System.Object Value
Новые методы заменили старые, где использовался тип Variant. Теперь вместо него используется боксинг и передача данных идёт по ссылке, а не по значению, что позволило значительно вырасти скорости.
Нажмите сюда, чтобы развернуть
FastReport.Olap.Types.Range -> public System.Boolean Match(System.Object)
FastReport.Olap.Types.Ranges -> public System.Boolean Match(System.Object)
FastReport.Olap.Slice.AxisContainer -> public System.Object GetValue(System.Int32, System.Int32)
FastReport.Olap.Slice.MeasuresContainer -> public System.Object GetMeasureValue(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)
FastReport.Olap.Slice.MeasuresContainer -> public System.Object GetSecondAdditionalTotalMeasureValue(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)
FastReport.Olap.Slice.Slice -> public System.Object Calc(FastReport.Olap.Types.Expression, System.Object)
FastReport.Olap.Slice.Slice -> public System.Object CalcFuncForSelectedArea(FastReport.Olap.Types.AggregateFunction, FastReport.Olap.Types.Selection)
FastReport.Olap.Slice.Slice -> public System.Object GetMeasureValue(System.Int32, System.Int32)
FastReport.Olap.Slice.SliceField -> public System.Object GetUniqueValue(System.Int32)
FastReport.Olap.Slice.SliceField -> public System.Object GetUniqueValueFromRecord(System.Int32)
FastReport.Olap.Slice.SliceField -> public System.Int32 GetUniqueValueIdAndVariantFromRecord(System.Int32, System.Object&)
FastReport.Olap.Slice.UniqueValuesFieldFilter -> public System.Void SetAllowedUniqueValueByValue(System.Object, System.Boolean)
FastReport.Olap.Cube.BaseDataReaderDataSet -> public System.Object GetValue(System.Int32)
FastReport.Olap.Cube.BaseDataSet -> public System.Object GetValue(System.Int32)
FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValue(System.Object)
FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValueFromParentValue(System.Object)
FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValueFromParentValueByAppend(System.Object)
FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 GetValueIdAtValue(System.Object)
FastReport.Olap.Cube.CommonUniqueValues -> public System.Object GetVariantByOrder(System.Int32)
FastReport.Olap.Cube.CommonUniqueValues -> public System.Object GetVariantByValueId(System.Int32)
FastReport.Olap.Cube.Cube -> public System.Object GetSourceValue(System.Int32, System.Int32)
FastReport.Olap.Cube.Cube -> public System.Object GetSourceValue(System.Int32, FastReport.Olap.Cube.CubeField)
FastReport.Olap.Cube.Cube -> public System.Int32 GetSourceValueIdAndVariant(System.Int32, System.Int32, System.Object&)
FastReport.Olap.Cube.Cube -> public System.Int32 GetSourceValueIdAndVariant(System.Int32, FastReport.Olap.Cube.CubeField, System.Object&)
FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean AddUniqueValue(System.Int32, System.Object)
FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean AddUniqueValue(FastReport.Olap.Cube.CubeField, System.Object)
FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean SetFieldValue(System.Int32, System.Object)
FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean SetFieldValue(FastReport.Olap.Cube.CubeField, System.Object)
FastReport.Olap.Cube.DatePartUniqueValues -> public System.DateTime GetChildValueFromParentValue(System.Object)
FastReport.Olap.Cube.DayOfWeekPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object)
FastReport.Olap.Cube.DayOfYearPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(System.Object)
FastReport.Olap.Cube.DayPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object)
FastReport.Olap.Cube.HalfYearPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object)
FastReport.Olap.Cube.HourPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object)
FastReport.Olap.Cube.IBaseDataSet -> public System.Object GetValue(System.Int32)
FastReport.Olap.Cube.MillisecondPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(System.Object)
FastReport.Olap.Cube.MinutePartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object)
FastReport.Olap.Cube.MonthPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object)
FastReport.Olap.Cube.QuarterPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object)
FastReport.Olap.Cube.SecondPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object)
FastReport.Olap.Cube.TimePartUniqueValues -> public System.TimeSpan GetChildValueFromParentValue(System.Object)
FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 GetValueIdAtValue(System.Object)
FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValue(System.Object)
FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValueFromParentValue(System.Object)
FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValueFromParentValueByAppend(System.Object)
FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public T2 GetChildValueFromParentValue(System.Object)
FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Object GetVariantByOrder(System.Int32)
FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Object GetVariantByValueId(System.Int32)
FastReport.Olap.Cube.WeekNumberPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object)
FastReport.Olap.Cube.YearMonthPartUniqueValues -> public System.Int32 GetChildValueFromParentValue(System.Object)
FastReport.Olap.Cube.YearPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(System.Object)
FastReport.Olap.Code.Measure -> public System.Object GetColOffsetTotalValueForDims(System.Int32, System.String)
FastReport.Olap.Code.Measure -> public System.Object GetColOffsetValue(System.Int32)
FastReport.Olap.Code.Measure -> public System.Object GetColOffsetValue(System.Object)
FastReport.Olap.Code.Measure -> public System.Object GetColRowOffsetValue(System.Int32, System.Int32)
FastReport.Olap.Code.Measure -> public System.Object GetColRowOffsetWithLevelValue(System.Int32, System.Int32, System.Int32, System.Int32)
FastReport.Olap.Code.Measure -> public System.Object GetRowOffsetTotalValueForDims(System.Int32, System.String)
FastReport.Olap.Code.Measure -> public System.Object GetRowOffsetValue(System.Int32)
FastReport.Olap.Code.Measure -> public System.Object GetRowOffsetValue(System.Object)
FastReport.Olap.Code.Measure -> public System.Object GetTotalValueForDims(System.String)
FastReport.Olap.Code.Measures -> public System.Object GetDetailValue(System.Int32, System.String)
Новые свойства заменили или дополнили устаревшие:
Нажмите сюда, чтобы развернуть
FastReport.Olap.Types.BoolValue -> System.Boolean Value { public get; public set; }
FastReport.Olap.Types.ByteValue -> System.Byte Value { public get; public set; }
FastReport.Olap.Types.DateTimeValue -> System.DateTime Value { public get; public set; }
FastReport.Olap.Types.DecimalValue -> System.Decimal Value { public get; public set; }
FastReport.Olap.Types.DoubleValue -> System.Double Value { public get; public set; }
FastReport.Olap.Types.FloatValue -> System.Single Value { public get; public set; }
FastReport.Olap.Types.IntValue -> System.Int32 Value { public get; public set; }
FastReport.Olap.Types.LongValue -> System.Int64 Value { public get; public set; }
FastReport.Olap.Types.Range -> System.Object HighRange { public get; public set; }
FastReport.Olap.Types.Range -> System.Object LowRange { public get; public set; }
FastReport.Olap.Types.SByteValue -> System.SByte Value { public get; public set; }
FastReport.Olap.Types.ShortValue -> System.Int16 Value { public get; public set; }
FastReport.Olap.Types.StringValue -> System.String Value { public get; public set; }
FastReport.Olap.Types.TimeSpanValue -> System.TimeSpan Value { public get; public set; }
FastReport.Olap.Types.UIntValue -> System.UInt32 Value { public get; public set; }
FastReport.Olap.Types.ULongValue -> System.UInt64 Value { public get; public set; }
FastReport.Olap.Types.UShortValue -> System.UInt16 Value { public get; public set; }
FastReport.Olap.Slice.CalculateMeasureEventArgs -> System.Object Data { public get; public set; }
FastReport.Olap.Slice.CalculateValueEventArgs -> System.Object Value { public get; public set; }
FastReport.Olap.Slice.SliceField -> System.Object CurrentValue { public get; }
FastReport.Olap.Format.CustomFormat -> System.String DefaultFormatValue { public get; public set; }
FastReport.Olap.Code.ContainerFieldItem -> System.Object CurrentValue { public get; }
FastReport.Olap.Code.Dimension -> System.Object CurrentValue { public get; }
FastReport.Olap.Code.Dimensions -> System.Object DetailValue { public get; }
FastReport.Olap.Code.Measure -> System.Object CurrentValue { public get; }
Новые типы:
FastReport.Olap.Utils.VMath - заменил тип Variant, теперь математика происходит через инвариантные вычисления с помощью боксинга и преобразование типа.
FastReport.Olap.Types.IValueStruct``1<T> - интерфейс для реализации собственного типа боксинга.
FastReport.Olap.Types.SimpleCompareAction - перечисление для типов действий инвариантной математики.
Изменения для FastCube WinForms и FastCube Mono
Устаревшие поле было заменено на технически совместимое.
FastReport.Olap.Controls.SizingInfo -> public FastReport.Olap.Utils.Variant Data
Новое поле:
FastReport.Olap.Controls.SizingInfo -> public System.Int32 Data
Мы рады объявить о выпуске кроссплатформенной библиотеки для выполнения сложных скриптов на C# под названием FastScript .NET.
Библиотеки для выполнения сложных скриптов предоставляют возможность динамической генерации и исполнения кода, что может быть полезно в различных сценариях, таких как разработка плагинов, создание сценариев для пользователей и т. д.
Работа в ограниченных средах. FastScript .NET построен по классической схеме «лексер-парсер-интерпретатор». Он не использует компиляцию в машинный код и поэтому может работать в средах, где кодогенерация запрещена (Native AOT, iOS, WASM). Скорость работы сопоставима с другими решениями, использующими интерпретацию (lua, js), но она ниже, чем у скомпилированного C# кода.
C# в качестве скриптового языка. FastScript .NET имеет полную интеграцию с платформой .NET и позволяет использовать все библиотеки, фреймворки и API. Единая кодовая база на C# для скриптов позволяет избежать необходимости поддерживать код на нескольких языках.
Экономия памяти. При каждой компиляции скрипта FastScript .NET не создает отдельные dll сборки, а сохраняет информацию в кэше. Это сэкономит память вашего устройства.
С версии 2025.1.21 FastScript .NET входит в состав WinForms, WPF, WEB, Mono и Avalonia паков. Также наша библиотека входит в состав Ultimate .NET решения со всеми исходными кодами.
Узнать больше
Дарим скидку 50% на FastReport .NET и VCL лицензий Team и Site для клиентов с истекшей подпиской. До 31 марта получите доступ к новым функциям, улучшенному дизайнеру и поддержке за полцены, даже если ваш грейс-период уже закончился!
Мы выпускаем обновления 2 раза в год, поэтому действующая подписка гарантирует поддержку самых последних версий сред, отчеты с постоянно улучшаемым функционалом и интерфейсом, доступ к технической поддержке и многое другое.
Напишите нам, чтобы заменить устаревшую лицензию на новую!
В честь праздника дарим скидку в 30% на FastReport VCL редакции Ultimate. Это отличная возможность выгодно приобрести генератор отчётов самой обширной поставки с исходным кодом, инструментами для кроссплатформенной разработки и возможностями OLAP!
13 и 14 февраля успейте сэкономить от 39000 рублей и приобрести для своего приложения:
Полные исходные коды
Дизайнер отчётов с диалоговыми формами
Клиент-серверные компоненты для VCL и Lazarus
Создание отчётов для VCL, FMX и Lazarus
Конверторы из Quick Report, Report Builder, Rave Reports
Поддержку экспорта шаблонов в другие форматы данных
Систему многомерного анализа FastCube для VCL, Lazarus и FMX
Гибкую и открытую архитектуру с поддержкой кастомных объектов отчётов
Хранение готовых документов в облачных хранилищах Google Drive, Next Cloud, OneDrive, Amazon S3, Outlook, Gmail
FastScript и FastQueryBuilder в комплекте
Заморозьте скидку и оплатите позже!
Акция действует до 14 февраля, 23.59. Если вы не можете произвести оплату до этого момента, напишите нам и заморозьте свою скидку на 6 дней, чтобы оплатить позже.