Вопрос

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

Сделал замещение страницы 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, в предыдущий ответ закралась ошибка :)
Если возникнут вопросы, всегда рад помочь.

Войдите или зарегистрируйтесь, чтобы комментировать