Мне необходимо сохранить определенную строку в системе, чтобы она была доступна всем пользователям. Как это лучше сделать?

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

Нравится

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

Добрый вечер.

Вам стоит смотреть в сторону проверки при помощи esq наличия в бд в таблице SysSettings нужного Вам значения. Если значения нет - создавать его insert-ом. Если же оно есть - изменять значение при помощи примерно следующего кода:

var config = {
	sysSettingsValues: {},
	isPersonal: false
};
 
config.sysSettingsValues['test'] = 'DONE';
 
 
Terrasoft.SysSettings.postSysSettingsValues(config, function(result){
	/some code
}, this);

"Мотков Илья" написал:

Добрый вечер.

Вам стоит смотреть в сторону проверки при помощи esq наличия в бд в таблице SysSettings нужного Вам значения. Если значения нет - создавать его insert-ом. Если же оно есть - изменять значение при помощи примерно следующего кода:

var config = {

        sysSettingsValues: {},

        isPersonal: false

};



config.sysSettingsValues['test'] = 'DONE';





Terrasoft.SysSettings.postSysSettingsValues(config, function(result){

        /some code

}, this);


Спасибо за ваш ответ. Как изменять/считывать понятно из системных настроек понятно. Больше нет никакой возможности хранить глобальные параметры кроме системных настроек?

У меня следующая задача, например в bpmonline есть интеграция с mandrill. Так вот для подключения этого сервиса мы вводим apiKey, который сохранится в системных настройках. Вот я аналогичную интеграцию делаю с другим сервисом и встал такой же вопрос, как лучше/проще всего хранить apiKey?

"ta4" написал:как лучше/проще всего хранить apiKey

В любом случае в БД. Следовательно либо системная настройка, либо, создайте свой объект и храните там, плюс своего объекта = можете настроить ему права доступа.

"Максим Шевченко" написал:
ta4 пишет:

как лучше/проще всего хранить apiKey

В любом случае в БД. Следовательно либо системная настройка, либо, создайте свой объект и храните там, плюс своего объекта = можете настроить ему права доступа.


Спасибо за ответ Максим.
А есть какой-нибудь пример, как добавить системную настройку программно? (через конфигурацию)

Системные настройки не задумывались как что-то, что возможно создавать в рантайме, по данной причине нет уже готовых методов для их создания. Однако они все также как и любые другие данные являются записью в бд в соответсвующей таблице. По данной причине Вы можете как напрямую добавлять свои записи используя Terrasoft.InsertQuery, так и создать свой универсальный метод (или же вэб сервис) и использовать его.

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

Добрый день,
Подскажите, в каких единицах измеряется Системная настройка "Интервал проверки уведомлений RemindingsCheckInterval" ?

Нравится

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

Добрый день, Маргарита!

Значение данной системной настройки измеряется в миллисекундах.

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

Есть ли какой-нибудь стандартный способ получения значения СН из серверного кода с последующим её увеличением?
Суть такова - в цикле, при помощи INSERT, создаются новые записи объекта и им нужно присваивать порядковыее номера.

Нравится

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

Для получения/заполнения системных переменных из серверного кода можно использовать:

Terrasoft.Core.Configuration.SysSettings.GetValue(UserConnection, "SysSettingsName");
 
Terrasoft.Core.Configuration.SysSettings.SetValue(UserConnection, "SysSettingsName","SysSettingsValue");

Да, с GetValue все ок, спасибо!

А вот с SetValue какая-то проблема:

System.Security.SecurityException: Настройка "Текущий номер операции" не является персональной
   в Terrasoft.Core.Configuration.SysSettings.SetValue(UserConnection userConnection, String code, Object value)
   в Terrasoft.Core.Process.ChargeAndDebitInterestProcess.ScriptTask1Execute(ProcessExecutingContext context)
Ошибкой завершилась сборка со следующим параметром Zone:
MyComputer

Здравствуйте, Акмаль!
В таком случае пользуйтесь другим вариантом метода:

Terrasoft.Core.Configuration.SysSettings.SetValue(UserConnection, UserConnection.RootAdminUnitGroupId,
					"SysSettingsName", "SysSettingsValue");
Показать все комментарии

7.3.0.745 CRM

