При добавлении или редактировании концертной программы для случая, если она ежедневная, выполнять проверку: если в результате изменений общее число активных ежедневных программ в системе будет превышать значение 3 (UsrSysSetingMaxNumberActiveDailyPrograms) то выводить сообщение об ошибке
Способ реализации:
обработчики в коде JavaScript страницы редактирования с применением клиентского ESQ и механизма валидации.

Нравится

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

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

Не совсем понимаю, что вы подразумеваете под "концертной" программой? Это объект в системе наподоби контактов или контрагентов?

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

2) Использовать событийный слой. Тут логика похожая, только можно считывать значение системной настройки UsrSysSetingMaxNumberActiveDailyPrograms и уже по нему выполнять необходимую логику. Также в этой событийной логике вы можете прописать логику добавления значения к этой системной настройке.

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

Нужно чтобы система автоматически удаляла запись в справочнике через год с момента занесения 

Суть:

Нужно чтобы система автоматически убирала из справочника (Черный список Email адресов) email адреса через год после их внесения в справочник ЧС

Нравится

6 комментариев
Лучший ответ

Tigran Gevorgyan пишет:
Что Вы имеете введу  "сделать отдельное представление"  Создать отдельный раздел,  записывать туда все записи из черного списка с полем даты создания и в БП определить запись которая произведена год назад и если да, то удалить запись из раздела и из справочника ?

Не совсем. Я имею ввиду на уровне базы данных создать представление (view), которое настроить таким образом, чтобы оно содержало нужные для удаления записи из черного списка (соответствовало условию дата создания больше года).

А потом для работы с ним из конфигурации создать новую EntitySchema.

 

Чтобы связать EntitySchema с представлением, необходимо убедиться в соблюдении следующих условий:
1. В свойствах объекта установлен признак “Представление в базе данных”.

2. Название объекта соответствует названию представления в БД.
3. Структура объекта и представления идентичны.

Со стороны приложения View воспринимается как обычный объект.

 

Посмотрите статью по этой ссылке там приведен пример работы с представлением. Возможно, так станет понятнее, о чём речь идет.

 

Tigran Gevorgyan пишет:
Я думая это можно как-то осуществить через системные настройки

На данном этапе не вижу необходимости в добавлении новой системной настройки и использовании её  в бизнес-процессе.

Добрый день.

 

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

 

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

Алла Савельева,

Добрый день. Спасибо за отклик!

Что Вы имеете введу  "сделать отдельное представление"  Создать отдельный раздел,  записывать туда все записи из черного списка с полем даты создания и в БП определить запись которая произведена год назад и если да, то удалить запись из раздела и из справочника ?

 

Алла Савельева,

 

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

 

Tigran Gevorgyan пишет:
Что Вы имеете введу  "сделать отдельное представление"  Создать отдельный раздел,  записывать туда все записи из черного списка с полем даты создания и в БП определить запись которая произведена год назад и если да, то удалить запись из раздела и из справочника ?

Не совсем. Я имею ввиду на уровне базы данных создать представление (view), которое настроить таким образом, чтобы оно содержало нужные для удаления записи из черного списка (соответствовало условию дата создания больше года).

А потом для работы с ним из конфигурации создать новую EntitySchema.

 

Чтобы связать EntitySchema с представлением, необходимо убедиться в соблюдении следующих условий:
1. В свойствах объекта установлен признак “Представление в базе данных”.

2. Название объекта соответствует названию представления в БД.
3. Структура объекта и представления идентичны.

Со стороны приложения View воспринимается как обычный объект.

 

Посмотрите статью по этой ссылке там приведен пример работы с представлением. Возможно, так станет понятнее, о чём речь идет.

 

Tigran Gevorgyan пишет:
Я думая это можно как-то осуществить через системные настройки

На данном этапе не вижу необходимости в добавлении новой системной настройки и использовании её  в бизнес-процессе.

Алла Савельева,

Спасибо))

Tigran Gevorgyan,

Если будут вопросы, обращайтесь

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

Добрый день!

Считаю, что была бы полезной функция настройки (скрытия лишних) элементов данной панели:

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

Можно не показывать значок Mail, если у пользователя нет Mailbox, например...

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

Скрыть аналогично, только намного проще, в переопределённой схеме дописать в diff новый блок "operation": "merge" для ненужного элемента, в которой жёстко или по какому-то условию менять видимость.

Зверев Александр,

Насколько я понимаю, речь идет о пользовательской настройке, так как понятно, что с помощью разработки можно сделать даже свою кастомную панель.

Алла, я на всякий случай, вдруг нужно решить задачу прямо сейчас, а не когда (или если) реализуют идею.

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

Можно ли сделать запрет к определенным системным настройкам а к некоторым дать доступ пользователю?

Нравится

8 комментариев
Лучший ответ

Добрый день!
Да, заходите в системную настройку, указываете пункт "Разрешить по операции". Системную операцию используете существующую, либо создаете новую.

Добрый день!
Да, заходите в системную настройку, указываете пункт "Разрешить по операции". Системную операцию используете существующую, либо создаете новую.

Сидоров Александр В.,

в 7.12 такого нет, наверно это в более новой версии

Ещё один повод обновиться сразу до актуальной.

Зверев Александр,

вот в этом и проблема, уже на работе на уши всех поставил по этой теме, но у меня руководство дольше согласовывает чем террасофт выпускает обновления - месяц уходит на одно обновление.

Можно попробовать развернуть демку новой версии и точечно портировать логику прав на системные настройки (если она не вынесена частично в ядро). Но когда дойдёт очередь до планового обновления, может выйти боком.

Вот потому и думаю, и так обновления проходят не без проблем, а так ещё добавятся

