Как скрывать элементы интерфейса для пользователя?

Такие как шестеренка, меню добавления (+), настройки в правом тулбаре (звоночек, лента, трубка) и прочее.

Можно ли создавать пользователей вне орг Роли "Все сотрудники компании"?

Нравится

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

Добрый день, Владимир! Видимость кнопок и полей настраивается с помощью их свойства visible. Настрйока видимости элементов в правой панели в данный момент в приложении не предусмотрена. Также вы можете управлять видимостью элементов с помощью CSS стилей в модуле: 

https://academy.terrasoft.ru/documents/technic-sdk/7-11/dizayner-modulya

Нет, в данный момент пользователей можно создавать только в "Все сотрудники компании" или "Все пользователи портала".

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

Как обычному пользователю узнать из контакта, что пользователь больше неактивен?

Нравится

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

И такой же вопрос - как отфильтровать поле "Ответственный" по активным пользователям?

Владимир Соколов,

Необходимо добавить в блок attributes код:

Owner: {
   "lookupListConfig": {
      "filters": [
         {
            method: function() {
               return this.getOwnerFilters();
            }
         }
      ]
   }
},

и реализовать сам метод:

getOwnerFilters: function() {
    var filterGroup = this.Ext.create("Terrasoft.FilterGroup");
    filterGroup.addItem(this.Terrasoft.createColumnFilterWithParameter(
        this.Terrasoft.ComparisonType.EQUAL,
        "IsActive",
        true));
    filterGroup.addItem(this.Terrasoft.createColumnIsNotNullFilter('[SysAdminUnit:Contact].Id'));
    return filterGroup;
},

Владимир Соколов,

Необходимо добавить в блок attributes код:

Owner: {
   "lookupListConfig": {
      "filters": [
         {
            method: function() {
               return this.getOwnerFilters();
            }
         }
      ]
   }
},

и реализовать сам метод:

getOwnerFilters: function() {
    var filterGroup = this.Ext.create("Terrasoft.FilterGroup");
    filterGroup.addItem(this.Terrasoft.createColumnFilterWithParameter(
        this.Terrasoft.ComparisonType.EQUAL,
        "IsActive",
        true));
    filterGroup.addItem(this.Terrasoft.createColumnIsNotNullFilter('[SysAdminUnit:Contact].Id'));
    return filterGroup;
},

Для фильтрации необходимо добавить в блок attributes код:

Owner: {
   "lookupListConfig": {
      "filters": [
         {
            method: function() {
               return this.getOwnerFilters();
            }
         }
      ]
   }
},

и реализовать сам метод:

getOwnerFilters: function() {
    var filterGroup = this.Ext.create("Terrasoft.FilterGroup");
    filterGroup.addItem(this.Terrasoft.createColumnFilterWithParameter(
        this.Terrasoft.ComparisonType.EQUAL,
        "IsActive",
        true));
    filterGroup.addItem(this.Terrasoft.createColumnIsNotNullFilter('[SysAdminUnit:Contact].Id'));
    return filterGroup;
},

Неактивен вышел из системы или убрали галочку Активен в пользователе?

Показать все комментарии
права доступа
доступ
доступ к данным
7.10
service



Добрый день, подскажите пожалуйста, как дать (пользователю, роли и т.д.) доступ к разделу со справочниками?

Нравится

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

доступ по операциям —> поиск по коду "CanManageLookup" —> добавляете пользователей

Ок, спасибо. Получилось

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

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

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

Скажите, где описано, как настраивать компоненты системы, если у нас 3 сервера:

1) SQL (BPM Online Database),

2) Application (IIS-BPM Online Site), 

3) Redis

Настройки апликэйшена вроде понятно, согласно инструкции укажем сервер и инстанс.

А вот как быть с Redis, как настраивать его?

Интересно так же, есть ли документация как настраивать отказоустойчивый сценарий где по 2 сервера на каждый компонент? Настройка веб-фермы, настройка Redis, SQL

Ссылка на описание установки, где судя по всему всё ставится на один сервер:

https://academy.terrasoft.ru/documents/service-enterprise/7-11/ustanovk…

Нравится

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

Redis устанавливается, затем запускается как служба, зачастую устанавливается на одном сервере с IIS. Если же он установлен на другом сервере, то в ConnectionStrings.config в параметре host нужно указать ip адрес этого сервера, и указать свободный порт db (по умолчанию от 0 до 16). Никаких дополнительных настроек в файл redis.conf вносить не нужно.

С сервером БД аналогично: в ConnectionStrings.config в параметре  Data Source - указываем имя или ip сервера БД, затем имя БД в параметре Initial Catalog. 

