How to add a new component (for loading map in a specific field i.e.,Address etc..) in form page,Freedom UI

Like 0

Like

1 comments

This article shows how to load a map using an iFRAME component on a Freedom UI page, perhaps it will help: https://customerfx.com/article/embedding-an-iframe-on-a-creatio-freedom-ui-page/

Ryan

Show all comments

Hello,

 

Does anybody know if pdf version of Creatio guides (marketing, setup and administration and etc.) exists for the latest version of the platform? I found several, but all were for 7.1x releases

Like 0

Like

1 comments

Hello Artem, 

Thank you for your question. 

You can find all the necessary information under the following link to our Academy:

https://academy.creatio.com/docs/8.x/

On the right corner, you will have the opportunity to choose the version you need. 

Show all comments

Hello Community,

 

I'm trying to use the "Apply Filter" function to filter a lookup value based on three parameters. The business rule works correctly when adding a new record and copy record; however, when editing an existing record, only one filter is being triggered (marked).

 

 

Has anyone encountered this issue, and is there a solution to ensure all filters are applied when editing a record?

Like 0

Like

0 comments
Show all comments

Hi there

I implemeted custom UI component (OsmMapsModule) and injected it on Freedom Ui list page using this article Implement a custom UI component based on a Classic UI page | Creatio Academy

Now I need to get feedback from that component on the page to trigger some logic on Freedom UI, bu fail to do so. Here is my code.

define("ClvObjectMapModule", ["ClvObjectMapModuleResources", "@creatio-devkit/common", "Base7xViewElement", "MaskHelper", "ClvJsConsts", 
							  "ckeditor-base", "Leaflet", "css!Leaflet"], 
function(resources, sdk, Base7xViewElement, MaskHelper, ClvJsConsts) {
 
    /* Declare a "ClvObjectMapModule" class. */
    class ClvObjectMapModule extends Base7xViewElement {
 
		_mapRecordClickedId;
		get mapRecordClickedId() {
			return this._mapRecordClickedId;
		}
		set mapRecordClickedId(value) {
            this._mapRecordClickedId = value;
        }
		...
 
		// Here I make change and want it propagate to Freedom UI page.
 
		_clvOpenPage(config) {
			this.mapRecordClickedId = config.recordId;
		}
    }
 
    /* Register the component. */
    customElements.define('clv-objectmap', ClvObjectMapModule);
 
    /* Register a component as a visual element. */
    sdk.registerViewElement({
        type: 'clv.ObjectMap',
        selector: 'clv-objectmap',
        inputs: {
			mapRecordClickedId: {}
		},
		// This is not documented and I just guessed it might work like for example inputs work.
        outputs: {
			mapRecordClickedId: {}
		}
    });
 
    return Terrasoft.ClvObjectMapModule;
});
Like 0

Like

1 comments

And here is code in Freedom UI

"MapRecordClickedId": {
	"modelConfig": {}
},
...
{
	request: "crt.HandleViewModelAttributeChangeRequest",
	handler: async (request, next) => {
 
 
// I want this handler to be triggered but it just does not when I make changes in custom component
 
		if (request.attributeName === "MapRecordClickedId" && sdk.isGuid(request.value)) {
			const handlerChain = sdk.HandlerChainService.instance;
			await handlerChain.process({
				"type": 'crt.OpenPageRequest',
				"schemaName": "ClvObject_FormPage",
				"modelInitConfigs": [{
					"recordId": request.value,
					"action": sdk.ModelInPageAction.Edit
				}],
				$context: request.$context
			});
		}
 
		return next?.handle(request);
	}
},
...
{
	"operation": "insert",
	"name": "ClvObjectMap",
	"values": {
		"type": "clv.ObjectMap",
		"mapRecordClickedId": "$MapRecordClickedId",
		"styles": {
			"width": "-webkit-fill-available"
		}
	},
	"parentName": "ClvMapContainer",
	"propertyName": "items",
	"index": 0
}
Show all comments

Hello,

 

Is it possible to send/convert a document to base64 and send it to an external API from Creatio?

Example:
 

A)


B)

 

 

Thanks.

 

Like 0

Like

0 comments
Show all comments

Hi,

How to do Attachment* as mandatory?

Like 3

Like

6 comments

Hello,

Thank you for your request. Unfortunately, it is not possible to make the Attachment required using custom methods as it is a detail.


However, as a workaround using l development, you can implement following validation script (sample for Activities) in object process for Validating message:

UserConnection userConnection = context.UserConnection;

   Select select = (Select)new Select(userConnection)
            .Column(Func.Count("Id"))
            .From("ActivityFile")
            .Where("ActivityId").IsEqual(Core.DB.Column.Parameter(Entity.Id));
       
if (select.ExecuteScalar<int>() == 0)
            throw new Exception("Attachment is required");

return true;

Halyna Parkhomenko,

 

Hi Halyna ,

Can you tell me in detail where I can put this code and where it runs inside Open Process?

 

Hi Halyna 

When I apply the code inside Open Process it gives me this message Is there a solution?

Hi Halyna 

When I apply the code inside Open Process it gives me this message Is there a solution?

 

Muath Ali Hamdan Salem,

 

Hello,

 

As for the 'Select' errors - the most probable reason is the usage of the Terrasoft.Core.DB namespace is not added to the class.

 

As for the last error in your screenshot - either it will be fixed by fixing previous errors or the issue is that you call construction that requires 1 type argument. Need to see the code in this line.

Hi,Oleg Drobina

Isn't there another way to make the attachment file mandatory through validation of the form page and not by placing a condition on the table in the database that I want in the form page?

Show all comments

Hello, 

 