Мастер разделов чудесная вещь, но, увы, очень не удобно им пользоваться для разработок и тестирования разных конфигураций.
Он использует системную настройку "Текущий пакет" (CurrentPackageId) для записи изменений. Но системные настройки одни для всех конфигураций, а пакеты наоборот - для каждой конфигурации свои. Таким образом, при изменении активной конфигурации для того, чтобы воспользоваться мастером разделов, необходимо поменять значение системной настройки "Текущий пакет" (CurrentPackageId) на пакет из этой конфигурации.
Является это нормальной ситуацией или этот момент будет исправляться? А может быть я и вовсе что-то не так понимаю? :wink:

Нравится

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

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

Здравствуйте, Дмитрий!

В версии 7.3.0.745 и младше, действительно при изменении активной конфигурации для того, чтобы воспользоваться мастером разделов, необходимо поменять значение системной настройки "Текущий пакет" (CurrentPackageId) на пакет из этой конфигурации.

С версии 7.4 можно будет выбирать значение системной настройки "Текущий пакет" для каждой конфигурации.

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

Нужно было, чтобы массовое редактирование было доступно только определенным группам пользователей (а не всем сразу). Сделал. С возможностью множественного выбора. А как - не скажу
:razz:

Нравится

Поделиться

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

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

В конфигурации есть ряд системных настроек, в которых указывается контакт (руководитель того или иного отдела).

В бизнес-процессах используются соответствующие им параметры для назначения ответственного по задачам и в других элементах.

Например, есть системная настройка Director, а в процессе используется параметр toDirector с типом "Роль в процессе".

Появился новый отдел, а с ним и необходимость назначать задачи еще на одного руководителя.
Я добавил новую системную настройку, но никак не могу понять, как мне добиться появления еще одного параметра процесса связанного с ней.

Самое смешное, год назад как-то это делал:smile:. Старость - не радость.

Подскажите, пожалуйста, как проделать данный фокус.

Нравится

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

Александр, если я правильно поняла Вашу задачу, ее можно реализовать добавив в диаграмму БП еще один параметр. В определенном событии процесса, например, на OnStart, заполнять добавленный параметр значением системной настройки, посредством вызова функции function GetSystemParameterValueEx(SystemParameterCode, Force).

Да, это, конечно, вариант, но хотелось бы обойтись без скриптов.

В нашей версии (3.2.1.65) окно администратора выглядит несколько иначе (см. прикрепленный файл)

Как видите, уже существуют параметры, которые каким-то мистическим образом связаны с соответствующими системными настройками. Присвоение значений в скрипте не производится.

Собственно, мне бы хотелось сделать еще один такой параметр и связать с настройкой.

Извините, сжало картинку.

Вот здесь крупнее
http://i.piccy.info/i7/db121ed40aa52344dd5cfd73cd5e975a/1-5-3860/447220…

Здравствуйте, Александр!

Без скриптов не получится, т.к. окно передачи параметров в Вашей версии строится бинарными файлами, и его не получится доработать так, чтобы оно принимало и системные настройки.

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

01

и в обработчик события добавить к\программный код следующего вида:

	var ParamValue = GetSystemParameterValueEx(SystemParameterName, true;)
	var Diagram = GetDiagramByItem(ActionItem);
	var ParamSet = WFSetParamValueDirect(Diagram, ParamName, ParamValue);
	IsComplete.Value = true;
	ResultLinkCodes.Value = ParamSet ? 'Yes' : 'No';

SystemParameterName - заменить на название своей системной настройки;
ParamName - название параметра диаграммы.

02

Ну нет, так нет.
Реализовал на скриптах.
Спасибо!

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

Добрый день! Подскажите пожалуйста каким способом в 1С код можно подтянуть значение из системных настроек Террасофта? Пробовал:

TS.Services.GetSystemParameterValueEx("MyData")

где TS это TS = CreateObject("TSDskObjectLibrary.DskConnector")
и т.д. по образцу

Но выдает ошибку "агрегатный объект не найден". Заранее спасибо!

Нравится

1 комментарий

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

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

sys = CreateObject("TSObjectLibrary.ScriptUtils");

sys.Connector = TS;

a = sys.GetSystemSettingValue("CustomerID", 0)

Terrasoft Support Team

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