I have a business process calling some subprocesses, and it should then open a new record page.  but for some reason, the page doesn't open, and the process is left in the running state. does anybody know what can prevent opening a page?

Like 0

Like

2 comments

Check the start of the process (select the green start where the process begins) and make sure it does not have the "run in background" option checked. 

I've checked that, and it's not checked. I did some further analysis, and the record is created and i can open it, it only doesn't want to open during the process flow. Furthermore, if I run the process under my colleague's credentials, the record does open. So, one would think it's a permission problem, although we both have the same permissions, we both have the system administrator role, and i can open the record 'manually'...

Show all comments

Hi Creatio Community,

 

I am looking to consume my own or an external API that returns a JSON response and embed an IFRAME inside a Creatio Freedom UI page to display the relevant data.

 

My Goal:

Call an API that responds with JSON data.

Display the API response inside an IFRAME in Freedom UI.

Ensure the IFRAME updates dynamically based on API data.

  •  

My Questions:

  1. What is the best way to embed an IFRAME inside a Freedom UI page?
  2. How can I dynamically set the IFRAME's src based on API response data?
  3. Are there any security or CORS restrictions I should be aware of when using an external API?

     

If anyone has experience implementing this in Freedom UI or has sample configurations, I'd love to hear your insights!

 

Thanks in advance!

Like 0

Like

1 comments
Best reply

You can see an example of embedding an IFRAME and setting the src of the IFRAME dynamically here: https://customerfx.com/article/embedding-an-iframe-on-a-creatio-freedom-ui-page/

However, an IFRAME cant just display data from an API. An IFRAME simply embeds another page, it would be the responsibility of the page you're embedding to retrieve and display the API data. 

You could however, use a similar approach to the article for creating an IFRAME and just have that component retrieve the API data and render out HTML as needed. Alternatively, you could create a full Angular component that retrieves and displays the API data, which is likely a better route anyway. See https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platform/front-end-development/freedom-ui/remote-module/implement-a-remote-module/overview 

As for CORS restrictions, that would be something imposed (or not) by the API, not Creatio.

Ryan

You can see an example of embedding an IFRAME and setting the src of the IFRAME dynamically here: https://customerfx.com/article/embedding-an-iframe-on-a-creatio-freedom-ui-page/

However, an IFRAME cant just display data from an API. An IFRAME simply embeds another page, it would be the responsibility of the page you're embedding to retrieve and display the API data. 

You could however, use a similar approach to the article for creating an IFRAME and just have that component retrieve the API data and render out HTML as needed. Alternatively, you could create a full Angular component that retrieves and displays the API data, which is likely a better route anyway. See https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platform/front-end-development/freedom-ui/remote-module/implement-a-remote-module/overview 

As for CORS restrictions, that would be something imposed (or not) by the API, not Creatio.

Ryan

Show all comments

I'm installing Creatio 8.2.2 Studio MSSQL, but after everything is done, I get an error when logging in

 

Error: System.Exception: Library e_sqlite3 not found

 

https://prnt.sc/ds1ZddIu8vdx

Like 0

Like

2 comments

According to the post below, it could be that you need to possibly modify the permissions of the folders under Terrasoft.WebApp. See https://community.creatio.com/questions/error-logging-local-deployment-creatio

Ryan

Ryan Farley,

Still getting the same error, i think that is different case maybe

System.Exception: Library e_sqlite3 not found\r\nplat: win\r\nsuffix: DLL\r\npossibilities (3):\r\n

Show all comments

Hello,

 

I have a master record and a detail where I allow inline editing. Making changes on the detail triggers an update on the master record. Because the table behind the master record has live updates, the changes are immediately reflected on the master record. 

All that logic works fine. The issue I have is that if the user makes changes to the master record and then changes to the detail (like adding a new detail, deleting or editing an existing one,) the changes on the master record are not saved,.

Is there any way to save the master record when the user saves the detail changes?

Thanks,
Jose

Like 0

Like

1 comments
Best reply

Hello,

Thank you for your request. Unfortunately, it is not possible to change this behavior using custom methods.
 

As a workaround, you can achieve this using development methods.

To achieve this you can to implement custom handlers for two requests:


1. When saving changes in the detail list (crt.SaveRecordsRequest)

First, execute the default logic for saving the detail records.

Then, trigger crt.SaveRecordRequest to ensure that the master record is also saved.
 

Be careful not to confuse the requests—crt.SaveRecordsRequest is for saving multiple records, while crt.SaveRecordRequest is for a single record.
 

