Добрый день!

Был создан обьект как справочник унаследован от (базовый справочник (base))

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

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

(BPM 7.11)

Собственно вопрос как это сделать из справочника раздел?

Нравится

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

Алексей, добрый день!

Для того, чтоб справочник можно было отобразить как раздел, необходимо создать соответствующие связи в системных таблицах SysModule, SysModuleEdit, SysModuleEntity. Так как у базовых разделов есть схема карточки редактирования и схема раздела, ниже алгоритмы по созданию и регистрации данных схем.

1) Создание страницы редактирования

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

Либо создать по аналогии как в справочнике «Источник лида» (см. Схему «LeadSourcePageV2»).

Либо же попробовать вручную (см. приближенный пример, который по необходимости нужно «дебажить»):

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

Заполняем ее нужными полями, в нашем примере только Name, а объект в нашем примере называется «UsrAccStage»:

define("UsrAccStagePageV2", ["AccountPageV2Resources", "GeneralDetails"],

function(resources, GeneralDetails) {

    return {

        entitySchemaName: "UsrAccStage",

        details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,

        diff: /**SCHEMA_DIFF*/[

               {

                "operation": "insert",

                "name": "Name",

                "parentName": "Header",

                "propertyName": "items",

                "values": {

                       "bindTo": "Name",

                       "layout": {

                           "column": 0,

                           "row": 0,

                           "colSpan": 12

                      }

                }

            }

        ]/**SCHEMA_DIFF*/,

        attributes: {},

        methods: {},

        rules: {},

        userCode: {}

    };

});

Далее нашей целью является зарегистрировать связь страницы редактирования в базе данных в таблице «SysModuleEdit» через развязочную таблицу «SysModuleEntity» с сущностью объекта, в котором хранится информация. В нашем случае «UsrAccStage». Листинг SQL приводим ниже:

SELECT * FROM SysSchema Where Name = 'UsrAccStagePageV2'

-- UId карточки редактирования = 064A98B5-E6FE-47E7-B9A6-499561BD1347

SELECT * FROM SysSchema Where Name = 'UsrAccStage"

-- колонка UId объекта = E894EBA6-9FBB-4AA7-90E4-6A99B6CD5329

-- проверяем развязочную таблицу

SELECT * FROM SysModuleEntity

WHERE SysEntitySchemaUId = 'E894EBA6-9FBB-4AA7-90E4-6A99B6CD5329'

-- если нет там записи, добавляем:

INSERT INTO SysModuleEntity (SysEntitySchemaUId) VALUES ('E894EBA6-9FBB-4AA7-90E4-6A99B6CD5329')

-- проверяем развязочную таблицу

SELECT * FROM SysModuleEntity

WHERE SysEntitySchemaUId = 'E894EBA6-9FBB-4AA7-90E4-6A99B6CD5329'

-- берем от туда Id = 671F61D8-2E72-47A4-95C7-D67E2C8B723F

INSERT INTO SysModuleEdit (SysModuleEntityId, CardSchemaUId, ActionKindCaption, ActionKindName, PageCaption) VALUES ('671F61D8-2E72-47A4-95C7-D67E2C8B723F', '064A98B5-E6FE-47E7-B9A6-499561BD1347', 'Добавить нашу сущность',

'UsrAccStage','Стадия контрагента')

SELECT * FROM SysModuleEdit WHERE SysModuleEntityId = '671F61D8-2E72-47A4-95C7-D67E2C8B723F'

