Доброго времени суток!
Подскажите как получить значение системной настройки и записать туда новое значение из кода клиентского модуля?
Bpm 7.3
Нравится
Здравствуйте, Александра!
Получение системной настройки описано в топике:
http://www.community.terrasoft.ru/forum/topic/11241
Продублирую:
необходимо использовать асинхронную функцию querySysSettingsItem. Пример:
this.Terrasoft.SysSettings.querySysSettingsItem("DefaultDaysForMailChimpStatisticGathering", function(value) { //это callback-функция, которая выполняется после получения значения системной настройки с сервера this.set("StatisticGatheringEndDate", Ext.Date.add(new Date(), "d", value)); }, this);
А для записи системных настроек необходимо использовать postSysSettingsValues. Пример:
var postData = { sysSettingsValues: { someItem1: "value1", // someItem1 – название, value1 - значение someItem2: "value2" } }; var callback = function (result) { if (result.success) { // todo } else { // } }; Terrasoft.SysSettings.postSysSettingsValues(postData, callback, this);
Дмитрий, топик я видела.
Можете пояснить параметры функции querySysSettingsItem? value - это и есть значение системной настройки?
Системная настройка нужна для вычислений в одной из функций.
как присвоить обычной переменной это значение? Тоже внутри функции querySysSettingsItem?
postSysSettingsValues параметр callback - то, что выполняется после записи значения в настройку? можно ли передавать пустой параметр или Null?
Александра, отвечу по порядку:
querySysSettingsItem
Функция querySysSettingsItem позволяет асинхронно получить элемент системной настройки.
Параметры:
* @param {String} sysSettingsItemName – Наименование системной настройки.
* @param {Function} callback – Функция, которая будет вызвана для возврата объекта настроек, принимает
* параметр value – значение системной настройки.
* @param {Object} scope – Контекст, в котором будет вызвана функция callback.
callback-функция.
Пример использования
var myVariable; var callback = function(value) { myVariable = value; }; this.Terrasoft.SysSettings.querySysSettingsItem("MySysSettingName", callback, this);
postSysSettingsValues
Функция postSysSettingsValues позволяет сохранить значения нескольких системных настроек.
Параметры
* @param {Object} data – Конфигурационный объект.
* @param {Object} data.sysSettingsValues – Значение для установки значений системных настроек, где имя свойства - это
* код системной настройки, а значение свойства - новое значение.
* @param {Boolean} data.isPersonal – Флаг, указывающий на то, что значения должны сохраниться как персональные.
* @param {Function} callback – Функция, которая будет вызвана при завершении запроса по установке, принимает
* параметр result – результат выполнения.
* @param {Object} scope – Контекст, в котором будет вызвана функция callback.
Если callback нет необходимости использовать, то надо передать "пустую" функцию this.Terrasoft.emptyFn
Пример использования
var data = { sysSettingsValues: { someItem1: "value1", someItem2: "value2" } }; var callback = function (result) { if (result.success) { // todo } else { // } }; this.Terrasoft.SysSettings.postSysSettingsValues(data, callback, this);
или
this.Terrasoft.SysSettings.postSysSettingsValues(data, this.Terrasoft.emptyFn, this);
Спасибо.
Правда сейчас ошибка: Объект не поддерживает свойство или метод "postSysSettingsValues" .
Возможно необходимо подключить какие-то объекты?
Александра, конкретизируйте, пожалуйста, ошибку.
Попробуйте убрать «this»:
Terrasoft.SysSettings.postSysSettingsValues(data, callback, this);
И подключить в define «Terrasoft» (например, define("ServiceHelper", ["ext-base", "terrasoft"], function(Ext, Terrasoft)…)
Также Вы не уточнили в какой схеме происходит ошибка. Если базовый, то необходимо название схемы, если пользовательский то необходим листинг схемы для анализа. Также уточните, в каком момент возникает ошибка (например, в консоли браузера при выполнении работ).
"Вильшанский Дмитрий" написал:Александра, конкретизируйте, пожалуйста, ошибку.
Попробуйте убрать «this»:
Terrasoft.SysSettings.postSysSettingsValues(data, callback, this);
И подключить в define «Terrasoft» (например, define("ServiceHelper", ["ext-base", "terrasoft"], function(Ext, Terrasoft)…)
Также Вы не уточнили в какой схеме происходит ошибка. Если базовый, то необходимо название схемы, если пользовательский то необходим листинг схемы для анализа. Также уточните, в каком момент возникает ошибка (например, в консоли браузера при выполнении работ).
Terrasoft в define подключен. Убрала this, перекомпилировала, но ошибка осталась. Возникает замещаемом модуле LeadQualificationPageV2.js, возникает в момент квалификации лида, отлавливаю ошибку в консоли браузера.
Александра, тогда необходимо использовать метод postSysSettingsValue:
/**
* Асинхронно сохранить значение системной настройки
* @param {String} code Код системной настройки
* @param {Object} value Значение для установки
* @param {Function} callback Функция, которая будет вызвана при завершении запроса по установке
* @param {Object} scope Контекст, в котором будет вызвана функция callback
*/
postSysSettingsValue: function(code, value, callback, scope)
"Вильшанский Дмитрий" написал:Александра, тогда необходимо использовать метод postSysSettingsValue:
/**
* Асинхронно сохранить значение системной настройки
* @param {String} code Код системной настройки
* @param {Object} value Значение для установки
* @param {Function} callback Функция, которая будет вызвана при завершении запроса по установке
* @param {Object} scope Контекст, в котором будет вызвана функция callback
*/
postSysSettingsValue: function(code, value, callback, scope)
Ошибка осталась. Точно такая же.
И при попытке чтения из системной настройки ничего не записывается в переменную, хот ошибки нет. Код для чтения системной настройки следующий:
var number;
var callback = function(value) {
number = value;
};
Terrasoft.SysSettings.querySysSettingsItem("OpportunityLastNumber", callback, this);
Александра, проверьте, пожалуйста, что данная системная настройка присутствует в системе, а также, что знание данной настройки заполнено (не пустое и не NULL).
Tакже прикрепите полный листинг кода замещённой схемы для анализа ошибки.
Системная настройка есть и значение в ней есть.
Ниже выкладываю замещаемую страницу.
Александра, работать с полученным значением системной настройки необходимо внутри callback-функции
var sysSettingName = "OpportunityLastNumber"; // срабатывает при получении системной настройки var callback = function(number) { if (number) { // передаем параметр номер в Продажу insert.setParameterValue("UsrNumber", number, Terrasoft.DataValueType.INTEGER); title.push(number); // обновляем значение системной настройки number = number + 1; Terrasoft.SysSettings.postSysSettingsValue(sysSettingName, number, Terrasoft.emptyFn, this); // ... } }; // асинхронно выбираем системную настройку Terrasoft.SysSettings.querySysSettingsItem(sysSettingName, callback, this);
Также хотелось бы отметить, что Вы используете не postSysSettingsValue, а postSysSettingsValues.
"Вильшанский Дмитрий" написал:Александра, работать с полученным значением системной настройки необходимо внутри callback-функции
var sysSettingName = "OpportunityLastNumber";
// срабатывает при получении системной настройки
var callback = function(number) {
if (number) {
// передаем параметр номер в Продажу
insert.setParameterValue("UsrNumber", number, Terrasoft.DataValueType.INTEGER);
title.push(number);
// обновляем значение системной настройки
number = number + 1;
Terrasoft.SysSettings.postSysSettingsValue(sysSettingName, number, Terrasoft.emptyFn, this);
// ...
}
};
// асинхронно выбираем системную настройку
Terrasoft.SysSettings.querySysSettingsItem(sysSettingName, callback, this);Также хотелось бы отметить, что Вы используете не postSysSettingsValue, а postSysSettingsValues.
С уважением,
Дмитрий Вильшанский
Специалист 2-й линии поддержки
Метод push внутри этой функции не работает, т.к. параметр уже преобразован в число.
А т.к. метод асинхронный, то у него обработка идет позднее, поэтому в параметр продажи и заголовок продажи ничего не записывается.
Как быть в таком случае?
Александра, код, который предоставлен ранее, это только пример реализации.
Объявление title и весь код, который завязан на результат получение системной настройки перенесите во внутрь callback.