Добрый день

Добавил пользовательские системные настройки.

Пытаюсь в схеме карточки Обращения Портала получить значение системных настроек.

Terrasoft.SysSettings.querySysSettingsItem(
   "test1", 
   function(value){
     console.error(value);
   }, 
this);

В рабочем месте пользователя портала в консоли получаю "undefined"

В рабочем месте обычного пользователя получаю корректное значение.



Флаг "Разрешить для пользователей портала" в системных настройках установлен. Хотя он на первый взгляд ни на что не влияет. Т.к. на стороне портала свободно получаю значение системных настроек без этого флага.

Разграничения прав доступа к системным настройкам нет

Версии 7.11.0 - 7.11.3

 

Нравится

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

иииии ещё есть справочник, который регулирует доступ портальных пользователей на объекты. А поскольку "сист. настройка" и "значение сист. настройки" - 2 объекта в системе, то я бы их тоже добавил в перечень(ну или посмотрел, есть ли они там вообще)

Варфоломеев Данила,

Так в том и проблема, что большая часть значений системных настроек получить указанным способом получается на стороне портала

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

SQL-скриптом во время его установки инициализируются некие системные переменные, их значения, для этого происходит UPDATE вызов для таблицы SysSettingsValue
При этом не смотря на то, что данные в БД претерпевают изменения, в запущенной на этот момент версии приложения, текущие и вновь подключающиеся пользователи продолжают работать со старыми значениями, которые очевидно помещены в Redis и фактически являются закешированными на стороне сервера, проблема конечно решается сбросом Redis.
Но мне кажется существует некий способ - сбросить или обновить закешированные значения системной переменной обособленно "вручную" принудительно, есть ли такая возможность ?

PS: Возможно существуют специализированные методы JS/C# ?

Нравится

5 комментариев

Добрый день, Илья.

Можем предложить вам следующее решение:

UserConnection.ResetSettingsCache() – сбрасывает все кэшируемые системные настройки.
UserConnection.ResetSettingsCache(string settingsCode) - сбрасывает все кэш определенной системной настройки.

Это C# или JS имплементация методов ?

Илья, уточняю - С#

Для JS аналога нет ?
Просто вроде как изменение системной переменной которое происходит из UI, тоже корректно обновляет кешь, предполагаю что для JS в API есть аналогичные методы.

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

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

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

7.9.2
По умолчанию в системе насколько я понимаю для объекта SysSettingsValue нет прав даже у Supervisor пользователя, т.к. ESQ-запросом получить ничего невозможно.

Почему такое ограничение введено на эту таблицу ?

Нравится

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

Илья, здравствуйте!

Это системная таблица. Также через ESQ нет возможности получить данные из объекта SysAdminOperationGrantee. Пример получения значения системной настройки с кодом DataServiceQueryTimeout:

Terrasoft.SysSettings.querySysSettings(["DataServiceQueryTimeout"], function(sysSettings) {
	if (!Ext.isEmpty(sysSettings.DataServiceQueryTimeout)) {
		this.dataServiceQueryTimeout = sysSettings.DataServiceQueryTimeout;
	}
}, this);

Причина: значения системных настроек могут отличаться для разных ролей пользователей. По этой причине использовать ESQ не корректно.

Как выяснилось в число "особенных таблиц" так же входит "SysAdminUnitInRole"

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