Как демоверсию PHP попробовать на сайте?

Обсуждение Stimulsoft Reports.PHP
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Как демоверсию PHP попробовать на сайте?

Сообщение HighAley »

Здравствуйте.

Не могли бы вы уточнить, что у вас в словаре?
Добавились ли новые источники данных?

Спасибо.
Константин
Сообщения: 12
Зарегистрирован: 27 мар 2017, 15:38

Re: Как демоверсию PHP попробовать на сайте?

Сообщение Константин »

В словаре остались только те источники, которые были прописаны в проекте (Dogovor.mrt), новых не добавилось. Использую версию 2016.3, так как в последнем билде проект отображается не корректно, о чем уже сообщал ранее.

Пробовал без подгрузки проекта, источники все равно не подцеплялись.
Константин
Сообщения: 12
Зарегистрирован: 27 мар 2017, 15:38

Re: Как демоверсию PHP попробовать на сайте?

Сообщение Константин »

Попробовал в последнем билде, результат тот же: данные не добавляются, ошибок нет.
Константин
Сообщения: 12
Зарегистрирован: 27 мар 2017, 15:38

Re: Как демоверсию PHP попробовать на сайте?

Сообщение Константин »

Скопировал код прямо из документации

var dataSet = new Stimulsoft.System.Data.DataSet("SimpleDataSet");
dataSet.readJsonFile("Demo.json");

var report = new Stimulsoft.Report.StiReport();
report.regData(dataSet.dataSetName, "", dataSet);

и результат все тот же, то есть его нет.

Что, опять напишете, что ошибка есть, исправите, надо ждать обновления и т.д.?
Aleksey
Сообщения: 2761
Зарегистрирован: 22 апр 2010, 06:57

Re: Как демоверсию PHP попробовать на сайте?

Сообщение Aleksey »

Здравствуйте,

Пожалуйста, добавте следующий метод после регистрации данных:
Stimulsoft.Report.Dictionary.synchronize()

https://www.stimulsoft.com/en/documenta ... ionary.htm

Спасибо.
Константин
Сообщения: 12
Зарегистрирован: 27 мар 2017, 15:38

Re: Как демоверсию PHP попробовать на сайте?

Сообщение Константин »

Попробовал, получаю ошибку:

Stimulsoft.Report.Dictionary.synchronize is not a function

Вот весь js код

<script type="text/javascript">
var options = new Stimulsoft.Designer.StiDesignerOptions();
options.appearance.fullScreenMode = true;
options.toolbar.showSendEmailButton = true;

var designer = new Stimulsoft.Designer.StiDesigner(options, "StiDesigner", false);

// Process SQL data source
designer.onBeginProcessData = function (event, callback) {
<?php StiHelper::createHandler(); ?>
}

// Save report template on the server side
designer.onSaveReport = function (event) {
<?php StiHelper::createHandler(); ?>
}

var dataSet1 = new Stimulsoft.System.Data.DataSet("src");
dataSet1.readJson(<?php echo json_encode(array_utf8_encode_recursive($src)) ?>);

var dataSet2 = new Stimulsoft.System.Data.DataSet("history");
dataSet2.readJson(<?php echo json_encode(array_utf8_encode_recursive($history)); ?>);

var dataSet3 = new Stimulsoft.System.Data.DataSet("customer");
dataSet3.readJson(<?php echo json_encode(array_utf8_encode_recursive($cust)); ?>);

// Load and design report
var report = new Stimulsoft.Report.StiReport();
report.loadFile("reports/Dogovor.mrt");

report.regData(dataSet1.dataSetName, "", dataSet1);
report.regData(dataSet2.dataSetName, "", dataSet2);
report.regData(dataSet3.dataSetName, "", dataSet3);

Stimulsoft.Report.Dictionary.synchronize();

designer.report = report;
designer.renderHtml("designerContent");
</script>
Aleksey
Сообщения: 2761
Зарегистрирован: 22 апр 2010, 06:57

