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

Как добавить пользовательскую кнопку (чтобы начать процесс для данной активности) в панель действий только для одного раздела (например, для Case)?

 

Заранее благодарю за ваши ответы.

Нравится

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

Мария, этот механизм реализован во многих схемах. Для плитки активности интерфейс описан в схеме BaseDashboardItemViewConfig, а логика — в ActivityDashboardItemViewModel и её родителях EntityDashboardItemViewModel и BaseDashboardItemViewModel. В них можно увидеть кнопку «Завершить» (Execute) и её логику заголовка, видимости и нажатия. А сами названия этих схем прописаны в схеме SectionActionsDashboard в пакете ActionsDashboard в функции:

/**
 * @inheritdoc Terrasoft.BaseActionsDashboard#initDashboardConfig
 * @override
 */
initDashboardConfig: function() {
	this.callParent(arguments);
	const dashboardConfig = this.get("DashboardConfig");
	const processItemsConfig = {
		"VwProcessDashboard": {
			masterColumnName: "Id",
			referenceColumnName: "EntityId",
			viewModelClassName: "Terrasoft.ProcessDashboardItemViewModel",
			viewConfigClassName: "Terrasoft.BaseDashboardItemViewConfig"
		}
	};
	const activityItemsConfig = {
		"Activity": {
			viewModelClassName: "Terrasoft.ActivityDashboardItemViewModel",
			viewConfigClassName: "Terrasoft.BaseDashboardItemViewConfig"
		}
	};
	const approvalItemsConfig = this._getApprovalItemsConfig();
	const extendedConfig = this.values.dashboardConfig || {};
	Ext.merge(dashboardConfig, processItemsConfig);
	Ext.merge(dashboardConfig, activityItemsConfig);
	Ext.merge(dashboardConfig, extendedConfig);
	Ext.merge(dashboardConfig, approvalItemsConfig);
	this.set("DashboardConfig", dashboardConfig);
},
 
/**
 * Returns approval items config.
 * @private
 * @return {Object}
 */
_getApprovalItemsConfig: function() {
	const config = {};
	const approvalSchemaName = this.get("ApprovalSchemaName");
	if (approvalSchemaName) {
		config[approvalSchemaName] = {
			masterColumnName: "Id",
			referenceColumnName: this.get("ApprovalReferenceColumnName"),
			viewModelClassName: "Terrasoft.ApprovalDashboardItemViewModel",
			viewConfigClassName: "Terrasoft.ApprovalDashboardItemViewConfig"
		};
	}
	return config;
},

Соответственно, Вам надо будет делать свои схемы-наследники этих, добавлять там кнопку и заместить SectionActionsDashboard на версию с их упоминанием. Для примера, для виз в схемах ApprovalDashboardItemViewModel и ApprovalDashboardItemViewConfig сделана своя логика с несколькими кнопками, а те схемы унаследованы от тех же EntityDashboardItemViewModel и BaseDashboardItemViewConfig.

 

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

Бодрого дня!

Коллеги, подскажите в какой схеме находится стандартные кнопки Выбрать и Добавить в Лиде.

Нужно к ним процесс привязать, а не можем их отыскать в схемах(.

спасибо!)

 

Нравится

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

Используйте F12 и инспектор - помогает)

Кнопки зашиты в BaseProfileSchema, от этой схемы наследуются конкретные страницы (как на скрине - LeadAccountProfileSchema). В них и замещать

Используйте F12 и инспектор - помогает)

Кнопки зашиты в BaseProfileSchema, от этой схемы наследуются конкретные страницы (как на скрине - LeadAccountProfileSchema). В них и замещать

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

Данила, спасибо!) нашли все)

 

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

Подскажите пожалуйста как добавить кнопку в шкалу стадии на карточке Продаж. Место добаления указано на рис.1.

Нравится

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

Добрый вечер!

Скриншот очень содержательный:smile:.

Не работает. Возможно кто-то делал подобную задачу. Помогите пожалуйста.

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

При замещены данной схемы выбираю Родительский объект "BaseActionDashboard" пакета ActionDashboard. Согласно название модуля будет BaseActionsDashboard, а нужно что бы было SectionActionDashboard. При изменении названия модуля на SectionActionDashboard остается название BaseActionDashboard.

Подскажите пожалуйста, что делаю не так.

Прикрепите скриншот на внешнем ресурсе для более четкого отображения

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

Добрый день.

Добавляю кнопку для каждого элемента грида в разделе. Код следующий:

