Dear collegaues

 

In Classic UI, I need to add a Filter business rule to can get only contacts with Email is completed. Some ideas how to solve this?

 

I tried not equal "", not contains "@" and others and didn't works

 

Thanks in advance

 

Regards

Julio

Like 0

Like

2 comments
Best reply


Hello,
 

Unfortunately, it's not possible to add such a filter using basic filters. However, you can write a custom filter in the schema code.

For example, for the Owner field on the AccountPageV2 schema, this filter may look like this:


define("AccountPageV2", [], function() {
   return {
       "entitySchemaName": "Account",
       "attributes": {
           "Owner": {
               "dataValueType": Terrasoft.DataValueType.LOOKUP,
               "lookupListConfig": {
                   "filters": [
                       function() {
                           var filterGroup = Ext.create("Terrasoft.FilterGroup");

                           filterGroup.add("HasEmail",
                               Terrasoft.createColumnFilterWithParameter(
                                   Terrasoft.ComparisonType.NOT_EQUAL,
                                   "Email",
                                   ""));
                           return filterGroup;
                       }
                   ]
               }
           }
       }
   };
});

This filter ensures that only contacts with the Email field not equal to empty string will be included in the selection for the Owner field.
 

You can learn more about such filtering in our academy: Link

Thank you for reaching out!


Hello,
 

Unfortunately, it's not possible to add such a filter using basic filters. However, you can write a custom filter in the schema code.

For example, for the Owner field on the AccountPageV2 schema, this filter may look like this:


define("AccountPageV2", [], function() {
   return {
       "entitySchemaName": "Account",
       "attributes": {
           "Owner": {
               "dataValueType": Terrasoft.DataValueType.LOOKUP,
               "lookupListConfig": {
                   "filters": [
                       function() {
                           var filterGroup = Ext.create("Terrasoft.FilterGroup");

                           filterGroup.add("HasEmail",
                               Terrasoft.createColumnFilterWithParameter(
                                   Terrasoft.ComparisonType.NOT_EQUAL,
                                   "Email",
                                   ""));
                           return filterGroup;
                       }
                   ]
               }
           }
       }
   };
});

This filter ensures that only contacts with the Email field not equal to empty string will be included in the selection for the Owner field.
 

You can learn more about such filtering in our academy: Link

Thank you for reaching out!

Thanks Pavlo

Show all comments

Hi, 

 

Please help, I need to notify final user some task he trigger is working.

 

For example, on a page, a user clicks on a button to do something, the button executes a process and I want to inform the client that it is processing what the process does.... 

 

Some ideas?

 

Thanks in advance

 

Kind regards

Julio

Like 0

Like

3 comments
Best reply

I do this often and it works great. You'd need to:

  1. Send a message from the process to the front end. See https://customerfx.com/article/how-to-refresh-a-page-from-a-process-in-…
  2. Have some code somewhere that listens for the message. See https://customerfx.com/article/receiving-server-side-messages-in-a-crea…
  3. Then display the toast message. See https://customerfx.com/article/displaying-toast-message-popups-from-cre…

 

I've typically done this by making a generic process I can use as a subprocess. It sends the message to the client. Then I make a generic script loaded from MainShell or MainHeaderSchema that listens for the message and displays the toast. It makes it simple and generic to use and works on any page.

 

Ryan

I do this often and it works great. You'd need to:

  1. Send a message from the process to the front end. See https://customerfx.com/article/how-to-refresh-a-page-from-a-process-in-…
  2. Have some code somewhere that listens for the message. See https://customerfx.com/article/receiving-server-side-messages-in-a-crea…
  3. Then display the toast message. See https://customerfx.com/article/displaying-toast-message-popups-from-cre…

 

I've typically done this by making a generic process I can use as a subprocess. It sends the message to the client. Then I make a generic script loaded from MainShell or MainHeaderSchema that listens for the message and displays the toast. It makes it simple and generic to use and works on any page.

 

Ryan

Ryan Farley,

 

How do you go about creating a generic script that loads in the MainShell or MainHeaderSchema in Freedom UI? It hasn't seemed to work when I've tried it.

Harvey Adcock,

You need to add a feature to enable creating replacing schemas for angular modules such as MainShell. See this thread: https://community.creatio.com/questions/how-create-replacing-schema-freedom-ui-basepagetemplate

Ryan

Show all comments

Dear colleagues,

 

