Hi there,

 

I made a button that call ProcessModuleUtilities on click. Once clicked, the callback is called and a BodyMask is shown but never hidden.

 

Here is the button :

			{
				"operation": "insert",
				"name": "GetAccountBtn",
				"parentName": "LeftContainer",
				"propertyName": "items",
				"values": {
					"itemType": Terrasoft.ViewItemType.BUTTON,
					"caption": {
						"bindTo": "Resources.Strings.GetAccount"
					},
					"click": {
						"bindTo": "onGetAccountClick"
					},
					"visible": {
						"bindTo": "getGetAccountButtonVisible"
					},
					"enabled": {
						"bindTo": "getGetAccountButtonEnable"
					},
					"style": "blue",
					"classes": {
                        "textClass": ["actions-button-margin-right"]
                    }
				}
			},

Here is the methods :

			onGetAccountClick: function() {
				Terrasoft.showConfirmation("Effectuer une demande pour devenir l'AM de ce compte ?", function(result) { 
    				if (result === Terrasoft.MessageBoxButtons.YES.returnCode) {
        				this.processGetAbandonAccountPopupResponse("RequestGetAccount");
    				}
				}, ["yes", "no"], this);
			},
			processGetAbandonAccountPopupResponse: function (processName) {
				args = {
					sysProcessName: processName,
					parameters: {
						accountId: this.get("Id"),
						userId: Terrasoft.SysValue.CURRENT_USER.value
					},
					callback: this.callbackShowRequestMade,
					scope: this
				};
				ProcessModuleUtilities.executeProcess(args);
			},
			callbackShowRequestMade: function () {
				this.showInformationDialog("Votre demande a été effectuée.");
			},

Here is my business process :

And finally here is the result : https://vimeo.com/727290324/560dec0d61

 

I have this error in the console  :

XML Parsing Error: not well-formed Location: https://creatioBaseUrl/0/ServiceModel/ProcessEngineService.svc/RunProce… Line Number 1, Column 1

 

Here is the request made by my browser :

POST https://creatioBaseUrl/0/ServiceModel/ProcessEngineService.svc/RunProcess

Request body :

{
  "collectExecutionData": true,
  "parameterValues": [
    {
      "name": "accountId",
      "value": "b253a1de-10cd-452f-bd23-28ecb696b44a"
    },
    {
      "name": "userId",
      "value": "aa995be7-7611-43ea-a79d-19894080a976"
    }
  ],
  "schemaName": "RequestGetAccount",
  "resultParameterNames": []
}

Response body :

{
  "processId": "e3493a1e-0069-4164-81e1-47c7743146f0",
  "processStatus": 1,
  "resultParameterValues": null,
  "executionData": null,
  "success": true,
  "errorInfo": null
}

Do you have any idea what can I do to fix this bodyMask issue ?

 

Kind regards,

 

Julien

Like 1

Like

2 comments
Best reply

When you use a callback with ProcessModuleUtilities, you're responsible for clearing the mask in the callback function.  Add MaskHelper module to the top of the code (like you did with ProcessModuleUtilities) and then call this in the callback function:

MaskHelper.HideBodyMask();

Ryan

When you use a callback with ProcessModuleUtilities, you're responsible for clearing the mask in the callback function.  Add MaskHelper module to the top of the code (like you did with ProcessModuleUtilities) and then call this in the callback function:

MaskHelper.HideBodyMask();

Ryan

Ryan Farley,

Thank you Ryan, I forgot this detail.

 

Julien

Show all comments

Hi Community,

 

I’ve this requirement where a specific user must run a specific Process. In this process, there should be a set of tasks that must gather all the attachments of the current record and generate a ZIP file with these attachments. Furthermore, this process should also download the ZIP file to the user’s computer.

 

Any idea on how can I achieve this requirement?

 

Thanks in advance.

 

Best Regards,

Pedro Pinheiro

Like 1

Like

4 comments

Hello Pedro,

Unfortunately, your task can not be achieved using the basic logic of Creatio. There is no possibility to generate ZIP files from attachments.

Also, you can not download some files to the user's computer automatically until he does not download them manually.

Best regards, Alex.

Hi there! We recently uploaded an application to the marketplace 
that allows you to download all the files of a section, example of an 
account, in a ZIP file. Possibly it is useful for your use case or 
to check how it was done. 
Check it here https://marketplace.creatio.com/app/download-zip-button-creatio

Thank you

Regards

Uriel,

 

Thank you for the response. We manage to find a solution for our requirement. However, If we get another use case like this one, we will have your application in mind.

 

Best Regards,

Pedro Pinheiro

 

Hi Pedro Pinheiro,

 

