Добрый день, коллеги.

Подскажите как можно скрыть (не отображать) кнопку определенным ролям?

Нравится

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

Добрый день

Задачу можно решить 2-мя вариантами:

1. Больше кода

  • определить роль текущего пользователя, реализовав запрос в БД;
  • обернуть этот запрос в метод, который должен отрабатывать в методе init вашей карточки (раздела). Если работа метода будет асинхронной, то изначальную инициализацию атрибута нужно будет сделать в false;
  • добавить собственный атрибут в модель, к примеру isButtonVisible
  • в diff прописать операцию merge для этой кнопки, указав visible: {bindTo: "isButtonVisible"}
  • в зависимости от результата запроса устанавливать значение атрибута

2. Меньше кода

  • создаем операцию в разделе "Доступ к операциям", к примеру HaseButton;
  • настраиваем доступ к операции по ролям;
  • gовторяем все, что описано в варианте 1 (кроме написания запроса к БД), но с модификациями:

               - создаем метод, который определяет наличие права             

                  (.../RightsService/GetCanExecuteOperations)

               - по результату заполняем атрибут IsButtonVisible

Спасибо, пока реализовали через процесс.

Который считывает входит пользователь в группу или нет, а дальше ветвление, если входит то процесс по кнопке выполнянется, если не входит не выполняется

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

Версия 5.4. Просьба подсказать, где можно изменить текст при входе в систему?

 

Прикрепленные файлы

Нравится

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

Чтобы изменить текст на странице входа, можно ручками поправить страницу Login.aspx в корневой >папке сайта (предварительно конечно лучше сделав копию).

 

Сама логика вывода того или иного города и телефона в зависимости от локали сделана в ядре.

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

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

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

Ссылка на Marketplace  https://marketplace.terrasoft.ru/template/sozdanie-shablonnogo-nabora-z…

Для оперативного реагирования на развитие и изменение процессов компании создан механизм "Создание шаблонного набора задач".

Что нужно уметь Пользователю? Внести новую запись в справочник "Шаблоны задач" и создать несколько задач, прописав ответственного, сроки решения и последовательность исполнения. 

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

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

 

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

Рекомендую использовать наше решение для усовершенствования работ по Вашему процессу.

Нравится

Поделиться

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

Спасибо, отличное решение!

bill gate,

Спасибо, работаем ради интересов Заказчиков. 

Радуем Клиентов качеством услуг и отношением

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

Лазоренко Ирина пишет:

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

Отличное решение

Лазоренко Ирина,

Ирина, добрый день. Согласна с Владимиром.

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

Есть и другие: В моем решении можно отслеживать исполнение итогового значения всей совокупности задач.

Хочу обратить внимание на то, что решение разрабатывалось для версии bpm`online servise. Для службы поддержки.

Бизнес-кейс: Создано обращение от руководителя департамента по обновлению программного оборудования для всех подразделений компании с заменой оборудования в течение трех месяцев. Это совокупность задач по подбору ПО, подбору компьютеров для каждого подразделения отдельно, возможно по прокладке новых сетей(провода кабели), раздачи прав доступа и т.п. Формируем шаблон задач( для каждого специалиста). Вставляем его в обращение. Через месяц, что-то меняется. Создаем новый шаблон. В этом же обращении удаляем название старого шаблона, Вместо него вставляем название нового шаблона.Все задачи по старому шаблону автоматически отменяются, новые задачи создаются. Всем пользователям уходит оповещения. Удобно?

Есть много мелких задач. Например по поддержки разных видов ПО (1С, Зибель), когда требуется участие нескольких специалистов. Можно быстро создавать требуемого количество активностей. Пожалуй, это самое важное, что требуются клиенту: для формирования шаблонов нужно просто перейти в раздел "Активности" .

Интересное решение

 

Милова Марина Федоровна,

Зибель по Русски, да?

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

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

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

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

Нравится

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;
},

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

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



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

Нравится

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пасибо Илья!

Попробоую.

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

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

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

Нравится

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 комментарий

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

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

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

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

Добрый день.

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

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

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

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

 

Пробовала делать следующим образом: в секции 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);

 

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