I need to trigger a process to search for all pending approvals in a Freedom UI section, but I have not found a Visa object connected to Freedom pages. How can I approve all pending approvals connected to a specific object in a FreedomUI section via a process?

Like 0

Like

1 comments

Found, it is a single object for all entities: Approval, in the column "Reference schema name" must indicate the name of the object of the section where the Approval belongs and in the column "Entity identifier" the id of the object....

Show all comments

Hi 

 

Somebody know where can we change the message and graphics Creatio displays in a list page (Freedom & Classic pages) where no data? and the same in Next Steps?

 

Thanks

Julio

Like 1

Like

5 comments
Best reply

Julio.Falcon_Nodos,

I like to get rid of the graphic and also the "Nothing to show here!" text so I use the following: 

#next-steps-no-data-animation, 
.next-steps-no-data-main-label {
    display: none;
}

This changes it from this: 

To this: 

Ryan

I'd prefer not to have the graphics in these areas. I've been removing them with CSS, I believe that is the only option.

Ryan

Ryan Farley,

Thanks Ryan, which CSS need to modify to list pages and Next steps?

Julio.Falcon_Nodos,

I like to get rid of the graphic and also the "Nothing to show here!" text so I use the following: 

#next-steps-no-data-animation, 
.next-steps-no-data-main-label {
    display: none;
}

This changes it from this: 

To this: 

Ryan

Thanks!, I owe you a beer in Miami! :-)

Ryan Farley,

Dear Ryan, and to ListPages, when there no data? regarding Freedom pages?

Show all comments

Is there any Freedom UI reference documentation, along the lines of the Classic UI JS classes reference?  Thanks,

Like 1

Like

3 comments

The closest thing to it is the devkit package on npm. Not much description but at least can see the definitions of what is in the devkit SDK.

https://www.npmjs.com/package/@creatio-devkit/common

Ryan

Ryan Farley,

Do you mean refer to the source code directly, or otherwise where is the link?

 

Gareth Osler,

Yes, go to [Code] and then select index.d.ts. This is the closest that exists for that now. You can see the available classes, parameters, etc. Some items do have some comments showing usage & short description. Definitely lacking, but at least provides some visibility to what is there.

Ryan

Show all comments

Dear colleagues,

 