I am trying to achieve the same requirement . Would you be able to provide me the logic you used to create the zip and download it?. 

 

Best regards,

Pavan Manne

Show all comments

Hello community,

 

I am using perform task inside section cases. The task updates the entity stage. After the stage is updated from the task I want to catch this event and reload the entity from the client side. I tried using the following approach but nothing happens

"Stage": {
				dependencies: [
					{
						columns: ["Stage"],
						methodName: "onChangeStage"
					}
				]
			}

The below script is called only when the stage is updated directly from the client side and not from a task or a business process. Is there a way to catch this event from the client side?

Like 0

Like

1 comments
Best reply

Since the automatic changing of a stage happens outside of the context of a page, you won't receive any events from the change on the page itself. 

The only option is to either use a process, entity subprocess or entity event listener class (and starts with a signal of case modified in stage field) and if it's changed to the appropriate stage you send a signal to the client. You can see how to send a message from the server (such as from a process) to the client here: https://customerfx.com/article/sending-a-message-from-server-side-c-to-…

You'll add code to the page to listen for this message and then reloadEntity to refresh the page. 

BTW, if you want to use an entity event listener class instead of a process, I've outlined how to do that here https://customerfx.com/article/adding-code-to-listen-for-entity-events-… although using a process is quick and easy.

Ryan

Since the automatic changing of a stage happens outside of the context of a page, you won't receive any events from the change on the page itself. 

The only option is to either use a process, entity subprocess or entity event listener class (and starts with a signal of case modified in stage field) and if it's changed to the appropriate stage you send a signal to the client. You can see how to send a message from the server (such as from a process) to the client here: https://customerfx.com/article/sending-a-message-from-server-side-c-to-…

You'll add code to the page to listen for this message and then reloadEntity to refresh the page. 

BTW, if you want to use an entity event listener class instead of a process, I've outlined how to do that here https://customerfx.com/article/adding-code-to-listen-for-entity-events-… although using a process is quick and easy.

Ryan

Show all comments

Hello community,

I want to catch the step change event of an entity in the client side.

Does Creatio offer a built-in method that implements this functionality that I can override?

Like 0

Like

1 comments

Hello!

 

Thank you for your question. Could you please elaborate more on your business task? Would you like to receive a notification each time a record is modified? Kindly provide us with more details.

 

Best regards,

Anastasiia

Show all comments

Hello Community,

I am trying to create a lookup filter in client side based on the values of a detail. The case is as follows: I want to display within the application only the contacts which are in the detail UsrApplicationAssignedTo where the application id must be equal to the id of the current application.

 

After adding the following code to my page I get 0 records.

 

attributes: {
	"UsrAssignedTo": {
		// Attribute data type.
		"dataValueType": Terrasoft.DataValueType.LOOKUP,
		// The configuration object of the LOOKUP type.
		"lookupListConfig": {
			// Array of filters used for the query that forms the lookup field data.
			"filters": [
				function() {
					var filterGroup = Ext.create("Terrasoft.FilterGroup");
					filterGroup.add("Contact",
						Terrasoft.createColumnIsNotNullFilter("[UsrApplicationAssignedTo:UsrContact].UsrContact.Id"));
					debugger;
					filterGroup.add("AppFilters",
						Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.EQUAL,
						"[UsrApplicationAssignedTo:UsrApplication].Id",
						this.get("Id")));
					return filterGroup;
				}
			]
		}
	}
}

 

Like 0

Like

1 comments
Best reply

Hello User 1997,

 

Similar filter example was already provided here with the only difference in the section name (there it was the Projects section, here it's Applications section).

 

Best regards,

Oscar

Hello User 1997,

 

Similar filter example was already provided here with the only difference in the section name (there it was the Projects section, here it's Applications section).

 

Best regards,

Oscar

Show all comments

Hi community,

I'm trying to read the value of a custom system setting in creatio from the client-side, but I noticed that even if my setting has the flag "Cached" it results undefined when I try to get the value using this code:

var test = Terrasoft.SysSettings.cachedSettings.UsrSysSettingTest;





while when I use the asynchronous way it works fine.

Code for the asynchronous way:

Terrasoft.SysSettings.querySysSettingsItem("UsrSysSettingTest", function(sysSettingTest) { 

       var test = sysSettingTest; //here is defined

}, this);



Do you know why this is happening?

 

Let me know.

Thanks in advance,

Luca

Like 0

Like

5 comments
Best reply

Hi everyone,

I discovered that the problem with the cached setting was the type of it. To fix the issue I simply had to change the type from Text (500) to Text (250), I tried to do the same in other environments and I had the same result.

Hope it can help.

 

Best regards,

Luca

Hi Luca,

 

I was able to reproduce this behavior using the following steps:

 

1) Create a system setting

2) Don't relogin to the app and execute both commands you've shared in the developer console

 