Инструкций по настройке отказоустойчивой инфраструктуры по-моему нет.

 

Мотков Илья,

Cпасибо Илья!

Попробоую.

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

Скажите, есть ли визуальное представление (в виде таблицы) матрицы ролей в Системе?

Можно ли посмотреть текущие права у роли (группы, пользователя)?

Нравится

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

Кто как настраивает ролям и пользователям из AD права?

Поделитесь, пожалуйста.

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

Визуальное представление матрицы ролей реализовано по принципу уровней.

Более детально с организационной структурой Вы можете ознакомиться по ссылке: https://academy.terrasoft.ru/documents/sales-enterprise/7-11/stranica-f…

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

 

Ознакомиться с синхронизацией Вы можете в статье: https://academy.terrasoft.ru/documents/sales-enterprise/7-11/sinhroniza…

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

Добрый день.

Где-то в презентациях видел то ли существующий, то ли планируемый Plugin для интеграции BPM Online и Zapier.

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

Нравится

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

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

На текущий момент подобный коннектор отсутствует. Я передал Ваше пожелание аналитикам продукта.

Они рассмотрят возможность его реализации в одной из последующих версий программного продукта.

Показать все комментарии
кнопка
кнопка в карточке редактирования
новая кнопка
выпадающий список
service

Добрый день.

Возникла потребность реализовать кнопку, аналогичную кнопке со стадиями в разделе Обращения:

Изображение удалено.

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

Коллеги, был ли у кого-то опыт реализации данной задачи?

 

Пробовала делать следующим образом: в секции diff прописала

{
	"operation": "insert",
	"parentName": "ActionButtonsContainer",
	"propertyName": "items",
	"name": "TestButton1",
	"values": {
		"itemType": this.Terrasoft.ViewItemType.BUTTON,
		"style": this.Terrasoft.controls.ButtonEnums.style.GREEN,
		"caption": "Test!!!!!!",
		"click": {"bindTo": "onResolvedButtonTest"},
		"classes": {
			"textClass": ["actions-button-margin-right"],
			"wrapperClass": ["actions-button-margin-right"]
		},
		"menu": {
			"items": {"bindTo": "ButtonMenu"}
		}
	}
}

В секции attributes прописала:

"ButtonMenu": {
	dataValueType: this.Terrasoft.DataValueType.COLLECTION
}

Но я не совсем понимаю как мне наполнить коллекцию ButtonMenu значениями, которые должны отображаться в выпадающем списке на кнопке?

 

Нравится

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

Вообще добавление подменю выглядит так:

var MenueItems = this.Ext.create("Terrasoft.BaseViewModelCollection");
this.getButtonMenuItem({
	"Click": { "bindTo": "ClickEvent" },
	"Tag": tag,
	"Caption": caption,
	"Enabled": true,
	"Visible": true
})
this.set("ButtonMenu", MenueItems);

 

В моём случае я заполнял выпадающий список значениями справочника по этому добавил функцию initMenueItems в init страницы

initMenueItems:function(){
	var self = this;
	var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
		rootSchemaName: "SchemaName"
	});
	esq.addColumn("Name", "Name");
	esq.addColumn("Id", "Id");
	esq.filters.add("Type", this.Terrasoft.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.EQUAL, "Type", "{TypeId}"));
	esq.getEntityCollection(function (response) {
		if (!response.success) return;
		var data = response.collection;
		var MenueItems = self.Ext.create("Terrasoft.BaseViewModelCollection");
		data.collection.items.forEach(function (item) {
			MenueItems.addItem(self.getButtonMenuItem({
				"Click": { "bindTo": "ClickEvent" },
				"Tag": item.values.Id,
				"Caption": item.values.Name,
				"Enabled": true,
				"Visible": true
			}));
		});
		self.set("ButtonMenu", MenueItems);
	});
}

 

Если вопрос еще актуален, статично можно добавить так:

{

                "operation": "insert",

                "parentName": "OpportunityPageOfferTabContentGroup",

                "propertyName": "items",

                "name": "getOfferEngButton",

                "values": {

                    "itemType": Terrasoft.ViewItemType.BUTTON,

                    //"classes": {textClass: "actions-button-margin-right"},

                    "style": Terrasoft.controls.ButtonEnums.style.GREEN,

                    "caption": {bindTo: "Resources.Strings.UsrGetOfferButtonCaption"},

                    "menu": {

                        "items": [{

                            "caption": {"bindTo": "Resources.Strings.UsrGetOfferEngButtonCaption"},

                            "click": {"bindTo": "getOfferEng"}

                        }, {

                            "caption": {"bindTo": "Resources.Strings.UsrGetOfferRusButtonCaption"},

                            "click": {"bindTo": "getOfferRus"}

                        }]

                    }

                }

            },