В таком случае стоит обновляться. В версии 7.13 права уже есть.

У нас сейчас 7.12.4, будет стимул проставить на прод. Спасибо

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

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

Не могу получить конкретную системную настройку из клиентского кода (ошибка на скриншоте) на пользователях-аутсорсерах (не входят в роль "Все сотрудники компании", если это важно). При этом эта же настройка нормально загружается для остальных пользователей, этот же пользователь нормально получает другие настройки. Пересоздавать настройку пробовал, не помогает. В чем может быть дело/как починить?

Нравится

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

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

Уточните, пожалуйста, как именно Вы получаете значение системной настройки? Есть листинг кода? 

 

Вильшанский Дмитрий, 

this.Terrasoft.SysSettings.querySysSettingsItem('SlaCalculationEnabled', function (slaEnabled) {console.log(slaEnabled)})

При этом если запросить какую-нибудь несуществующую настройку, то ошибка не выводится, приходит просто undefined

Добрый день.

Ошибка не совсем правильно передает суть проблемы. Дело в правах – т.е. у пользователя нет прав на данную настройку.

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

Добрый день, не могу установить значения системной настройки из кода, код отрабатывает без ошибок но значение на меняется, подскажите в чем может быть проблема, настройка не персональная и не кешируемая. Заранее благодарен.
Код установки значения:
 

 Terrasoft.Core.Configuration.SysSettings.SetDefValue(_userConnection, "CRMTMessagesOffset", _messageOffset);
_userConnection.ResetSettingsCache("CRMTMessagesOffset");

 

Нравится

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

Дмитрий, 

Следующий код работает:

//Установить значение системной настройки
Terrasoft.Core.Configuration.SysSettings.SetValue(UserConnection, "SysSettingsName","SysSettingsValue");
 
//Установить значение системной настройки без учета прав
Terrasoft.Core.Configuration.SysSettings.SetValue(UserConnection, UserConnection.RootAdminUnitGroupId, "SysSettingsName", "SysSettingsValue");

                                        

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

Добрый день.

У нас возник выопрос, можно ли изменть значение системных настроек через Odata?
При попытке сохранить изменения под супервизором через odata нам выдаёт ошибку Forbidden.
Мы предполагаем, что это может быть связано с тем, что доступ к ним через Odata закрыт.
Подскажите, может кто то сталкивался с подобной проблемой.

Нравится

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

Здравствуйте, Богдан!

Изменение значений системных настроек через OData не предусмотрено.

Есть два варианта решения этой задачи:
1) Создать собственный web сервис, который будет менять значения системных настроек в таблице SysSettingsValue
2) Создать объект, к которому будут идти обращения по OData. Логикой в созданном объекте (или триггерами в БД) необходимо будет переносить новые значения в таблицу SysSettingsValue.

Раньше было нельзя, только несколько таблиц с префиксом Sys открыты на запись

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

Добрый день!
Версия 7.9.0.1228 Bundle Service-Marketing-Sales On-site

При разрешении обращения контакту отправляется письмо с ссылкой на оценку качества обслуживания.
Поскольку система стоит on-site, эта ссылка является локальным адресом, который недоступен клиентам, т.к. они не подключены к VPN. Необходимо сменить этот адрес на внешний, чтобы ссылка стала доступна. Попробовал установить необходимый внешний адрес в системной настройке "адрес сайта", но это не помогло. Подскажите, пожалуйста, как можно реализовать эту задачу. Заранее спасибо!

Нравится

Поделиться

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

Добрый день, Олег!

Подробная информация о внесении необходимых настроек рассмотрена в руководстве пользователя: https://academy.terrasoft.ua/documents/service-enterprise/7-9/nastroyka…
Но следует обратить внимание на тот факт, что сайт должен быть доступен по внешней ссылке, в противном случае нет смыслса указывать в системную настройку какой-либо внешний адрес (так как по этому адресу клиент все равно сможет достучаться до сайта).

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

Добрый день, необходимо изменить тип поиска с типа «Начинается с» на «Содержит». В системных настройках в настройке "Тип сравнения для строковых колонок" установили значение по умолчанию равное “1”, перезашли в црм, кеш очистили, но все равно тип поиска не изменился, все еще необходимо искать в таком формате: %продукт%. Подскажите пожалуйста, в чем может быть проблема?

Нравится

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

Здравствуйте, Мария!

Системная настройка "Тип сравнения для строковых колонок" влияет только на поиск в быстром фильтре. В версии 7.9.0 поиск в быстром фильтре для справочных полей был доработан - при фильтрации по справочному полю система предлагает варианты, названия которых начинаются с введенного в поиске текста.

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

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

:smile:

Нужно заместить схему LookupPageViewModuleGenerator. Метод pushSelectFilters отвечает за тип поиска. В коробочной версии тип поиска START_WITH.

В замещающей схеме Вам необходимо заменить тип поиска на CONTAIN.

Поиск "%запрос%" отрабатывает значительно медленнее, чем поиск "запрос%".

Спасибо! :smile:
Возник еще такой вопрос по этой теме:
когда вбиваем текст просто в поле, то без % не находит туры:

а если через всплывающее окно, то нормально срабатывает:

Можно ли как-то реализовать, что бы и в поле поиск работал без % ?

Для изменения типа сравнения с первого скриншота, вам необходимо изменить возвращаемое значение метода "getLookupComparisonType" в файле all-combined, сделать это можно если у вас сайт on-site самостоятельно, если же на серверах bpm'online то через службу поддержки.

.

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

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

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

Нравится

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, так и создать свой универсальный метод (или же вэб сервис) и использовать его.

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