Тут не вопрос, а скорее заметка для тех кто столкнется с такой же проблемой.
Дано: Stimulsoft Report.JS, веб-сервис на котором реализован адаптер данных, и с которым успешно взаимодействует вьювер с фронтовой части приложения.
Нужно: Добавить сервис для построения отчетов на сервере(например по расписанию), но без прямого доступа к БД(т.е. с использованием существующего адаптера данных).Все это должно работать на node.js.
При добавлении в проект стимулсофта через
Код: Выделить всё
var Stimulsoft = require("stimulsoft-reports-js");
Код: Выделить всё
Stimulsoft.StiOptions.WebServer.url = "http://localhost/report";
Как обойти:
Я решил эту проблему следующим образом, вместо:
Код: Выделить всё
var Stimulsoft = require("stimulsoft-reports-js");
Код: Выделить всё
Stimulsoft = require("stimulsoft-reports-js/Scripts/stimulsoft.reports").Stimulsoft;
Stimulsoft.ExternalLibrary.xmldoc = require("xmldoc");
//метод получения данных до инициализации под node.js
const v = Stimulsoft.Report.Dictionary.StiDataAdapterService.prototype.serviceType;
//заменяем функцию на исходную до инициализации, а она уже потом подставится
//при инициализации, и по сути мы пропустим подмену функции
Stimulsoft.System.NodeJs.callRemoteApi = v.callRemoteDataAdaptersApi;
//говорим что мы не в браузере
Stimulsoft.System.NodeJs.useWebKit = false;
//применяем настройки для node.js
Stimulsoft.System.NodeJs.initialize();
//указываем сервер с адаптером данных
Stimulsoft.StiOptions.WebServer.url = "http://localhost/report"
Вопрос к поддержке Стимулсофт, подскажите, допустим ли описанный выше вариант или может быть есть более простой способ обойти описанное поведение?