Добрый день, 

 

Вопрос следующий:

Объект Обращения, есть вкладка "Test", она выводиться когда на странице в поле "Направление" стоит значение "Sales". И вот, кроме "Sales" эта вкладка еще и нужна для "Transport". 

 

Где можно найти настройку, которая выводит табку "Test" для "Sales", если в бизнес-процессах такой настройки нет. Просто нет. 

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

Диаграмма статусов для "Sales" тоже особенная.

 

Памагите.

Нравится

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

Отображение вкладки можно настроить через бизнес-правила раздела. Поищите бизнес-правило и добавьте условие видимость по направлен = Sales или Направление = Transport.  Бизнес-правило может не отображаться из-за иерархии пакетов - если изменения сделаны в пакете выше, чем сейчас установлен текущий пакет. Если текущим сделать пакет Custom, то все бизнес-правила будут отображаться.

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

Ирина, из постановки вопроса неясно, речь о платформе 7.Х, более старых версиях или вообще не о продуктах Terrasoft.

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

В карточке раздела обращений стандартно нет поля «Направление», его могли самостоятельно добавить.

В таком случае нужно смотреть схему этой страницы CasePage (или CasePageV2) пакета Custom, где размещаются пользовательские доработки.

Спасибо за информацию!!

Ответ оказался неожиданным, эта настройка находилась в Справочнике Service Catalog. Видно это специфическая настройка, а не стандарный функционал. 

Но, на будущее эти знания точно пригодятся. 

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

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

Сделал замещение страницы BaseModulePageV2 (ESN)

Написал такой код.

define("BaseModulePageV2", [], function() {
	return {
		methods: {
			init: function() {
				this.callParent(arguments);
				this.setESNTabCaptionNumber();
			},
			setESNTabCaptionNumber: function() {
				var esnTabCaption = this.get("Resources.Strings.ESNTabCaption") + "()";
				this.$ESNTabCaptionNumber = esnTabCaption;
			}
		},
		attributes: {
			"ESNTabCaptionNumber": {
				type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
				dataValueType: this.Terrasoft.DataValueType.LONG_TEXT,
				value: ""
			}
		},
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "merge",
				"name": "ESNTab",
				"values": {
					"caption": {"bindTo": "ESNTabCaptionNumber"},
				}
			},
		]/**SCHEMA_DIFF*/
	};
});

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

Нравится

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

Добрый день!

Скорее всего вместо this.$ESNTabCaptionNumber = esnTabCaption нужно написать this.set("ESNTabCaptionNumber", esnTabCaption)

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

Нашел похожую тему https://community.terrasoft.ru/questions/izmenit-ima-vkladki-tab

Придется писать напрямую в коллекцию.

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

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

Вопрос: как вывести на вкладку, например, вместо “bpm’online”, номер обращения, карточка которого открыта?

спасибо 

Нравится

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

Для смены заголовка страницы (вкладки) воспользуйтесь кодом

document.title = 'Заголовок';

Те при открытии страницы получите ее название и установите как заголовок

Как то так 

onEntityInitialized: function() {
	this.callParent(arguments);
	document.title = this.get("Number");
},

 

Для смены заголовка страницы (вкладки) воспользуйтесь кодом

document.title = 'Заголовок';

Те при открытии страницы получите ее название и установите как заголовок

Как то так 

onEntityInitialized: function() {
	this.callParent(arguments);
	document.title = this.get("Number");
},

 

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

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

 

Подскажите, пожалуйста, как  изменить цвет фона и шрифтов сообщений и комментариев во вкладке "обработка" в обращениях? 

 

 

Нравится

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

Посмотрите эту тему и эту статью. Для деталей тоже должно работать

Посмотрите эту тему и эту статью. Для деталей тоже должно работать

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

Добрый день!

Необходимо по нажатию пользовательской кнопки открывать некоторую произвольную html-страницу по URL. Подскажите, есть ли такая возможность у инструментария Террасофт? Если есть, поделитесь ссылкой и/или литературой, что для этого необходимо - буду очень признателен!

Нравится

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

Кнопку уже сделали?
в метод, вызываемый нажатием пишем

window.open("www.apple.com");

откроется либо в табе, либо в новом окне, зависит от браузера

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

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

Как открыть, например карточку контрагента, в новом окне или в новой вкладке?

Нравится

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

Здравствуйте.
По умолчанию карточка записи будет открываться в новом окне (это касается интерфейса 5.х). Открытие в новой вкладке определяется особенностями настроек браузера. Например в Chrome это будет происходить, если при этом зажать Ctrl.

1. http://javascript.ru/forum/misc/9084-novaya-vkladka.html
2. например, метод settingsClick в MainMenu (открыавет настройку конфигурации)

другими словами вам надо сформировать ссылку типа
sitename/0/NUI/ViewModule.aspx#SectionModuleV2/ContactSectionV2/ContactPageV2/edit/6f6faa9e-d310-4391-88d8-c5759a9806dd
и открыть ее с помощью window.open(new_tab_link , '_blank'). А уж в новой вкладке или в новом окне откроется - зависит от браузера

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