2) Вопрос по регистрации схемы раздела и самого раздела уже обсуждался на комьюнити (например, https://community.terrasoft.ru/node/26721)

 

Одеяненко Юлия,

Спасибо за оперативность. Пробую.

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

Добавил деталь (не редактируемый реестр) к обьекту и переопределил функцию добавления записи в которой хочу вызвать сервис.

подключаю в схеме детали serviceHelper

и пытаюсь обратится к сервису через функцию serviceHelper.callService("s1","f1",function(response){},serviceparam,this);

 

но получаю ошибку что нет функции callServicce 

и в отладчике вижу что действительно обьект serviceHelper есть а функции callServicce в нем нет 

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

вопрос. как корректно из детали обратится к сервису?

Нравится

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

Возможно, у вас в функции callServicce лишняя буква c в конце

Кузнецов Сергей,

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

Скорее всего не совпадает порядок параметров в функции-конструкторе модуля с порядок dependencies в define

define("...", ["module1", "module2", "serviceHelper"], function(module1, serviceHelper) {...})

В этом случае serviceHelper будет содержать "module2"

Артем Гура,

 

Cпасибо! Именно была нарушена последовательность.

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

Добрый день!

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

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

 

Нравится

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

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

Ещё графики переделали в 7.12, например, появилась кнопка разворачивания каждого на весь экран.

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

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

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

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



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

Подскажите, пожалуйста, хотим изменить на странице CaseRatingFeedbackPage (Service Entrprise) background. Исходя из кода необходимо в ресурс background (images) засунуть свою картинку. Это получилось, но не понятно, что необходимо написать в качестве исходного кода в замещаемой странице. Если использовать весь код CaseRatingFeedbackPage  , то ни один контейнер не отображается, отображается только картинка в качестве background.

Исходный код страницы CaseRatingFeedbackPage :

define("CaseRatingFeedbackPage", ["ImageView", "ESNHtmlEditModule",
		"CaseRatingFeedbackPageResources", "css!CaseRatingFeedbackPage"],
	function() {
		return {
			attributes: {
				"Comment": {
					"dataValueType": this.Terrasoft.DataValueType.TEXT,
					"type": this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
				},
				"Token": {
					"dataValueType": this.Terrasoft.DataValueType.GUID,
					"type": this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
				},
				"EnableQuestionToRequestor": {
					"dataValueType": this.Terrasoft.DataValueType.BOOLEAN,
					"type": this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
				}
			},
			diff:/**SCHEMA_DIFF*/[
				{
					"operation": "insert",
					"name": "MainContainer",
					"values": {
						"itemType": this.Terrasoft.ViewItemType.CONTAINER,
						"classes": {
							"wrapClassName": ["main-container"]
						},
						"items": []
					}
				},
				{
					"operation": "insert",
					"name": "LogoContainer",
					"parentName": "MainContainer",
					"propertyName": "items",
					"values": {
						"itemType": this.Terrasoft.ViewItemType.CONTAINER,
						"classes": {
							"wrapClassName": ["logo-container container"]
						},
						"items": []
					}
				},
				{
					"operation": "insert",
					"name": "ContentContainer",
					"parentName": "MainContainer",
					"propertyName": "items",
					"values": {
						"itemType": this.Terrasoft.ViewItemType.CONTAINER,
						"classes": {
							"wrapClassName": ["content-container"]
						},
						"items": []
					}
				},
				{
					"operation": "insert",
					"name": "ThanksMessageContainer",
					"parentName": "ContentContainer",
					"propertyName": "items",
					"values": {
						"itemType": this.Terrasoft.ViewItemType.CONTAINER,
						"classes": {
							"wrapClassName": ["thanks-message-container container"]
						},
						"items": []
					}
				},
				{
					"operation": "insert",
					"name": "FeedbackContainer",
					"parentName": "ContentContainer",
					"propertyName": "items",
					"values": {
						"itemType": this.Terrasoft.ViewItemType.CONTAINER,
						"classes": {
							"wrapClassName": ["feedback-container container"]
						},
						"visible": {
							"bindTo": "EnableQuestionToRequestor"
						},
						"items": []
					}
				},
				{
					"operation": "insert",
					"name": "Logo",
					"parentName": "LogoContainer",
					"propertyName": "items",
					"values": {
						"id": "logoImage",
						"itemType": this.Terrasoft.ViewItemType.COMPONENT,
						"className": "Terrasoft.ImageView",
						"imageSrc": {
							"bindTo": "getLogoUrl"
						},
						"classes": {
							"wrapClass": ["logo"]
						}
					}
				},
				{
					"operation": "insert",
					"parentName": "ThanksMessageContainer",
					"propertyName": "items",
					"name": "ThanksLabel",
					"values": {
						"itemType": this.Terrasoft.ViewItemType.LABEL,
						"caption": {
							"bindTo": "Resources.Strings.ThanksMessage"
						},
						"labelConfig": {
							"classes": ["thanks"]
						}
					}
				},
				{
					"operation": "insert",
					"name": "CommentTextEdit",
					"parentName": "FeedbackContainer",
					"propertyName": "items",
					"values": {
						"className": "Terrasoft.MemoEdit",
						"itemType": this.Terrasoft.ViewItemType.MODEL_ITEM,
						"dataValueType": this.Terrasoft.DataValueType.TEXT,
						"contentType": this.Terrasoft.ContentType.LONG_TEXT,
						"labelConfig": {
							"visible": false
						},
						"value": {
							"bindTo": "Comment"
						},
						"placeholder": {
							"bindTo": "Resources.Strings.AddCommentHint"
						},
						"markerValue": "comment-text-edit",
						"height": "102px",
						"autoGrow": false
					}
				},
				{
					"operation": "insert",
					"parentName": "FeedbackContainer",
					"propertyName": "items",
					"name": "PostButton",
					"values": {
						"click": {
							"bindTo": "postComment"
						},
						"itemType": this.Terrasoft.ViewItemType.BUTTON,
						"style": this.Terrasoft.controls.ButtonEnums.style.DEFAULT,
						"classes": {
							"textClass": "post-button"
						},
						"caption": {
							"bindTo": "Resources.Strings.PostButtonCaption"
						}
					}
				},
				{
					"operation": "insert",
					"name": "Background",
					"parentName": "MainGridLayout",
					"propertyName": "items",
					"values": {
						"id": "background",
						"itemType": this.Terrasoft.ViewItemType.COMPONENT,
						"className": "Terrasoft.ImageView",
						"imageSrc": {
							"bindTo": "getBackgroundUrl"
						},
						"classes": {
							"wrapClass": ["background"]
						}
					}
				}
			]/**SCHEMA_DIFF*/,
			methods: {
 
				/**
				 * @inheritDoc BaseSchemaViewModel#init
				 * @overridden
				 */
				init: function() {
					this.callParent(arguments);
					var feedbackConfig = this.Terrasoft.feedbackConfig;
					if (feedbackConfig) {
						this.set("Token", feedbackConfig.token);
						this.Terrasoft.feedbackConfig = null;
					}
					this.Terrasoft.chain(this.setInitialvalues, this);
				},
 
				/**
				 * Sets initial values.
				 * @protected
				 * @virtual
				 */
				setInitialvalues: function() {
					this.Terrasoft.SysSettings.querySysSettingsItem("EnableQuestionToRequestor",
						function(value) {
							this.set("EnableQuestionToRequestor", value);
						}, this);
				},
 
				/**
				 * Returns logo image URL.
				 * @private
				 * @return {String} Logo URL.
				 */
				getLogoUrl: function() {
					var config = {
						source: this.Terrasoft.ImageSources.SYS_SETTING,
						params: {
							r: "LogoImage"
						}
					};
					var url = this.Terrasoft.ImageUrlBuilder.getUrl(config);
					return url;
				},
 
				/**
				 * Removes feedback container from DOM.
				 * @private
				 */
				removeFeedback: function() {
					this.Ext.getCmp("CaseRatingFeedbackPageFeedbackContainerContainer").destroy();
				},
 
				/**
				 * Returns background image URL from resources.
				 * @protected
				 * @return {String} Background image URL.
				 */
				getBackgroundUrl: function() {
					var imageResource = this.get("Resources.Images.Background");
					var url = this.Terrasoft.ImageUrlBuilder.getUrl(imageResource);
					return url;
				},
 
				/**
				 * Prepares config for service call.
				 * @protected
				 * @param {String} comment Comment text.
				 * @return {Object} Service call config.
				 */
				getServiceConfig: function(comment) {
					var sendData = {
						token: this.get("Token"),
						comment: comment
					};
					var config = {
						serviceName: "CaseRatingManagementService",
						methodName: "AddComment",
						data: sendData
					};
					return config;
				},
 
				/**
				 * Logs out.
				 * @protected
				 */
				logout: function() {
					var config = {
						serviceName: "UserManagementService",
						methodName: "Logout"
					};
					this.callService(config, function() {
						window.logout = true;
					}, this);
				},
 
				/**
				 * Post a comment via service.
				 * @protected
				 */
				postComment: function() {
					var comment = this.get("Comment");
					if (!comment || !comment.length) {
						var message = this.get("Resources.Strings.CommentIsEmpty");
						this.showConfirmationDialog(message, this.Terrasoft.emptyFn,
							[this.Terrasoft.MessageBoxButtons.OK]);
						return;
					}
					this.showBodyMask();
					var config = this.getServiceConfig(comment);
					this.callService(config, this.onCommentPost);
				},
 
				/**
				 * Post a comment callback function.
				 * Hides body mask and shows fail message upon it happens.
				 * @protected
				 * @virtual
				 * @param {Object} response Service response object.
				 */
				onCommentPost: function(response) {
					this.hideBodyMask();
					var result = response.AddCommentResult;
					if (result.success) {
						this.removeFeedback();
						this.logout();
					} else {
						var message = this.get("Resources.Strings.PostCommentFailed");
						this.showInformationDialog(message, this.Terrasoft.emptyFn);
					}
				}
			}
		};
	});

 

Нравится

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

Если вам нужно только изменить background попробуйте изменить ситсемную натсройку с кодом (Code) "ImageThanksForRaiting". Никаких страниц тогда менять не надо.

Золотарев Артем Андреевич,

Спасибо за предложение.  Но не помогает ...redis чистили )