2. When deleting records from the detail list (crt.HandleModelEventRequest)

Execute the default logic first.

Then, check if request.modelEvent.type === 'delete'.

If it is a delete operation, trigger crt.SaveRecordRequest to save the master record as well.

Hello,

Thank you for your request. Unfortunately, it is not possible to change this behavior using custom methods.
 

As a workaround, you can achieve this using development methods.

To achieve this you can to implement custom handlers for two requests:


1. When saving changes in the detail list (crt.SaveRecordsRequest)

First, execute the default logic for saving the detail records.

Then, trigger crt.SaveRecordRequest to ensure that the master record is also saved.
 

Be careful not to confuse the requests—crt.SaveRecordsRequest is for saving multiple records, while crt.SaveRecordRequest is for a single record.
 

2. When deleting records from the detail list (crt.HandleModelEventRequest)

Execute the default logic first.

Then, check if request.modelEvent.type === 'delete'.

If it is a delete operation, trigger crt.SaveRecordRequest to save the master record as well.

Show all comments

Hi. 

 

Im trying to save a script task in the open process of a lookup but when I try to save it the next message appear: An item with the same key has already been added

 

And i can´t save the process. I already  generate all schemas and compile. But i still have the same problem 

 

 

Do you have any idea why is this happening? 

 

Thank you 

 

 

 

Like 0

Like

1 comments

Hello!
I recommend checking the application logs for error details. Based on them, we can decide on the next steps.

Show all comments

Hi, all mentors,

 

   I use Clio in visuall c#, and the connection seems okay. 

But I failed to see the SQL output console when I use the SQL

 

   Select * from "Contact", it's seems the sql output console disappear. 

 

How to activate it, please kindly help. 

 

Like 1

Like

2 comments

Have you installed clio api (cliogate) in the instance? That is a requirement to execute SQL using clio. 

