Добрый день всем !

Посоветуйте, пожалуйста, есть ли возможность для своего пакета создать набор параметров сеанса, который будет инициализироваться при авторизации пользователя. Чтобы этот набор можно было читать на клиенте. Что-то вроде глобальных переменных как Terrasoft.SysValue.CURRENT_USER.value.

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

Привожу отрывок кода, кот. выполняется при нажатии на кнопку на форме записи Opportunity:

this.Terrasoft.SysSettings.querySysSettingsItem("SAMServerURL", function(_SAMServerUrl) {

                    SAMServerUrl = _SAMServerUrl;

                }, this);                

this.Terrasoft.SysSettings.querySysSettingsItem("SAMServerOrganizationID", function(_OrgID) {

                    OrganizationID = _OrgID;

                }, this);       

                var UserName = "";

                var esq = Ext.create("Terrasoft.EntitySchemaQuery", {

                    rootSchemaName: "G2MHGroup"

                });              

                esq.addColumn("G2FirstName", "FirstName");

                esq.addColumn("G2BPMUser", "BPMUser");

                esq.filters.add("G2BPMUser", Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "G2BPMUser", Terrasoft.SysValue.CURRENT_USER.value));

                esq.getEntityCollection(function (result) {

                    if (!result.success) {

                        this.showInformationDialog("Ошибка запроса данных схемы G2MHGroup");

                        return;

                    }

                    result.collection.each(function (item) {

                        UserName = item.get("FirstName"); 

                ReadOnlyFlag = "false";

                RequestString = SAMServerUrl + "ShowSheet.aspx?OrgID="+OrganizationID+"&Popup=Y&User="+UserName+"&Product=Bluesheet%20&ProductKey="+activeRow+"&ReadOnly="+ReadOnlyFlag+"","Blue Sheet"

                

                var str = "width=1003, height=674, scrollbars=yes, status=0, menubar=no, resizable=yes";              

                window.open(RequestString, str);

                    });

                }, this);

Хочется сделать один запрос к серверу чтобы прочитать все что нужно. И его можно сделать один раз при авторизации а не каждый раз при нажатии на кнопку.

Спасибо !

 

 

 

 

 

Нравится

2 комментария

Михаил, здравствуйте!





Начиная с версии 7.11.3, в приложении появился файловый контент

(есть статья на академии), там имеется механизм bootstraps файлов, это файлы код которых выполняется с момента загрузки JS ядра Terrasoft, но до момента загрузки конфигурации, там можно выполнить запрос в базу данных и сохранить результаты в глобальную переменную в среде JS.

 

Если версия более старая, то можно определить свой метод в схеме и задействовать механизм ленивой инициализации

(с кешированием в глобальной переменной в среде JS). Информацию по реализации ленивой инициализации, можно найти в интернете.

 

Также можно использовать механизм кеширования.

 

Спасибо большое  !  У меня версия 7.11.1,  попробую кеширование.

Показать все комментарии

Собственно, после определенного времени в террасофте вылетает окно с "ваш сеанс работы с TSClient.exe превысил допустимое время и был завершен сервером".
Как для определенных пользователей сделать так, чтобы это окно не вылезало?

Нравится

4 комментария

Ну даже точнее, чтобы и окна не было, и сеанс не завершался.

Александр, мне кажется, Вы подошли к решению задачи "в лоб" :smile:

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

Клиент не хочет пока замарачиваться с лицензиями, но хочет чтобы не вылетало.
Вопрос: можно ли решить "в лоб" или это в ядре записано?

Александр, решить то можно, но никто за это не возьмется по нескольким причинам:
1. Данная реализация бессмысленна, поскольку это политика лицензирование и для решения задачи есть именные лицензии;
2. для реализации, для клиента нужно пересобирать специальные исполняемые файлы, в дальнейшем что приведет к ограничению возможности обновления клиента;
3. Задача довольно трудоемка.

Поэтому, предлагаю клиенту обсудить вопрос изменений лицензий, если всё быстро согласовать, то в течении дня можно всё настроить - такой вариант явно быстрее и проще :wink:

Показать все комментарии