define('UsrSvcCatSection', ['ext-base', 'terrasoft', 'sandbox', 'UsrSvcCat',
        'UsrSvcCatSectionStructure', 'UsrSvcCatSectionResources'],
        function(Ext, Terrasoft, sandbox, entitySchema, structure, resources) {
        structure.userCode = function() {
                this.entitySchema = entitySchema;
                // ...
                // add sync button
                this.methods.syncThis = function() {
                        this.showInformationDialog("Bla-bla-bla!");
                };
                var baseGridConfig = this.methods.modifyGridConfig;
                this.methods.modifyGridConfig = function(gridConfig) {
                        if (baseGridConfig) {
                                baseGridConfig.call(this, gridConfig);
                        }
                        var syncButtonConfig = {
                                className: "Terrasoft.Button",
                                caption: "Bla-bla",
                                enabled: true,
                                style: "blue",
                                visible: true,
                                tag: 'sync'
                        };
                        var gConfig = gridConfig;                      
                        gConfig.activeRowActions.push(syncButtonConfig);
                        return gConfig;
                };
                var baseOnActiveRowAction = this.methods.onActiveRowAction;
                this.methods.onActiveRowAction = function(buttonTag, primaryColumnValue) {
                        switch (buttonTag) {
                                case "sync":
                                        this.syncThis();
                                        break;
                                default:
                                        baseOnActiveRowAction.call(this, buttonTag, primaryColumnValue);
                                        break;
                        }
                };
        };
        return structure;
});

Код на моей кнопке отрабатывает корректно, однако не работает код на стандартных кнопках "Просмотр", "Копировать" и т.п.

Также пытался выполнить

default:
        this.callParent(arguments);
        break;

Результат аналогичен - стандартные кнопки не отрабатывают.

Подскажите пожалуйста, в чем моя ошибка?

Нравится

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

Вероятно вы не вызываете родительский код метода при его переопределении (callParent).
Посмотрите в соседнюю тему http://www.community.terrasoft.ru/forum/topic/11933

Максим, спасибо за ответ. Однако в теме, на которую вы ссылаетесь, добавление кнопки происходит отличным от моего способом.

Я пробовал вызывать callParent - результат аналогичен. Стандартные кнопки не работают.

Проблема решена. Возможно кому-то поможет:

this.methods.onActiveRowAction = function(tag, id, parentOnActiveRowAction) {
    switch (tag) {
        case 'sync':
             this.syncThis();
             break;
        default:
             parentOnActiveRowAction.call(this, tag, id);
             break;
    }
}

Вопрос...а такое применимо для кнопок в редактируемом реестре.
Столкнулся что добавив к стандартным кнопкам свои...стандартные кнопки не работают.

onActiveRowAction: function(buttonTag) {
				var activeRow = this.getActiveRow();
				var position;
				//this.callParent(arguments);
				switch (buttonTag) {
					case "Up":
						position = activeRow.get("Position");
						if (position > 0) {
							position--;
							this.setPosition(activeRow.get("Id"), position, this.reloadGridData, this);
						}
						break;
					case "Down":
						position = activeRow.get("Position");
						position++;
						this.setPosition(activeRow.get("Id"), position, this.reloadGridData, this);
						break;
					default:
						break;
				}
			},
Показать все комментарии

Подскажите, пожалуйста, ещё - как добавлять колонки в существующие родительские и базовые объекты?

Нравится

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

Здравствуйте, Евгений!

Для этого в системе можно создавать замещающие объекты. Подробнее Вы можете ознакомиться в документации http://academy.terrasoft.ru/documents/docs/technic/SDK/7.6.0/SectionCon….

Цитирую:
"Если вам необходимо внести изменения в объект или страницу, которые являются частью базового пакета, в меню [Добавить] выберите [Замещающий объект] либо [Замещающая страница] соответственно, и в свойствах созданной схемы в поле [Родительский объект] или [Родительская страница] укажите схему, которую следует замещать в текущем пакете."

То есть, Вы можете создать замещающий объект и добавить в него желаемые колонки.

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

В SDK bpm'online добавлен подраздел "Примеры решения типовых задач".
В нем мы будем размещать решения кейсов, связанных с разработкой пользовательского интерфейса и бизнес-логики приложения.
Заходите на сайт Terrasoft Academy в раздел "Документация SDK" и узнайте как:

Статьи расположены в разделе "Разработка конфигураций на платформе" в подразделе "Примеры решения типовых задач"

Нравится

Поделиться

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

Пытаюсь добавить кнопку в область периода отображения записей (задачи). Но после сохранения окна область не прорисовывается корректно.
Подскажите как выполнить корректное добавление кнопок?

Нравится

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

Олег, спасибо за предоставленную информацию.
Данная особенность проявляется тогда, когда выставить свойство выравнивания для кнопки = alhClient).
По обращению создан запрос на изменение № 66350, работы по которому запланированы на июнь.
Как только получим информацию - сообщим.

Спасибо. Жду.

Олег, по запросу прошли работы, проблема исправлена в бинарных файлах.
За новой сборкой можете обратиться в Службу технической поддержки, на адрес support@tscrm.com.

Татьяна, спасибо.

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