Как задать переменную-Список node js?

Обсуждение Stimulsoft Reports.JS
Ответить
mister N
Сообщения: 4
Зарегистрирован: 09 окт 2016, 19:16

Как задать переменную-Список node js?

Сообщение mister N » 30 мар 2017, 13:23

Доброго времени.
В случаи, если у нас в отчете есть переменная, например, с датой и в настройках указано инициализировать значение, а не выражение, то изменить эту переменную можно так:

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

var Stimulsoft = require('stimulsoft-reports-js');
var report = new Stimulsoft.Report.StiReport();
report.loadFile(mrt);
report.dictionary.variables.getByName("period_from").val = new Date(2017, 1, 20);
console.log(report.dictionary.variables.getByName("org")._type.getStiTypeName()) // вернет "StringList"
// Такие варианты не работают:
report.dictionary.variables.getByName("org").val = 250;
report.dictionary.variables.getByName("org").val = [250];
report.setVariable("org", [250]);
// как же правильно?
Можно ли как-то задать значение переменной org, в типе которой указано Строка Список? Пробовал по аналогии с датой класть в значение массив, просто число - не получалось. И можно ли как-то использовать переменные, у в настройках "Инициализировать" - "Значение"?
Нашел на эту тему только строчку отсюда https://stimulsoft.zendesk.com/hc/en-us/
report.dictionary.variables.getByName("var1").valueObject = "your value"; (How to set variable value with JavaScript code)
Там подобным образом еще данные из урла парсят и в переменные отчета заносят и т.д. Но тут опять же, непонятно, как быть с разными типами переменных. Скорее всего, придется как-то получать ключ нужного значения и его что-ли задавать....
И еще вопрос, есть такой объект настроек StiOptions.WebServer.url = "/handler.php", работает в js-версии и позволяет не прописывать параметры соединения с базой данных в каждом отчете. Можно ли как-то использовать что-то подобное в node?
Aleksey
Сообщения: 1976
Зарегистрирован: 22 апр 2010, 02:57

Re: Как задать переменную-Список node js?

Сообщение Aleksey » 03 апр 2017, 17:59

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

В StiOptions.WebServer.url указывается адрес куда отправлять запросы для доступа к базам(где находятся адаптеры), тоже самое и для nodejs.

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

Re: Как задать переменную-Список node js?

Сообщение Aleksey » 04 апр 2017, 08:30

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

По поводу переменных -

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

var newVariable = new Stimulsoft.Report.Dictionary.StiVariable();
newVariable.name = "Variable";
newVariable.alias = "Variable";
newVariable.type = Stimulsoft.System.StimulsoftStringList;
newVariable.requestFromUser = true;

var di = new Stimulsoft.Report.Dictionary.StiDialogInfo();
di.allowUserValues = false;
di.keys = ["1", "2", "3", "4"];
di.values = ["1", "2", "3", "4"];

newVariable.dialogInfo = di;

report.dictionary.variables.add(newVariable);
designer.onPreviewReport = function (args) {
  args.report.setVariable("Variable", ["1", "4"]);}
Также мы сделали некоторые исправления, будут доступны в следующем билде.

Спасибо.
mister N
Сообщения: 4
Зарегистрирован: 09 окт 2016, 19:16

Re: Как задать переменную-Список node js?

Сообщение mister N » 04 апр 2017, 13:29

Aleksey писал(а):Здравствуйте,

В StiOptions.WebServer.url указывается адрес куда отправлять запросы для доступа к базам(где находятся адаптеры), тоже самое и для nodejs.

Спасибо.
А как оно собственно в ноде выглядит? Ведь console.log(StiOptions); вызывает ReferenceError: StiOptions is not defined
Вот такие попытки достучаться до опций тоже ни к чему не приводят.

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

var Stimulsoft = require('stimulsoft-reports-js');
console.log('StiOptions', Stimulsoft.WebServer);
console.log('StiOptions', Stimulsoft.StiOptions);
console.log('StiOptions', Stimulsoft.Report.StiOptions);
Наверно, я установил не правильно. Просто зашел сюда (ну, склонировал себе на компьютер) и запустил npm install https://github.com/stimulsoft/Samples-J ... d%20Report Надо было по-другому?
HighAley
Сообщения: 1955
Зарегистрирован: 08 июн 2011, 07:36

Re: Как задать переменную-Список node js?

Сообщение HighAley » 06 апр 2017, 08:10

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

Мы нашли проблему. Надо сделать некоторые изменения для того, чтобы класс StiOptions был доступен в node.js.
Мы постараемся решить проблему в нашем следующем билде.

Спасибо.
Сергей
Сообщения: 16
Зарегистрирован: 10 июн 2016, 10:22

Re: Как задать переменную-Список node js?

Сообщение Сергей » 07 апр 2017, 08:08

mister N, как временный хак можно просто поправить stimulsoft.reports.js изменив в конце файла
if (typeof module === "object") {
module.exports = Stimulsoft;
module.exports.StiOptions = StiOptions;
}
Aleksey
Сообщения: 1976
Зарегистрирован: 22 апр 2010, 02:57

Re: Как задать переменную-Список node js?

Сообщение Aleksey » 10 апр 2017, 10:52

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

Спасибо за предоставленное обходное решение.
Ответить