Там есть небольшая тонкость, необходимо сначала очистить значение, потом выбрать файл. И если нажать закрыть, то картинка не сохранится, т.к. по этим кнопкам страница не видит изменений. Нужно нажать на поле Название, например, и тогда появится кнопка Сохранить (вместо Закрыть). Вот тогда файл реально должен сохраниться.

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

Коллеги, добрый день!

Реализовал кастомную кнопку закрытия обращения с выпадающим меню. Но никак не могу найти, как установить цвет выпадающих кнопок. Мне необходимо все 5-кнопок сделать разными цветами. 

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

 

А так же интересует каким образом можно добавить для выпадающей кнопки Значок, по аналогии с кнопкой "Экспорт в Excel" в меню "Действия"?

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

Спасибо!

Нравится

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

Добрый день

Чтобы реализовать раскраску цветами, то:

1. Каждое меню должно быть уникальное

2. Добавить css стиль

К примеру, у меня есть 2 пункта меню. Чтобы я мог реализовать корректный selector, то мне нужно их как-то назвать. Поэтому, в методе, где формируется menuItem я явно буду указывать Id этого меню. После чего можно будет писать что-то типа:

#myMenuItem {
    background-color: green;
}

 

Теперь по значкам.

Как вы сами заметили, что хотите добавить значок по аналогии, то вам и нужно сделать по аналогии :). Вот как это сделано в BaseSection