I have this extract of piece of code

 const runProcessRequest = Ext.create("Terrasoft.RunProcessRequest", { 
       // El nombre del Proceso
       "schemaName": "NdosGeneracionMasivaNC_PRP", 

When I save a new version of the process, the name changes, in my case from NdosGeneracionMasivaNC_PRP to NdosGeneracionMasivaNC_PRPNCSNdosNotasCredyDeb_011,

 

The question is I must be concerned to those changes, to modify each schema code page where calling those processes?

 

I.e. change the code to:

 const runProcessRequest = Ext.create("Terrasoft.RunProcessRequest", { 
      // El nombre del Proceso
     "schemaName": "NdosGeneracionMasivaNC_PRPNCSNdosNotasCredyDeb_011", 

Thanks for your support

 

Regards

Julio Falcón

Like 0

Like

2 comments

Hello Julio,

 

You can check it by creating the code that uses one version of the process, triggering the code, go to the process log and checking if the process was triggered. Then create another version, set is as an actual process version and trigger the code again.  Once done go to the process log and see which process version is triggered and make a conclusion.

Thanks Oleg, of course I can try it, I do it very often with almost everything...but I would like to know what the documentation says about it, and I haven't found it.

 

Thanks

Show all comments

Hello,

I am currently working on a feature that ensures contracts are not automatically removed from saved surveys when their status changes to a value that does not meet the survey's filtering criteria. For instance, if a survey is saved with contracts in a "Registered" status and then the status changes to "Cancelled", the contracts disappear from the survey. I'm want to retain the list of contracts as it was captured at the time of the survey's save action.

Could anyone guide me on implementing a solution within Creatio that allows capturing a snapshot of contracts at the moment a survey is saved? This snapshot should persist even if subsequent changes to contract status would normally filter these contracts out of the survey view.

What would be the best approach to handle this requirement? Is there a way to hook into the save event of a survey or a contract status change event to trigger this capture?

Any advice or pointers towards relevant documentation would be greatly appreciated.

Like 0

Like

3 comments
Best reply

Yurii Uhorskiy,

Hello,

 

We are not familiar with the structure of the Sales'Up Questionnaire Management for Creatio connector. Thus, we recommend that you contact the developer of this connector directly for further assistance.

 

Best regards,

Yuliya.

Hello,

 

As a variant, you can try setting up the necessary feature via business processes.

 

For us to take a closer look, please specify which survey is meant here. 

Would you please provide more details regarding your business need and what is the expected result?

 

Best regards,

Yuliya.

Yuliya Gritsenko,

 

Hello Yuliya,

Thank you for your response and for suggesting the use of business processes to address my requirements.

I am specifically working with the Sales'Up Questionnaire Management for Creatio, which is utilized to manage surveys and questionnaires within Creatio. The functionality of this product allows for a wide variety of survey types and configurations, crucial for collecting insights across different departments and external users.

The feature I am aiming to implement should ensure that contracts, once included in a survey at the point of saving, remain in the survey results, regardless of subsequent status changes which would normally exclude them based on the survey's current filtering criteria. For example, if a contract's status changes from "Registered" to "Cancelled", I would like the survey to retain the contract's data as it was at the time of the survey's save action.

Could you guide me on how I might leverage business processes to capture a snapshot of the contracts at the time the survey is saved? This snapshot should then be maintained independently of any changes in the contract's status. If there are specific business processes or Creatio functionalities that could be tailored for this purpose, I would appreciate your insights or any documentation you could provide.

Looking forward to your advice on how best to proceed with this implementation.

Best regards,

Yurii Uhorskiy

Yurii Uhorskiy,

Hello,

 

We are not familiar with the structure of the Sales'Up Questionnaire Management for Creatio connector. Thus, we recommend that you contact the developer of this connector directly for further assistance.

 

Best regards,

Yuliya.

Show all comments

Dear colleagues,

 

In Classic UI I can solve this by code, but in Freedom is also possible?, somebody know in which schema I need to do this and the related code?

 

Thanks & Regards

Like 1

Like

15 comments
Best reply

Note, when adding these back in, you'll need to make sure that the "items" and "primaryColumnName" values match the values from your list. For Section Lists. The "Items" and "PDS_Id" values need to be updated to match your List's property values - those can likely stay as-is for section lists, but for new lists added, you'll need to update those values. See for more: https://customerfx.com/article/adding-row-action-menu-items-to-a-creati…

and the same in a Detail (Freedom page)?

Hello Julio,

See this article here: https://customerfx.com/article/adding-row-action-menu-items-to-a-creati…

You can override the menu (usually to add other menu items to it). When you do so you override the "Open", "Copy", "Delete" options and need to add them back in. You could override the menu and then just only add back in the "Open" option. It would look like this (the article will provide more details)

viewConfigDiff: /**SCHEMA_VIEW_CONFIG_DIFF*/[
    {
        "operation": "merge",
        "name": "DataTable",
        "values": {
            //...,
            "rowToolbarItems": [{
                type: 'crt.MenuItem',
                caption: 'DataGrid.RowToolbar.Open',
                icon: 'edit-row-action',
                disabled: "$Items.PrimaryModelMode | crt.IsEqual : 'create'",
                clicked: {
                    request: 'crt.UpdateRecordRequest',
                    params: {
                        "itemsAttributeName": "Items",
                        "recordId": "$Items.PDS_Id"
                    }
                }
            }]
        }
        //...
    },
    //...
]/**SCHEMA_VIEW_CONFIG_DIFF*/

Essentially you're replacing the existing menu with one that only has the Open menu option. This works for any list (section or a list on a page)

Ryan

Ryan Farley,

Thanks Ryan, I promise I looked first, before to publish, in your articles, but didn't found this one. Thanks a lot

 

Regards

Julio

Ryan Farley,

Dear Ryan, I didn't found the crt.DataGrid element in the viewConfigDiff in the code of the listpage, I found it on a FormPage, but I need it also in a the ListPage

solved no need to search crt.DataGrid, jus add it on viewConfigDiff

Julio.Falcon_Nodos,

Yes correct. For the list page, the List (crt.DataGrid) exists in the parent page, you just need to merge in the changes.

Ryan

No worries - there's so much new info now with Freedom UI stuff, it's hard to know what to even search for!

Julio.Falcon_Nodos writes:

Ryan Farley,

Thanks Ryan, I promise I looked first, before to publish, in your articles, but didn't found this one. Thanks a lot

Regards

Julio

This could really do with being configurable using no-code tools, as it's quite cumbersome to apply to every list users will see but is often important - being able to copy records which should have to be created in specific ways is often an issue for business data.

Ryan Farley,

 

Hello again Ryan

 

How can I remove the delete option on a Freedom UI page , I see that when I add a detail only a FormPage is created, but there is no ListPage (like in Classic UI). So is it possible to solve this in a Freedom UI detail?

 

Julio.Falcon_Nodos,

Hi Julio, basically, any time you override the rowToolbarItems it replaces what is there with that you provide. Meaning, all the existing out of the box ones are gone. If you want no items there, you can just add and empty array:

rowToolbarItems: []

However, this has the annoying side effect of leaving an empty menu that pops up when the row actions button is clicked. I'm not sure if there's a property to remove the row actions button completely, so I usually just hide it with CSS.

Ryan

Ryan Farley,

Thanks Ryan, I'm already solved, but I want to maintain "Open", "Copy" and just remove "Delete", how can I did it?

solved... adding in "rowToolbarItems", this piece of code

"rowToolbarItems": [
  // Edit
  {
	type: 'crt.MenuItem',
	caption: 'DataGrid.RowToolbar.Open',
	icon: 'edit-row-action',
	disabled: "$Items.PrimaryModelMode | crt.IsEqual : 'create'",
	clicked: {
		request: 'crt.UpdateRecordRequest',
		params: {
			"itemsAttributeName": "Items",
			"recordId": "$Items.PDS_Id"
		}
	},
  },
  // Copy
  {
	  type: 'crt.MenuItem',
	  caption: 'DataGrid.RowToolbar.Copy',
	  icon: 'copy-row-action',
	  disabled: "$Items.PrimaryModelMode | crt.IsEqual : 'create'",
	  clicked: {
		  request: 'crt.CopyRecordRequest',
		  params: {
			  "itemsAttributeName": "Items",
			  "recordId": "$Items.PDS_Id",
		  },
	  },
  }                      
],

Note, when adding these back in, you'll need to make sure that the "items" and "primaryColumnName" values match the values from your list. For Section Lists. The "Items" and "PDS_Id" values need to be updated to match your List's property values - those can likely stay as-is for section lists, but for new lists added, you'll need to update those values. See for more: https://customerfx.com/article/adding-row-action-menu-items-to-a-creati…

Ryan Farley,

Is there any other way to hide the 3 dots for row action menu to even spawn

Pranshu Basak,

Sadly, removing all menu items does not remove the 3 dots button (in current versions, at least - hopefully that changes). For now I typically just hide it with some CSS.

Ryan

Show all comments

Hello Everyone,

 

I have added a tag component to the contact list page in the Freedom UI and also applied tags to the records. However, the records are not being filtered according to the selected tag on the list page. Can anyone tell me how to filter them based on the tag?

 

Thanks in advance.

Like 0

Like

3 comments

Hello,

 

In such case, you can add a 'Quick filter' component with the following parameters:



And you will be able to search records by tags:

Bogdan,

Thanks a lot. It worked..

Bogdan,

I've done the same but it doesn't work for "existing old sections", like Account or Contact. Your solution works for new entities, that refer to the "Tag" entity and your quick filter works great. If I want to filter Account or Contact list page by tag, the Tags are not stored in the "Tag" entity but in "AccountTag" and "ContactTag" entities: if you try to set a default value in the designer for the quick filter you'll see the values contained in the "Tag" entity and not the ones for Accounts or Contacts. How should we configure the quick filter in Account or Contact page to work with their tags?

Thanks

Regards

Show all comments

Hi Community,

In the OData4 protocol the maxTopLimit parameter

defines the limit for the value in the maximum number of rows in the output (which is 20.000 records)

We are retrieving the data from the Accounts table which has around 40.000 records.

What is the workaround or fix for this scenario?

Sasor

Like 0

Like

1 comments
Best reply

You can use the $top and $skip parameters to retrieve the data in pages. 

For example: 

Page 1 (first 1000)

https://creatiourl/0/odata/contacts?$top=1000&$skip=0

Page 2 (next 1000) 

https://creatiourl/0/odata/contacts?$top=1000&$skip=1000

Page 3 (next 1000) 

https://creatiourl/0/odata/contacts?$top=1000&$skip=2000

etc

Ryan

You can use the $top and $skip parameters to retrieve the data in pages. 

For example: 

Page 1 (first 1000)

https://creatiourl/0/odata/contacts?$top=1000&$skip=0

Page 2 (next 1000) 

https://creatiourl/0/odata/contacts?$top=1000&$skip=1000

Page 3 (next 1000) 

https://creatiourl/0/odata/contacts?$top=1000&$skip=2000

etc

Ryan

Show all comments