Версия BPm 5.4
Как сделать в программном коде, например, при нажатии на кнопку, чтобы происходил переход на вкладку на странице редактирования. Например на вкладку детали.

Нравится

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

Что-то вроде:

Page.DetailsTabPanel.ActiveTabIndex = 1;

Здравтсвуйте, Илья!
Нуобходимо использовать js-метод setActiveTab():

PageContainer_DataTabPanel.setActiveTab(PageContainer_DetailTab1f8769742881e011bfea00155d04320c)

Ссылку на вкладку вида "PageContainer_DetailTab1f8769742881e011bfea00155d04320c" можно получить из свойства контрола ClientId.

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

Добрый день!

Как Вы знаете, в карточке редактирования может быть представлено несколько представлений. Иногда требуется ограничить доступ к этому представлению некоторой группе пользователей. Этот функционал можно дополнительно реализовать средствами Terrasoft Administrator. Ниже приведу сам алгоритм, на примере карточки редактирования раздела "Продукты", в которой существует представление "Движение по складу", доступ к которому мы ограничим.

Итак, прежде всего необходимо открыть скрипт wnd_OfferingEditScript и в конец скрипта добавить следующую функцию:

function IsUserInGroup(GroupID)
{
        var Dataset = Services.GetSingleItemByUSI('ds_AdminUnit');
        ApplyDatasetFilter(Dataset, 'UserContactID', Connector.CurrentUser.ContactID, true);
        Dataset.Open();
        var UserID = Dataset.ValAsGUID(IDFieldName);
        Dataset.Close();
        var Dataset = Services.GetSingleItemByUSI('ds_UserInGroup');
        ApplyDatasetFilter(Dataset, 'GroupID', GroupID, true);
        ApplyDatasetFilter(Dataset, 'UserID', UserID, true);
        Dataset.Open();
        var Is = (Dataset.RecordsCount > 0);
        Dataset.Close();
        return Is;
}

Приведенная выше функция, в случае если текущий пользователь системы входит в указанную нами группу пользователей, возвращает значение true, в ином случае - false.

Далее необходимо отредактировать функцию function wnd_OfferingEditOnPrepare(Window). В ней добавим следующую проверку:

function wnd_OfferingEditOnPrepare(Window) {
        scr_BaseDBEdit.wnd_BaseDBEditOnPrepare(Window);
        Initialize(Window);            
        if(!Connector.CurrentUser.IsAdmin)
        {
                var UsrDataset = Services.GetSingleItemByUSI('ds_UserInGroup');                  
                var GroupName = 'Название';
                //где 'Название' - имя группы пользователей, для которых нужно ограничить доступ к представлению         
                ApplyDatasetFilter(UsrDataset, 'GroupName', GroupName, true);
                //тут следует не забыть создать фильтр сравнения в сервисе sq_UserInGroup (см. скриншот ниже)
                UsrDataset.Open();             
                var GroupID = UsrDataset.Values('GroupID');
                if(IsUserInGroup(GroupID))
                {
                        //скрываем само представление, установив свойству IsVisible значение false
                        pgOfferingAnalytic.IsVisible = false;  
                }
                UsrDataset.Close();
        }
       
}

Так же, перед тестированием результатов, следует создать фильтр сравнения в сервисе sq_UserInGroup:

2
3

После этого не забудьте сохранить изменения и перезапустить клиентское приложение Terrasoft.

Нравится

Поделиться

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

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

    var GroupDataset = Services.GetSingleItemByUSI('ds_UserInGroup');
    ApplyDatasetFilter(GroupDataset, 'UserID', UserID, true);
	     GroupDataset.Open();
	      GroupDataset.GotoNext();     //берем второе значение, так как первая по порядку группа 'Все пользователи'                 
         var GroupID = GroupDataset.ValAsStr('GroupID'); 
         GroupDataset.Close();

Большое спасибо за Ваш пример, очень пригодился!

В принципе есть базовая функция в scr_Access называется GetIsUserInGroup, делает примерно тоже самое только немного написана по другому

function GetIsUserInGroup(UserName, GroupID) {
	var sqGetIsUserInGroup = GetSingleItemByCode('sq_GetIsUserInGroup');
	SetParameterValue(sqGetIsUserInGroup.Parameters, 'GroupID', GroupID);
	SetParameterValue(sqGetIsUserInGroup.Parameters, 'UserName', UserName);
	var dsRes = sqGetIsUserInGroup.Open();
	try {
		return dsRes('IsExists') != 0;
	} finally {
		dsRes.Close();
	}
}
Показать все комментарии

Здравствуйте!
Возможно ли как нибудь создать на карточке вкладку, чтобы на эту вкладку вынести необходимые атрибуты?
Если возможно то как это сделать?
С уважением, Гашникова Екатерина

Нравится

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

Добрый день, Екатерина.

Конечно, создать вкладку на карточке можно, для этого нужно использовать компонент PageControl и создать внутри него нужное количество страниц (Page).

Спасибо за ответ!
Только у меня этот компонент называется Pages.

Да, конечно, это Pages, в предыдущий ответ закралась ошибка :)
Если возникнут вопросы, всегда рад помочь.

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