Подгрузка данных из JSON

Обсуждение Stimulsoft Reports.JS
Ответить
dominionish
Сообщения: 13
Зарегистрирован: 18 авг 2016, 09:31

Подгрузка данных из JSON

Сообщение dominionish »

Добрый день!

Решил настроить отчет, который подгружает данные из JSON и показывает его на странице html.
Взял последнюю версию Designer для того чтобы сделать отчет и последнюю версию JS чтобы разместить отчет в html. (готовый отчет тут - https://yadi.sk/d/5Z0_NwVwuWLAm)
В качестве источника выбрал JSON (вариант 1 - https://yadi.sk/d/lm1irTcKuWLHG) и тут пошли какие то непонятные вещи.
Если в дизайнере перейти на вкладку Предварительный просмотр, то мы увидем что из JSON подгрузились только объекты "Подписи". Остальные нет.
Опытным путём выяснил, что это из-за того, что остальные объекты в единственном экземпляре, а "Подписи" - 2 объекта.
Ок, делаем костыль и добавляем по одному пустому объекту в "Акт" и "Замечания" (вариант - 2. https://yadi.sk/d/AEG2S0lluWLZA). Теперь все рендерится. Все классно. Но появились пустые значения.
Это был баг №1.

Теперь попробуем вывести этот отчет в JS, используя JSON вариант 1:
Создаем страничку index.html:

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

<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Register JSON data for report template</title>
    <!-- Report viewer Office2013 style -->
    <link href="../css/stimulsoft.viewer.office2013.css" rel="stylesheet">
	
	<!-- Stimusloft Reports.JS -->
    <script src="../scripts/stimulsoft.reports.js" type="text/javascript"></script>
    <script src="../scripts/stimulsoft.viewer.js" type="text/javascript"></script>
</head>
<body>
	Load 'SimpleList' report template and render it.
	<br><br>
	
	<script type="text/javascript">
		// Create a new report instance
		var report = new Stimulsoft.Report.StiReport();
		// Load report from url
		report.loadFile("../reports/Act.mrt");
		
		// Create new DataSet object
		var dataSet = new Stimulsoft.System.Data.DataSet("Demo");
		// Load JSON data file from specified URL to the DataSet object
		dataSet.readJson({ "Акт": [{ "primaryKey": "13ddcdf5-d970-458e-ba45-12cd04fd312d", "Дата": "2016-12-13T00:00:00.000Z", "Наименование предприятия": "ИП Шакирова Р. И.", "Адрес контрагента": "б-р Гагарина, 66а", "Телефон контрагента": "2-38-53-00", "Номер лицевого счета": "112233445566", "Адрес объекта": "ул Щербакова 8", "Назначение объекта": "Колбасная \"Три поросенка\"", "Заключение": "Не сделано", "Вывод о готовности": false, "Номер": "5-ТТТ/14" }], "Замечания": [{ "ВидЗамечания": "Отсутствуют пломбы на дроссельных устройствах в тепловом узле", "ДатаУстранения": null, "ДатаВыдачи": "2016-08-18T10:42:13.013Z" }], "Подписи": [{ "Контрагент": "Тепловая инспекция АО «КТТК»", "Должность": "Инспектор", "Ф.И.О.": "Оксана" }, { "Контрагент": "Фейковый поставщик", "Должность": null, "Ф.И.О.": "А." }] });
		// Remove all connections from the report template
		report.dictionary.databases.clear();
		// Register DataSet object
		report.regData("Demo", "Demo", dataSet);
        // Render report with registered data
		var options = new window.Stimulsoft.Viewer.StiViewerOptions();
		options.toolbar.zoom = 75;
		options.toolbar.showAboutButton = false;
		options.appearance.scrollbarsMode = true;
		options.appearance.showTooltips = false;

		var viewer = new window.Stimulsoft.Viewer.StiViewer(options, 'StiViewer', false);
		viewer.report = report;
		viewer.renderHtml('stiReportViewer');
	</script>
</body>
</html>
Здесь ситуация получше, но в итоге рендерится только Акт, а вот остальные объекты (Замечания и Подписи) не отображаются по какой то причине. Даже если
использовать JSON из варианта 2, ничего не поменяется. Тут я не нашел какой либо костыль.

Это был Баг #2. Или возможно я что то не так сделал. Поправьте меня если что то не так

Ну и попробуем теперь загрузить JSON не в коде а из файла.

Заменим строчку dataSet.readJson() на dataSet.readJsonFile("../reports/ActTest.json");

В это случае вообще ничего не рендерится. Получается что механизм парсинга JSON из кода и из файла - разный?

Это был баг №3

А вообще меня интересует конкретно как сделать так чтобы в JS рендерились все объекты, которые пришли из JSON.
Aleksey
Сообщения: 2761
Зарегистрирован: 22 апр 2010, 06:57

Re: Подгрузка данных из JSON

Сообщение Aleksey »

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

Нам необходимо некоторое время для анализа.
Мы рассмотрим данные вопросы, и дадим вам знать о результатах в данном топике.

Спаисбо.
Aleksey
Сообщения: 2761
Зарегистрирован: 22 апр 2010, 06:57

Re: Подгрузка данных из JSON

Сообщение Aleksey »

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

Исправили ошибку с Условием. Если condition грузитлся из xml mrt, то была ошибка.

Так же, если в словаре имя колонки с точкой или точками, то возникает ошибка. На данный момент, пожалуйста уберите точки из имени колонки.
Постараемся в ближайшее время это исправить.

Спасибо.
dominionish
Сообщения: 13
Зарегистрирован: 18 авг 2016, 09:31

Re: Подгрузка данных из JSON

Сообщение dominionish »

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

Скачал последнюю версию Stimulsoft.Reports.Net отсюда - https://www.stimulsoft.com/en/downloads/reports-net (влял версию Stimulsoft Reports.Net 2016.1.28 from 2016.08.26)
Запустил свой отчет в дизайнере и в предпросмотре все заработало. Тут спасибо)

Затем скачал последнюю версию Stimulsoft.Reports.JS отсюда https://www.stimulsoft.com/en/downloads/reports-js (взял версию Stimulsoft Reports.JS 2016.1.28 from 2016.08.26)
Затем сделал все так же как и описал в начале темы и опять грузится акт, а вот остальные объекты - Подписи и Замечания не подгружаются. Просто нет данных и нет никакой ошибки. вы еще не исправляли этот баг или он еще не вошел в релиз?
Aleksey
Сообщения: 2761
Зарегистрирован: 22 апр 2010, 06:57

Re: Подгрузка данных из JSON

Сообщение Aleksey »

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

Данные исправления не вошли в последний билд.
Пожалуйста, проверьте релиз 2016.2, который будет выпущен в конце этой недели.

Спасибо.
Ответить