Артем Гура,

Спасибо, но не совсем понято как указать id каждого из меню в методе.

Вот мой метод:

getCustomCloseActions: function() {
 
	self = this;
	var actionMenuItems = Ext.create("Terrasoft.BaseViewModelCollection");
		actionMenuItems.addItem(this.getButtonMenuItem({
			"Tag": "5",
			"Caption": "Закрыть с оценкой 5",
			"Click": {bindTo: "OnCustomClosedButtonMenuClick"}
		}));
		actionMenuItems.addItem(this.getButtonMenuItem({
			"Tag": "4",
			"Caption": "Закрыть с оценкой 4",
			"Click": {bindTo: "OnCustomClosedButtonMenuClick"}
		}));
		actionMenuItems.addItem(this.getButtonMenuItem({
			"Tag": "3",
			"Caption": "Закрыть с оценкой 3",
			"Click": {bindTo: "OnCustomClosedButtonMenuClick"}
		}));
		actionMenuItems.addItem(this.getButtonMenuItem({
			"Tag": "2",
			"Caption": "Закрыть с оценкой 2",
			"Click": {bindTo: "OnCustomClosedButtonMenuClick"}
		}));
		actionMenuItems.addItem(this.getButtonMenuItem({
			"Tag": "1",
			"Caption": "Закрыть с оценкой 1",
			"Click": {bindTo: "OnCustomClosedButtonMenuClick"}
		}));
	self.set("CloseButtonMenuItems", actionMenuItems);
 
},

 

Обратите внимание на метод getButtonMenuItem: как он работает по умолчанию, и как он работает, например в BaseSection.

Особенно то, как формируется значок Excel и как генерируется Id.

А дальше сделать всё по аналогии.

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

Коллеги, добрый день!

Проблема в следующем:

При создании стандартного фильтра (по группе ответственных) в разделе Обращения, на страницу выводится список обращений не только данной группы, но и других групп.

Оказалось, что при создании такого фильтра, по умолчанию выставляется  условие сравнения "СОДЕРЖИТ", а не  "=" (равно).  

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

Можно ли как-то изменить "условие сравнения по умолчанию" для стандартного фильтра?

Спасибо!

Нравится

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

Добрый день!

Стандартный фильтр действительно работает по принципу "СОДЕРЖИТ". Внести изменения в его условия сравнения возможности нет. 

Рекомендуем использовать расширенный фильтр, где есть возможность выбрать "=".

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

Добрый день!

Столкнулись с следующей ситуацией: для портальных пользователей не отображается на детали История email отправленные ими же. 

