Страница 2 из 3

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

Добавлено: 03 апр 2017, 12:57
HighAley
Здравствуйте.

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

Спасибо.

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

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

Пробовал без подгрузки проекта, источники все равно не подцеплялись.

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

Добавлено: 03 апр 2017, 13:42
Константин
Попробовал в последнем билде, результат тот же: данные не добавляются, ошибок нет.

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

Добавлено: 03 апр 2017, 13:48
Константин
Скопировал код прямо из документации

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

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

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

Что, опять напишете, что ошибка есть, исправите, надо ждать обновления и т.д.?

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

Добавлено: 03 апр 2017, 18:07
Aleksey
Здравствуйте,

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

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

Спасибо.

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

Добавлено: 04 апр 2017, 06:28
Константин
Попробовал, получаю ошибку:

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>

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

Добавлено: 05 апр 2017, 07:38
Aleksey
Здравствуйте,

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

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

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

designer.report = report;
Спасибо.

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

Добавлено: 02 май 2017, 08:11
Константин
Здравствуйте!

Продолжаю интеграцию сервиса на сайт. Пробую выводить 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()? Но ничего такого в документации не нашел.

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

Добавлено: 02 май 2017, 08:40
Aleksey
Здравствуйте,

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

Спасибо.

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

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