Спасибо. Попробовала сделать обоими способами, все получилось!

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

"menu": {
	"items": {"bindTo": "ButtonMenuItems"}
},

где ButtonMenuItems это атрибут 

attributes: {
	"ButtonMenuItems": {
		dataValueType: this.Terrasoft.DataValueType.COLLECTION
	}
},

куда в свою очередь, необходимо добавлять через метод addItem, элементы вот как-то так

var collection = this.get("ButtonMenuItems");
var menuItem = this.Ext.create("Terrasoft.BaseViewModel", {
	values: {
		"Caption": "Заголовок пункта меню",
		"Click": {bindTo: "actionMethod"}
	}
});
collection.addItem(menuItem);

 

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

Добрый день.

Версия 7.10.

Подскажите , как можно поставить фильтр по полю Ответственный.Обращение, чтобы система показывала только тех контактов, у кого Тип=Сотрудник ?

Нравится

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

Добрый день!



Возможно вы это имели ввиду. Перейдите в расширенный фильтр. Добавить условие, далее нажимаете на плюсик, в поле Выберите объект указываете Ответственный, поле Колонка = Тип, далее Тип= сотрудник

как можно поставить фильтр по полю Ответственный.Обращение, чтобы система показывала только тех контактов,

Вам требуется сделать фильтр на уровне схемы ?

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

Добрый день, Татьяна! Если Вам необходимо настроить фильрацию на это поле в карточке обращения, тогда достаточно добавить бизнес правило. Вам нужно отфильтровать поле Owner по Owner.Type = ConfigurationConstants.ContactType.Employee

Мотков Илья,

спасибо. получилось.

Показать все комментарии
service
канал
обращение
Технические вопросы
7.x

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

Нравится

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

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

Пользовательскими средствами данный функционал невозможно реализовать.
Так как по сути лента каждой записи является отдельным каналом и нет возможности все комментарии передать в один канал.

В разделе «Лента» отображается то, что непосредственно было опубликовано в данном разделе.

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

Показать все комментарии
service
Технические вопросы
5.x

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

есть проблема:

Создал справочник - добавил поле в Активность.
В карточке редактирования Email разместил это поле. Хочется, чтобы при выборе значения в справочнике в тело письма попадал текст из справочника. Создал скрипт в PersonalReplyEditChange:

var replyText = Page.DataSource.ActiveRow.GetTypedColumnValue("PersonalReply");
Page.BodyEdit.SetValue(replyText);

однако при изменении значения справочного поля в карточке вываливается ошибка - Значение с именем "PersonalReply" не найдено

Что я делаю не так?

Нравится

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

День добрый.
А где хранится "текст из справочника"? В поле Name объекта PersonalReply?

Если хотите заполнять BodyEdit тем что выбираете можно просто прописать:

    Page.BodyEdit.SetValue(Page.PersonalReplyEdit.Text);

на самом деле нужный текст хранится в поле ReplyText но как достучаться до него я пока не могу придумать =( пока получилось примерно то, что вы подсказали, только так:

var replyText = Page.PersonalReplyEdit.Text;
Page.BodyEdit.SetValue(replyText);

Если я правильно понял задачу, попробуйте подобную конструкцию:

// Получить Id записи справочника
Guid personalReplyId = Page.DataSource.ActiveRow.GetTypedColumnValue<Guid>("PersonalReplyId");
string replyText = string.Empty;
if (personalReplyId != Guid.Empty)
{
    // Получить Текст из справочника (можно в метод универсализировать)
    EntitySchemaQuery esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "PersonalReply");
    string replyTextColumnName = esq.AddColumn("ReplyText").Name; // "Текст из справочника"
    Entity entity = esq.GetEntity(UserConnection, personalReplyId);
    replyText = entity.GetTypedColumnValue<string>(replyTextColumnName);
}
// Записать текст в Body
Page.BodyEdit.SetValue(replyText);

PersonalReply - имя объекта-справочника
ReplyText - колонка объекта PersonalReply

Спасибо вам огромное, Дмитрий!

Заработало, но только после того как я заменил первую строку вашей конструкции на:
Guid personalReplyId = (Guid)Page.PersonalReplyEdit.Value;

теперь наш ДИТ снова сможет использовать для ответов пользователям кучу знакомых шаблонов из старого ServiceDesk =)

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