Кейс: cпочты пользователя портала отправляется письмо на почту техподдержки, это письмо регистрируется в системе (активность с типом email), по нему создается обращение в системе со связью с письмом. Можно добавить портальное сообщение. Со стороны бэкофиса на странице Обращения на детали История первой записью будет отображаться письмо от пользователя. Если зайти со стороны портала, то данного письма на детали не будет.

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

Спасибо! 

Нравится

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

Вы указали, что пользователь портала не видит писем в «Истории», это корректное поведение системы. В рамках базовой логики – портал самообслуживания не подразумевает общения письмами, в таком случае вообще портал самообслуживания теряет смысл. В системе реализована отдельная логика по работе с обращениями, происхождение у которых «Email». А пользователь, у которого есть портальные учетные данные – предполагается будет общаться с поддержкой и регистрировать обращения через портал.

Мы реализовывали раздачу прав пользователям портала на записи в БП. 



Ключевое здесь - это выдача прав на Activity по полученному письму. 

И основная сложность - это отловить получение письма. Примерно так выглядит сигнал на это событие:



Владмир, спасибо за информацию. Жалко, что на скриншоте ничего не видно. Можно сделать дололнение для маркета.

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

Постараюсь реализовать, но сложно со временем пока что. В том процессе еще много добавлено. 

Например, доступ руководителю пользователя портала ко всем кейсам подчиненных

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

Владимир, подскажите, пожалуйста, как именно происходила раздача прав (настройка элемента процесса)? Требуется ли дополнительная настройка прав в разделе Администрирования: Доступ к объектам?

Если все права раздаёт процесс, то вручную менять не надо. Но лучше свяжитесь напрямую с Владимиром и уточните к него.

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

Добрый день!

Столкнулись со странным поведением системы. 

Создали разветвленный процесс с элементом "Исключающее или", в процессе создается активность, у которой указывается результат выполнения.

Если процесс создавать в соответствии с правилами нотации BPMN 2.0 (рис.1.), то в активности не отрабатывает фильтр результатов, и отображаются все результаты. 

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

Опытным путем пришли к решениям, которые не в полной мере соответствуют нотации, но работают. (рис.2 и рис.3)

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

 

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

Варианты представленные на рис. 2 и рис.3  нас не устраивают,  по причине что процесс у нас более сложный, чем эти схемы.

Кто-то сталкивался с такой особенностью? Как можно объяснить такое поведение системы?

 

 

Нравится

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

Николай, здравствуйте!

Связано с тем, что потоки после шлюза ИЛИ (в данном случае поток по умолчанию) считаются процессом потоками Активности. Если для активности указан поток по умолчанию, то отображаются вместо кнопок выпадающий список результатов.

Ошибка исправлена в версии 7.12, для исправления точечно можно заменить последний поток на условный, как показано на скрин3, указав в потоке true.

Логвин Андрей Витальевич,

Андрей, спасибо за ответ. 

Можете еще подсказать?

Если на скрине3 после условного потока будет не завершение процесса, а другие элементы, в том числе и логические, то этот true нужно будет протаскивать до завершения процесса? или достаточно будет в одном месте после ИЛИ?

Шувалов Николай Юрьевич,

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

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

Здравствуйте, есть 2 детали: заказы и курьеры.

Заказы связываются с разделом Обращения и связывается с деталью курьеры.

Деталь заказы добавлена на странице редактирования обращения.

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

Нравится

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

Здравствуйте, Сергей!

Для того, чтоб иметь возможность прямо со страницы обращения из детали "Заказы" переходить на страницу курьера, нужно вывести колонку, которая ссылается на курьера, на деталь. Тогда, если для курьеров зарегистрирован раздел, то в колонке будут ссылки на карточки курьеров (если курьер = контакт, то на карточки контактов). Но должно быть однозначное соответствие курьера заказу (то есть, курьер должен быть в поле, а не n курьеров на детали).

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

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

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

Одеяненко Юлия,

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

 

Одеяненко Юлия пишет:

Доработка данного функционала находится на рассмотрении у аналитиков продукта, возможно, будет доработана в будущих релизах.

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

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

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

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

Нравится

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

Здравствуйте, Павел!

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

Выглядеть он будет так: http://prntscr.com/io67sn

Настройка: http://prntscr.com/io689w

"Количество" потом поменять на "Существует", и внутри указать, собственно, фильтр по текущему контакту.

Спасибо большое!

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