Re: Как демоверсию PHP попробовать на сайте?

Сообщение Aleksey »

Здравствуйте,

В вашем случае, вам необходимо использовать следующий код:

Код: Выделить всё

...
report.regData(dataSet3.dataSetName, "", dataSet3);
report.dictionary.synchronize();

designer.report = report;
Спасибо.
Константин
Сообщения: 12
Зарегистрирован: 27 мар 2017, 15:38

Re: Как демоверсию PHP попробовать на сайте?

Сообщение Константин »

Здравствуйте!

Продолжаю интеграцию сервиса на сайт. Пробую выводить html из отчета. Использую следующий код:

Код: Выделить всё

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <link href="{{ asset('stimulsoft/css/previewHTML.css') }}" rel="stylesheet">
    <!-- Stimusloft Reports.JS -->
    <script src="{{ asset('stimulsoft/scripts/stimulsoft.reports.js') }}" type="text/javascript"></script>
    
    <script type="text/javascript">
        
        // Create a new report instance
        var report = new Stimulsoft.Report.StiReport();
        // Load report from url
        report.loadFile("{{ route('docs.template', ['doc' => $doc]) }}");
        // Get variables from URL to report dictionary
        var vars = getUrlVars();
        report.dictionary.variables.list.forEach(function(item, i, arr) {
            if (typeof vars[item.name] != "undefined") {
                item.valueObject = vars[item.name];
            }
        });
        
        
        // Export report to HTML format and show it
        function exportReportHtml() {
            // Render report
            report.render();
            // Create an HTML settings instance. You can change export settings.
            var settings = new Stimulsoft.Report.Export.StiHtmlExportSettings();
            // Create an HTML service instance.
            var service = new Stimulsoft.Report.Export.StiHtmlExportService();
            // Create a text writer objects.
            var textWriter = new Stimulsoft.System.IO.TextWriter();
            var htmlTextWriter = new Stimulsoft.Report.Export.StiHtmlTextWriter(textWriter);
            // Export HTML using text writer.
            service.exportTo(report, htmlTextWriter, settings);
            // Write HTML text to DIV element.
            var container = document.getElementById("htmlContainer");
            container.innerHTML = textWriter.getStringBuilder().toString();
        };
        
        // Get variables from URL
        function getUrlVars() {
            var vars = {};
            var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,
                function (m, key, value) {
                    vars[key] = decodeURIComponent((value+'').replace(/\+/g, '%20'));
            });
            return vars;
        }
        
    </script>
</head>
<body onload="exportReportHtml()">
    <div id="htmlContainer"></div>
</body>
Если в отчете не используется база данных, то все хорошо работает. Но если есть выборка из базы данных, то он не подцепляет никаких данных и, как следствие, отчет формируется криво. Не могу понять, что необходимо сделать, чтобы данные из базы поступали в отчет. Возможно, экспорт надо начинать по колбеку после report.render()? Но ничего такого в документации не нашел.
Aleksey
Сообщения: 2761
Зарегистрирован: 22 апр 2010, 06:57

Re: Как демоверсию PHP попробовать на сайте?

Сообщение Aleksey »

Здравствуйте,

Пожалуйста, посмтрите следующую статью в документации:
https://www.stimulsoft.com/en/documenta ... tabase.htm

Спасибо.
Константин
Сообщения: 12
Зарегистрирован: 27 мар 2017, 15:38

Re: Как демоверсию PHP попробовать на сайте?

Сообщение Константин »

Вот добавил я строку StiOptions.WebServer.url = "http://mywebsite.com/script.php(например)";
Однако не понятно, в каком виде поступают запросы на указанный url. В консоли вижу, что никаких запросов не поступает, хотя открываю шаблон отчета с двумя запросами к базе данных.
Обратно, я так понимаю, должны передаваться данные в формате json.
Ответить