If not, in VSCode click the clio explorer main menu button (see https://share.customerfx.com/v1uGwpWw) and select "Install clio api" to install the clio API package into the system. 

 

Also, make sure you've installed .NET 8 - Also, install the clio command line as well from that same menu. 

You can follow the complete setup steps here: https://customerfx.com/article/how-to-install-clio-explorer-for-creatio/

Ryan

Show all comments

In the classic version we can communicate between modules, for example from page to detail or vice versa using messages.

I have case in my form page there is a modal page, when the modal page is closed it will send data to the form page to do something.
How to implementation in freedom?

Thank you

Like 2

Like

1 comments

It would likely work to use requests with the correct scopes set for message exchange like how sandbox worked, but I've not really tried to implement that across different pages. It might also work to just use Javascript's built-in Broadcast Channel API for that as well. It exists for purposes like this, messaging between different contexts. See details here: https://developer.mozilla.org/en-US/docs/Web/API/Broadcast_Channel_API

Ryan

Show all comments

Hi Team,

 

I am seeing some compilation error in the configuration tab after working on oData. Below is the screenshot for your reference:

Below are the error message descriptions for your reference:

 

Could not copy "obj\Release\Terrasoft.Configuration.ODataEntities.dll" to "bin\Terrasoft.Configuration.ODataEntities.dll". Exceeded retry count of 10. Failed. The file is locked by: "IIS Worker Process (24568)"

 

Unable to copy file "obj\Release\Terrasoft.Configuration.ODataEntities.dll" to "bin\Terrasoft.Configuration.ODataEntities.dll". The process cannot access the file 'C:\Academy\Builds\D1_Dev\Terrasoft.WebApp\Terrasoft.Configuration\bin\Terrasoft.Configuration.ODataEntities.dll' because it is being used by another process.

 

Can anyhow let me know how to fix these issue?

Thanks!

Like 0

Like

1 comments

Hello,

 

To fix this, you need to generate code for all schemas and then compile the site.

The main reason for this behavior is that the file system mode (fileDesignMode) is enabled.

Show all comments

Hi Creatio Community,

 

I'm integrating an iFrame into a Creatio tab for our Custom App. The integration works, but the iFrame does not expand to full screen inside the tab.

My Current Setup

I’m inserting the usr.FrameComponent inside a TabContainer, but it doesn’t fill the entire available space.

viewConfigDiff: /**SCHEMA_VIEW_CONFIG_DIFF*/[
...,
           {
				"operation": "insert",
				"name": "GridContainer_Sales",
				"values": {
					"type": "crt.GridContainer",
					"items": [],
					"rows": "minmax(32px, max-content)",
					"columns": [
						"minmax(32px, 1fr)"
					],
					"gap": {
						"columnGap": "large",
						"rowGap": "none"
					},
					"visible": true,
					"color": "transparent",
					"borderRadius": "none",
					"padding": {
						"top": "none",
						"right": "none",
						"bottom": "none",
						"left": "none"
					},
					"alignItems": "stretch"
				},
				"parentName": "TabContainer_Sales",
				"propertyName": "items",
				"index": 0
			},
            {
				"operation": "insert",
				"name": "Label_mmxxxre",
				"values": {
					"layoutConfig": {
						"column": 1,
						"row": 1,
						"colSpan": 1,
						"rowSpan": 18
					},
					"type": "usr.FrameComponent",
		         "src": "https://www.smarten.com"
				},
				"parentName": "GridContainer_Sales",
				"propertyName": "items",
				"index": 0
			},
			...
]/**SCHEMA_VIEW_MODEL_CONFIG_DIFF*/,

Issue

Even when I try using fitContent: true or modifying layoutConfig, the iFrame remains small and doesn’t adjust to the full tab size.

What I Tried

  • Setting fitContent: true for the TabContainer and GridContainer.
  • Adjusting layoutConfig with rowSpan: 18.
  • Setting explicit height: 100% and width: 100%.

Has anyone encountered this issue? How can I make the iFrame take up the entire available space in the tab?

Thanks in advance for any help!

Like 0

Like

2 comments
Best reply

Hi Tushar,

If you are currently utilizing the Customer FX guide, you may be experiencing an iFrame display anomaly similar to one I recently encountered.

To address this issue and ensure the iFrame renders in full screen, I implemented an update to the iFrame module.

Specifically, the following code modification resolves the problem:

 

this._frameConfig.style = (this._frameConfig.style || "") + "height:" + this.frameConfig.height + ";width:" + this.frameConfig.width + ";";

 

This adjustment guarantees the style property is properly initialized before the height and width values are appended, thereby rectifying the display discrepancy.

Please let me know if you require further clarification or assistance.

Hi Tushar,

If you are currently utilizing the Customer FX guide, you may be experiencing an iFrame display anomaly similar to one I recently encountered.

To address this issue and ensure the iFrame renders in full screen, I implemented an update to the iFrame module.

Specifically, the following code modification resolves the problem:

 

this._frameConfig.style = (this._frameConfig.style || "") + "height:" + this.frameConfig.height + ";width:" + this.frameConfig.width + ";";

 

This adjustment guarantees the style property is properly initialized before the height and width values are appended, thereby rectifying the display discrepancy.

Please let me know if you require further clarification or assistance.

PS: 8.2.2 has new iFrame component : Iframe. You can now embed external content using the new crt.IFrame component.

Show all comments

I have try to override the save functionality. But, it is not working. Even the 1st console is not working. I have added bindTo in click event in ViewConfigDiff. Pls help with that.

Like 0

Like

4 comments
Best reply

Hello, 

You seem to be mixing things between classic pages and Freedom UI pages. The page you're customizing appears to be a Freedom UI page, which does not support adding methods. The code you've added would work for classic pages, but not on Freedom UI pages. 

Instead, this is done via request handlers on Freedom UI pages. See this link for overriding the save request on a Freedom UI page: https://customerfx.com/article/adding-code-to-the-save-event-of-a-creatio-freedom-ui-page/

Ryan

Hello, 

You seem to be mixing things between classic pages and Freedom UI pages. The page you're customizing appears to be a Freedom UI page, which does not support adding methods. The code you've added would work for classic pages, but not on Freedom UI pages. 

Instead, this is done via request handlers on Freedom UI pages. See this link for overriding the save request on a Freedom UI page: https://customerfx.com/article/adding-code-to-the-save-event-of-a-creatio-freedom-ui-page/

Ryan

Also, as a side note, the code you have in the getActiveCount won't work since ESQ is asynchronous (so the return will happen before the query returns any results), additionally, the results of the query of an ESQ are passed in via a callback function passed as a parameter to getEntityCollection, not returned as a result of calling getEntityCollection.

For a Freedom UI page, I'd use a model load instead of the ESQ since you can await the result, rather than use a callback function. See https://customerfx.com/article/querying-data-using-filter-conditions-via-the-model-class-equivalent-to-enityschemaquery-in-a-creatio-freedom-ui-page/

Ryan

Hi Ryan,

I have added this code in handler, still it's not works for me. Please address, what i missed here.

Revathi,

Can you provide more details by what isn't working?

Show all comments