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

0 comments
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 1

Like

1 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;

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

4 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

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

I have a list of logs, and I want to group them by the user's name. Is it possible to group data in a GridDetail?

Like 0

Like

7 comments

If this is a classic detail, this marketplace add-on will allow you to group the rows of any list: https://marketplace.creatio.com/app/tree-view-creatio

Ryan

Hi Ryan,

I intend to do something like that.

SELECT username
FROM logs
GROUP BY username

I’m not sure if it’s possible to list the grouped data.

Thanks

 

Cristiano Carvalho,

Yes, that is what that marketplace add-on allows you to do - the column you select (in your case the username) will group the rows by that column, so rows with that username will be grouped below it  and can be expanded. 

You can see an example of this out of the box on the classic project page, the structure tab (the project tasks) group this way as well (it is grouped by the ParentId column). You can analyze the "ProjectStructureDetailV2" schema to see how it is implemented. 

Ryan

Ryan Farley,

I am afraid, this addon allows to display parent-child tree, but not group by category. 

Hello, yes, that's true. 

Do you know of another option to group by name?

 

Thanks

 

Dear Cristiano,

Unfortunately, the option to group the list is not currently available.

 

As a workaround, you can add two separate lists to the page. In the first list, include users, and in the second, logs. Then, apply a filter to the logs based on the selection in the users' list.

This setup allows you to select one or more users in the first list, and the second list will automatically display logs related to the selected users.


You can also set up a pivot table in Classic UI dashboards, which allows grouping by a certain column, but pivot tables also have some restrictions. You can read more about it in this article.

Additionally, I created an idea for our R&D team.

Have a great day!

Cristiano Carvalho,

If you want to create read-only detail, you can create VIEW with ParentId field. Then you can use this add-on.

But editable detail is much more difficult

Another option is to create 2 details - Contacts and Logs. So, Logs detail is filtered by selected Contact

 

Kind regards,

Vladimir

Show all comments