I have the list on two different pages. On the first page, I want to open the edit page, but on the second page, I do not. On the second page, I have already removed the open option ("features": { "rows": { "selection": false, "toolbar": false .... 

 

 

However, when double-clicking on a row, the default page associated with the object is opened. Is there a way to block the double-click action or open a different page instead?

Like 0

Like

5 comments

Hello,

Unfortunately, this could not be achieved by basic methods. However, this can be done by deleting all the editing pages for the object.
 

In Freedom UI, Add-ons are used for page configuration. Where you can check if there are pages linked to the detail in the object's settings. Based on your screenshot, it seems there are no such settings for this object.

 

On the other hand, Classic UI sections use a different mechanism, where page configurations are stored in the database, specifically in the following tables:

  • SysModuleEdit, which is connected to the object through records in the SysModuleEntity table.
  • SysModuleEntity, in turn, refers to the object (SysSchema) via the SysEntitySchemaUId column.

For the OpportunityProductInterest object, you can check the page configurations using the following script (there are 2 pages for this object in the system):

 

SELECT * FROM "SysModuleEdit" WHERE "SysModuleEntityId" IN ( SELECT "Id" FROM "SysModuleEntity" WHERE "SysEntitySchemaUId" IN ( SELECT "UId" FROM "SysSchema" WHERE "Name" = 'ObjectName' ) );
 

Steps to resolve:

  1. Delete these records or set the SysModuleEntityId column to NULL.
     

    • This will ensure that the OpportunityProductInterest object will no longer have pages across the system.
    • As a result, records will not open after a double-click in the detail.
       

    Unfortunately, there is no built-in way in the system to restrict page opening from the detail only.

     

  2. Alternative approach:
     
    • Create a database view that duplicates the data from the main object but does not have page configurations.
    • Build the detail using this view instead of the main object.

      I will also create an idea for our development team to implement such possibility in futures version.
       

Thank you for reaching out. I hope this helps resolve the issue!

Might be a simpler route to try to see what the request is that fires when double-clicking a row. The list will definitely fire a request for that, but I don't know what it is. 

Pavlo Sokil,

How do I create a view?

Cristiano Carvalho writes:

How do I create a view?

See https://customerfx.com/article/using-database-views-in-creatio/

Ryan

Hello!
Try this to solve your case

{
   "operation": "merge",
   "name": "DataTable",
   "values": {
      "rowDoubleClick": {}
   }
},

Show all comments

Hello community,

When I create a replacement object for ListPageV2Template, the Freedom UI page that shows me the available template breaks.
Could you tell me the correct way to customize it?
What is the difference between ListPageV2Template and ListFreedomTemplate?
The second one is used by Account and Contact sections, but when I create a new custom section, Creatio uses ListPageV2Template page.

 

Like 0

Like

1 comments

Hello,
 

Replacing basic templates is not supported, as it can lead to unintended issues or incompatibilities. 

However, we understand that this is not ideal for your specific needs.
 

We want to assure you that we have created a request for our development team to implement this functionality in future versions of our application. We understand the importance of providing our clients with the best possible experience and will work hard to implement the changes you have suggested.
 

About the difference between templates

ListFreedomTemplate - its old template, we do not use it in the latest apps

ListPageV2Template - its a new template that are using now for creating apps

Show all comments

Hello

In Classic UI I've customized a section page (let me call it "Production Page") with 3 details that must be shown and filtered depending on the record selected in the previous detail.

Let me call "detail 1", "detail 2" and "detail 3" the three details.

Only "detail 1" is visible opening the Production Page.

When the user selects an item from the "detail 1", then "detail 2" becomes visible and is filtered based on the Id of the "detail 1" selectet item.

When the user selects an item from the "detail 2", then "detail 3" becomes visible and is filtered based on the Id of the "detail 2" selectet item.

 

I've implementd it with custom javascript code in my classic ui "Production Page" and works very well.

 

My customer wants to migrate its classic section to Freedom UI, then I must do the same thing in a Freedom UI FormPage using list or datagrid components.

I've not found any documntation or guide on handling list item selection events.

How can I do it?

Is there a way to hide the "Open, Copy and Delete" bullet point shown at the left of the rows of a freedom UI list component?

 

Thanks

Regards

Like 0

Like

1 comments

You can filter a list based on the selected record of another list all using no code in Freedom UI. See this post: https://community.creatio.com/questions/filtering-records-freedom-ui-expanded-list

If you also want to have code that gets the change of the selected row in a list see here: https://community.creatio.com/questions/list-bind-selected-record-or-add-custom-handler-selectionchange

For removing the row toolbar menu with add,copy,delete, see here: https://customerfx.com/article/removing-the-row-toolbar-from-a-creatio-freedom-ui-list-component/

Ryan

Show all comments

How do I change the sort order of the gallery component on a FreedomUI record page?

The current sort order seems to be created on date Newest first. I would like to be able to sort by a custom field on the page alphabetically (A-Z), if the gallery was using text, or numerically, if the field is a number field (smallest to largest).

Like 0

Like

1 comments

Hello!

The feature you're looking to implement is not achievable using a no-code approach but can be done with low-code customization. To create a custom ordering solution, you'll need to modify the page's code and configure the sorting settings as follows:
Locate the configuration:
1. Open the page's code and find the section with viewModelConfigDiff.
2. Add the sorting configuration:
3. Include the sorting attribute:
In the viewModelConfig  block, add this line to include the new config: "ItemsSorting": {},
Identify your Gallery component in the modelConfig block and add the following code
"sortingConfig": {
 "attributeName": "ItemsSorting",
 "default": [
   {
     "columnName": "Name",
     "direction": "asc" // Use "desc" for Z-A sorting
   }
 ]
}
4. Save your changes:
Once the code is updated, save the changes. The data should now be displayed in the correct order.

Show all comments