Freedom_UI
API_Integration
iframe
json
External_API
Creatio_Configuration
Custom_UI
Studio_Creatio
8.0

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
Studio_Creatio
8.0

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 1

Like

3 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

Ryan Farley,

 

Ahmad Bagus Ariyanto,

 

Tomasz Sawicki,


 

Greetings!
 

The error you're encountering is related to your system being unable to find or load the e_sqlite3 library. This can be caused by several reasons. Please note that this issue is not related to the Creatio system itself but rather to a Microsoft component.


This article might help you: Microsoft.Data.Sqlite library 'e_sqlite3' not found:

https://stackoverflow.com/questions/65750542/microsoft-data-sqlite-library-e-sqlite3-not-found
 

Below are a few steps that may help resolve the issue (please note that these are general recommendations, and since the issue is related to Microsoft components 
https://www.nuget.org/packages, you might also find assistance on forums or by contacting Microsoft support):


1. Make sure the e_sqlite3 library is present.
 

2. Install or update the SQLitePCLRaw.bundle_e_sqlite3 package. You can do this via the NuGet Package Manager using the following command: 
 

Install-Package SQLitePCLRaw.bundle_e_sqlite3

https://www.nuget.org/packages/SQLitePCLRaw.bundle_e_sqlite3/
 

3. Ensure that your target platform is compatible with the library. For example, if you're building for x86, make sure you’re using the correct version of the library (x86 or x64).
 

Installing or updating the package via command line (cmd):

1. Open the command prompt:  
On Windows, press Win + R, type cmd, and press Enter.

2. Navigate to your project directory: Use the cd command to change to the folder where your project is located. 

For example, cd path\to\your\project

3. Install or update the package: If you have NuGet CLI installed, you can run: 

nuget install SQLitePCLRaw.bundle_e_sqlite3 

However, if you're using .NET Core or .NET 5/6/7, it’s recommended to use the dotnet CLI instead: 

dotnet add package SQLitePCLRaw.bundle_e_sqlite3 

This command will automatically add the package to your project and update the .csprojfile.


Example commands:
 

1. Navigate to your project directory:
 cd C:\Projects\MyApp


2. Install the package: dotnet add package SQLitePCLRaw.bundle_e_sqlite3


After successful execution, dotnet will download and install the package. If everything goes well, you’ll see a message confirming the package has been added to your project.

Regards,
Orkhan

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
openprocess
code
Generate_source_code_for_all_items
script task
c#
Studio_Creatio
8.0

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
#Clio
Studio_Creatio
8.0

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
Freedom
Freedom_UI
FreedomUI
Studio_Creatio
8.0
message

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
Validation
Studio_Creatio
8.0

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

Hi Team,

 

I have added the Commission percent, from 0 to 100 to the Realty offer type Lookup and added values to the Sales and Rental field. Later, I bind the data and got a pop up like data bound successfull. Below is the screenshot for your reference:

Also, in the Column Setting of UsrRelatyOfferType_Values, I cannot see the name is getitng tagged for Commission Percent, from 0 to 100 field. Below is the screenshot for your reference:

I have tried to check the Bound data in the UsrRealtyOfferType_Values tab but I am unable to see any records in it. Below is the screenshot for your reference:

I tried to click on Add button but the add button is not working and I tried to Actualize data even that is not working.

 

I have checked the UsrRealtyOfferType table in the database and I am able to see the records in the table. Below is the screenshot for your reference:

Can anyone let me know why I am unable to see the data in the UsrRealtyOfferType_Values Bounda Data tab?

 

Thanks!

Like 0

Like

1 comments

Hello.

We recommend consulting our GitHub community, where you can find discussions, troubleshooting tips, and potential solutions from other users and developers.
Creatio Marketplace GitHub

Best regards,
Antonii.

Show all comments