При натисканні кнопка має запустити процес, передати в нього id і після того закрити сторінку



Спробував змінити метод, що опрацьовує натискання 

 Код кнопки        {

                "operation": "insert",

                "name": "Button_5atyln4",

                "values": {

                    "type": "crt.Button",

                    "caption": "#ResourceString(Button_5atyln4_caption)#",

                    "color": "default",

                    "disabled": false,

                    "size": "large",

                    "iconPosition": "only-text",

                    "visible": true,

                    "clickMode": "default",

                    "clicked": {

                        "request": "crt.CustomHandler"

                    }

                },

                "parentName": "MainHeaderTop",

                "propertyName": "items",

                "index": 2

            },

Метод  onButtonClick:



 

     },

        handlers: {

            onButtonClick: {

                request: "crt.CustomHandler",

                handler: function(request, next) {

                    var result = next ? next.handle(request) : null;

                    var handlerChain = sdk.HandlerChainService.instance;

                    var recordId = this.get("Id"); // Отримуємо ID з поточного запису

                    // Запускаємо бізнес-процес і передаємо ID як параметр "RecordId"

                    handlerChain.process({

                        type: 'crt.RunBusinessProcessRequest',

                        $context: request.$context,

                        processName: "UsrProcess_9ace09c",

                        processRunType: "ForTheSelectedPage",

                        parameters: {

                            RecordId: recordId

                        }

                    });

                    // Закриваємо поточну сторінку

                    handlerChain.process({

                        type: 'crt.ClosePageRequest',

                        $context: request.$context

                    });

                    return result;

                }





Після збереження коду сторінка не відкривається. Підкажіть, що роблю не так

 

Нравится

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

Доброго дня!

По наданому вами коду не можна зрозуміти де конкретно помилка. В цьому випадку варто відкрити консоль браузера F12 та подивитись чи немає там конкретної помилки. В будь-якому випадку, треба провести повний дебаг даного коду, а зробити це тут не вийде.

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

Добрый день.

Случай:

У меня в карточке контакта есть делать которая отображает сделки в воронке продаж по клиенту. Когда я перехожу в сделку через карточку контакта, вношу какие либо изменения и сохраняю сделку, после сохранения мене перебрасывает на карточку контакта. Как изменить условие кнопки "Сохранить" на странице записи в воронке продаж так чтоб после сохранения меня не перекидывало на страницу карточки контакта, а оставляло на станице сделки в воронке продаж?

 

Нравится

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

Добрый день!

Вам необходимо переопределить метод save в схеме страницы детали следующим образом:

save: function(config) {
                if (config) {
                    config.isSilent = true;
                }
                else {
                    config = {
                        isSilent: true
                    };
                }
                this.callParent([config]);
            }
        },



 

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

Работает)

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

Добрый день! 

 

Просьба подсказать, как в коде делать проверку, входит ли пользователь в список пользователи/роли, который описан в "Доступ по операциям" и привязать эту проверку при нажатии на кнопку. Если нужно в какой-то момент выдать права на кнопку определенному сотруднику, то можно просто добавить в список и проверка будет отработает.

Нравится

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

Добрый день!



Мы проверяем в момент открытия страницы, заполняя атрибут.

А потом уже этот атрибут используем, например, в бизнес-правилах



 

RightUtilities.checkCanExecuteOperation({operation: "UsrCanReadSomething"}, function(result) {
					this.set("UsrCanReadSomething", result);
				}, this);

 

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

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

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

Добрый день.

Я добавил кнопку  в схему раздела, что бы отображалась при совмещенном режиме. 

Кнопка отображается но не выполняет те действия что прописаны для нее.

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

 

onTakeToWorkButtonClick: function () {

this.set("Srv_ApplExecutor",Terrasoft.SysValue.CURRENT_USER.displayValue);}

 

Но если на кнопку повесить скрипт открытия диалогового окна, 

onTakeToWorkButtonClick: function () {

                this.showInformationDialog("!!!!");}

то все работает, окно появляется. 

 

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

Спасибо.

 

Нравится

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

Добрый день!

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

В этом случае необходимо использовать другой способ обновления записи, например через UpdateQuery:

if (activeRow) {
                    this.showInformationDialog("!!!!");
					var update = Ext.create("Terrasoft.UpdateQuery", { rootSchemaName: "Account" });
					update.filters.add("IdFilter", 
                    	update.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Id", activeRow));
                	update.setParameterValue("UsrTestString", "Some test", Terrasoft.DataValueType.TEXT);
                	update.execute();
                }

 

Добавил в скрипт ActiweRow, но не помогло

methods: {

            

            onTakeToWorkButtonClick: function () {

                

                var activeRow = this.get("ActiveRow");

                    if (activeRow) {

                    return    this.set("Srv_ApplExecutor",Terrasoft.SysValue.CURRENT_USER.displayValue);

                    }    

               }

        },

Добрый день!

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

В этом случае необходимо использовать другой способ обновления записи, например через UpdateQuery:

if (activeRow) {
                    this.showInformationDialog("!!!!");
					var update = Ext.create("Terrasoft.UpdateQuery", { rootSchemaName: "Account" });
					update.filters.add("IdFilter", 
                    	update.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Id", activeRow));
                	update.setParameterValue("UsrTestString", "Some test", Terrasoft.DataValueType.TEXT);
                	update.execute();
                }

 

Дима Вовченко,

Добрый день. 

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

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

1. 

update.filters.add("IdFilter", 

 IdFilter - мне надо подставить сюда свое значение по которому будут отфильтровываться записи? 

 

2.

сpdate.createColumnFilterWithParameter

(Terrasoft.ComparisonType.EQUAL, "Id", activeRow));

Id - аналогичный вопрос как в п.1. 

 

Спасибо.

 

 

Разобрался, работает. 

IdFilter не трогал, под остальные подставил свои данные и норм. 

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

Добавил this.reloadEntity(), не помогло

Есть же еще варианты по обновлению страницы после нажатия на кнопку?

 

 

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

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

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

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

Нравится

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

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

Для решения вопроса вам необходимо переопределить схему CommunicationHistoryItem и в ней добавить метод для добавления нового заказа, к примеру:

onCreateNewOrderMenuItemClick: function() {

                        this.openNewRecordCard("Order", "OrderPageV2");

                    },

Далее в блоке diff добавить кнопку внутри элемента CreateLinkButton в items:

{

                                        "id": "CreateNewOrder",

                                        "caption": {"bindTo": "Resources.Strings.CreateNewOrderMenuItemCaption"},

                                        "tag": "Order",

                                        "click": {"bindTo": "onCreateNewOrderMenuItemClick"}

                                    },

                                    

За пример реализации можете взять кнопку CreateNewContact.

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

Добрый день, коллеги! Стоит задача запуска процесса по фильтру группы раздела, версия 7.16.3  Нашла обсуждения 

https://community.terrasoft.ru/questions/massovo-postavit-aktivnosti

https://community.terrasoft.ru/questions/zapusk-biznes-processa-na-osno…

Но кнопка Запустить процесс появляется и содержит только процессы, настроенные, как независимые. Если их выделить и запустить процесс, Id записей не передается.  

Также в академии есть статьи:

https://academy.terrasoft.ru/docs/user/bazis_platformy/vypolnenie_bizne…

https://academy.terrasoft.ru/docs/user/kastomizacija_no_code/nastrojka_…

Т.е. в моем случае поведение системы соответствует 1-й статье, а добиться поведения, как во 2-й статье и рекомендациях сообщества не удается. В чем может быть причина ? 

 

Нравится

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

Вопрос снимается. Требуемая возможность появилась в 7.16.4

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

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

Подскажите какой метод (название метода и файла) отвечает за нажатие этой кнопки? 

Нравится

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

Добрый день.

При нажатии этой кнопки срабатывает метод applySimpleFilter из файла CustomFilterViewModelV2.

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

Добрый день. Можете подсказать как добавить дополнтельную кнопку после + и троеточия? 

 

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

Нравится

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

Например так, в схему нужно детали добавить код:

diff: /**SCHEMA_DIFF*/[
	{
		"operation": "insert",
		"name": "ButtonName",
		"parentName": "Detail",
		"propertyName": "tools",
		"values": {
			"itemType": Terrasoft.ViewItemType.BUTTON,
			"style": Terrasoft.controls.ButtonEnums.style.DEFAULT,
			"caption": resources.localizableStrings.ButtonCaption,
			"visible": { 
				"bindTo": "isButtomEnabled" 
			},
			"click": { 
				"bindTo": "buttomClick" 
			}
		}
	}
]/**SCHEMA_DIFF*/,

isButtomEnabled - метод для проверки видимости кнопки, если нужно всего отображать, то просто вернуть true

"caption": resources.localizableStrings.ButtonCaption - название кнопки (из строк локализации)

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

Например так, в схему нужно детали добавить код:

diff: /**SCHEMA_DIFF*/[
	{
		"operation": "insert",
		"name": "ButtonName",
		"parentName": "Detail",
		"propertyName": "tools",
		"values": {
			"itemType": Terrasoft.ViewItemType.BUTTON,
			"style": Terrasoft.controls.ButtonEnums.style.DEFAULT,
			"caption": resources.localizableStrings.ButtonCaption,
			"visible": { 
				"bindTo": "isButtomEnabled" 
			},
			"click": { 
				"bindTo": "buttomClick" 
			}
		}
	}
]/**SCHEMA_DIFF*/,

isButtomEnabled - метод для проверки видимости кнопки, если нужно всего отображать, то просто вернуть true

"caption": resources.localizableStrings.ButtonCaption - название кнопки (из строк локализации)

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

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

Как добавить кнопку в группе полей? Изображение удалено.

Нравится

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

Добрый день, Артем! Без кода его никак не добавить. 

В качестве примера могу посоветовать этот ролик (парень показывает как вообще это делается) https://www.youtube.com/watch?v=ZvCQsO_MQQE и даю отсылку на академию (чисто теоретическая часть) https://academy.terrasoft.ru/docs/7-16/developer/front-end_development/…

Добрый день, Артем! Без кода его никак не добавить. 

В качестве примера могу посоветовать этот ролик (парень показывает как вообще это делается) https://www.youtube.com/watch?v=ZvCQsO_MQQE и даю отсылку на академию (чисто теоретическая часть) https://academy.terrasoft.ru/docs/7-16/developer/front-end_development/…

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

Добавление кнопки звонка к полю, как в средствах связи, что бы можно было при звонке привязать в "Связи" запись раздела из которого был произведен звонок

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

Нравится

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

Добрый день! что касается добавления кнопки к полю, то подобное описано в данной статье. Что касается осуществление звонка, то Вам нужно подключить миксин CommunicationOptionsMixin в своем модуле откуда будете осуществлять звонок и привязать на кнопку метод обработчик, в результате выполнения которого будет вызываться один из методов миксина: callContact(number, contactId) или же callAccount: function(number, accountId)

Нигрескул Алексей,

 Проблема в том что вызов нужно сделать из раздела "Обращения", в записи которого нет контакта (анонимное обращение, где телефонный номер человек отправляет из формы для связи). По этой причине поле номера телефона было созданно кастомное, но связки с контактом или контрагентом нет, а в миксине нужна привязка эта. Если контакт привязан, то при наведении на его миникарточку можно нажать на иконку звонка, и при таком звонке к нему будет привязано обращение из которого звонили, но если контакта нет то звонок из поля должен быть

Александр, эта функция в CommunicationOptionsMixin в конечном счёте посылает сообщение через «песочницу»:

this.sandbox.publish("CallCustomer", {
	number: number,
	customerId: customerId,
	entitySchemaName: entitySchemaName,
	callRelationFields: relationFields
});

А обработчик — в CtiPanelModelUtilities:

/**
 * Handler of call to the subscriber event.
 * @param {Object} numberInfo Call parameters information.
 * @param {String} numberInfo.number Subscribers phone number.
 */
onCallCustomer: function(numberInfo) {
	if (!this.get("IsConnected")) {
		this.sandbox.publish("SelectCommunicationPanelItem", {selectedItem: "CtiPanel"});
		this.logInfo(this.getResourceString("NotConnectedMessage"));
		return;
	}
	var phoneNumber = numberInfo.number;
	if (numberInfo.customerId) {
		this.set("AdvisedIdentifiedSubscriberInfo", numberInfo);
	}
	this.callByNumber(phoneNumber);
},

То есть параметр «customerId» не является обязательным и можно попробовать вызвать с одним лишь номером. А о добавлении связей, нужно смотреть, в каком формате при нормальном звонке передаётся callRelationFields и заполнить аналогичным.

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

CustomerId не обязательный, так как cti все равно определяет по номеру контакт , но если надо привязать ещё ссылку на запись раздела (в деталь связи) то обязательно как оказалось. Другими словами - что бы к звону привязать запись какого-то раздела, нужно что бы в системе обязательно существовал контакт которому звоните, так как если контакт не существует то и привязать к звонку нельзя не запись контакта не запись раздела из которого звоните. Ограничение зачем такое сделано не знаю, так как у меня рассмотрение анонимных обращений, и контакта нет, но звонки делают и привязать обращение к звонку надо, а нельзя

Если штатными API звонков не получится, можно вычислить Id нового звонка и создать записи или заполнить поля связей как обычные данные, заполнив поля по аналогии. Более подробно увидеть, что создаётся, можно, отловив уходящие к серверам HTTP или SQL-запросы.

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