As a result synchronous call returns undefined, async call returns value.

 

You need to relogin to the app to start using the setting value synchronously (if it won't help try flushing Redis).

 

Best regards,

Oscar

Hi Oscar,

I've actually logged into the app many times, I even closed the browser and flushed Redis, but I still have this issue.

 

Is there anything else I can do?

Thanks.

 

Best regards,

Luca

Luca Tavasanis,

 

Does this issue occur in another browser? In my case cached system setting was fetched properly after relogin and the issue is not in the rights for the setting since you can fetch it asynchronously.

 

Best regards,

Oscar

Oscar Dylan,

Yes, I have this problem also in other browsers.

 

Best regards,

Luca

Hi everyone,

I discovered that the problem with the cached setting was the type of it. To fix the issue I simply had to change the type from Text (500) to Text (250), I tried to do the same in other environments and I had the same result.

Hope it can help.

 

Best regards,

Luca

Show all comments

I created a custom package working in file system mode on my PC.

The package is set to be "Compiled into a separate assembly".

When I compile it (selecting "Compile" in the dropdown menu near the package name and selecting "Compile all" in the Actions button) I see a popup error reporting syntax errors in all the Client modules of the package (see image below).

Creatio shouldn't compile Client modules since they are Javascript and not C# (the errors are syntax errors related to C# language).

I also "Generate for all schemas".. I tried almost everything without success.

The package works fine, even exported and installed in cloud production environment, but I cannot compile it in my development environment.

Why does Creatio try to compile in C# the Client modules?

 

 

Like 0

Like

0 comments
Show all comments

Hello community,



Can you please advise me how to run the server code (C#) from a client page (JS).

The business process has a delay when launching, so this method is not the best solution in my case.

 

Thank you in advance.

Mariia

Like 0

Like

2 comments
Best reply

Hello,

 

Please check the following link https://academy.creatio.com/docs/developer/back-end_development/configu…;



Best Regards,

Tetiana Bakai

Hello,

 

Please check the following link https://academy.creatio.com/docs/developer/back-end_development/configu…;



Best Regards,

Tetiana Bakai

As Tetiana mentioned, how this is typically done in Creatio is by creating a configuration web service that you call from your client-side js code. It's actually one of my favorite parts of Creatio and makes for a very powerful development experience and allows you to keep the UI very quick by passing things between the client and the server and performing operations on the server rather than the client. Along with the Academy article Tetiana shared, I also have a write up of how to create a configuration web service and call it from client-side code here: https://customerfx.com/article/creating-a-web-service-and-consuming-it-…

Ryan

Show all comments

Hello community,

 

Could you please advise me how to send a message from a page to a business process.

The idea is the next: the process starts and sends a message to the client with a confirmation question and waits for the message to continue.

The message will be generated on the client depending on the button pressed on confirmation pop-up window.

 

Thank you in advance for your ideas.

Best regards,

Mariia

Like 0

Like

1 comments

Hello Mariia,

 

I'm afraid there is no way to send a message from the client to some specific process log record (since ProcessEngineService.svc doesn't provide this option). Please re-design your process, use the "User dialog" element and use two (or more, based on answer options in the dialog) conditional flows after the "User dialog" element.  As a result you will be able to continue the process execution based on the answer option the client selects.

 

Best regards,

Oscar

Show all comments

Hi Community,

 

I have this situation where I need to excute some process through client side. While executing this process I want to pass a collection of ids to one of the process parameters. These ids are the Quotes that I multi-selected in the image bellow.

Pressing the  "Merge Quote" button will execute the following code.

This code will create a new collection with all the ids selected before and send them to my process. The next image shows the collection created.

I want to know which type of data should I use for my parameter in my process for this type of collection, where can I learn more about these types of collections and its methods and how can I access its values with the various process tasks?

 

For tests purposes I want to display one of the ids using a "Open Popup Window". 

 

Thanks in Advance.

 

Best Regards,

Pedro Pinheiro.

Like 1

Like

1 comments

Hello Pedro,

 

Creatio works with collections if it's needed to process such data but not to display it. You can pass items to sub_process or web_service elements or perform some script_task over it. Please refer to https://academy.creatio.com/docs/user/bpm_tools/business_process_setup/process_collections where this process is described.

 

In case if you want to work with the result of your script that returns a collection as described in your example,  you need to write it in a text string with ";" separator for Id's and then - split it on the next step to parse Id's and reflect them where you want.

 

Best regards,

Bogdan

Show all comments