LookupFilter
joins
UnrelatedTables
Sales_Creatio_enterprise_edition
7.18

Hello,

I have a section called Applications which has an Owner field that points to contact lookup. The application section also has a field that points to Company Lookup. I also have a Company section. Inside this section there is a detail called Workers to which contacts are added.

 

I want to filter Owner lookup to show contacts who are added to the Workers detail of the company which is mapped to the Application. Please see below image. Can someone help with the lookup filter?

 

Like 0

Like

3 comments
Best reply

Shivani Lakshman,

 

Change the filter from "[UsrWorkers.UsrWorker].UsrAccount.Id" to "[UsrWorkers:UsrWorker].UsrAccount.Id"

 

My bad, I forgot that in reverse join it work using ":", for example :

[EntityCode:FieldCode]

 

and not [EntityCode.FieldCode]

 

regards,

 

Julien

Hi Shivani,

 

To filter your lookup you need to add this attribute in the application page :

attributes: {
    "Owner": {
        "dataValueType": Terrasoft.DataValueType.LOOKUP,
        "lookupListConfig": {
            "filters": [function() {
                var filters = Ext.create("Terrasoft.FilterGroup");
                filters.add("WorkInThisCompany", 
                    Terrasoft.createColumnFilterWithParameter(
                        Terrasoft.ComparisonType.EQUAL,
                        "[Workers:Worker].Company.Id",
                        this.get("Company").value
                    )
                );
                return filters;
            }]
        }
    }
}

Replace "Workers" by the object code of the workers detail.

 

FYI :

here is the filter breakdown :

"[WorkerObjectCode:WorkerFieldCodeInWorkers].CompanyFieldInWorkers.Id"

 

Watch out that all the codes correspond to your environment, for example, the workers object code can be "UsrWorkers" or whatever you defined it. Check it out in the advanced settings.

 

Kind regards,

 

Julien

Julien Gunther,

Thank you for your response. I tried your code but received the error 

Collection item with name [UsrWorkers not found.

 

 request data: {"rootSchemaName":"Contact","operationType":0,"includeProcessExecutionData":true,"filters":{"items":{"searchFilter":{"items":{"1f59bb71-8f5d-45ed-b4eb...

 

Looks like the system is trying to reach UsrWorkers from Contact table. This is the case with my requirement. There is no direct relation between the 2 tables. Would appreciate any suggestion!

 

Here is the code I used

"UsrOwner": {
        "dataValueType": Terrasoft.DataValueType.LOOKUP,
        "lookupListConfig": {
            "filters": [function() {
                var filters = Ext.create("Terrasoft.FilterGroup");
                filters.add("WorkInThisCompany", 
                    Terrasoft.createColumnFilterWithParameter(
                        Terrasoft.ComparisonType.EQUAL,
                        "[UsrWorkers.UsrWorker].UsrAccount.Id",
                        this.get("UsrAccount").value
                    )
                );
                return filters;
            }]
        }

 

Shivani Lakshman,

 

Change the filter from "[UsrWorkers.UsrWorker].UsrAccount.Id" to "[UsrWorkers:UsrWorker].UsrAccount.Id"

 

My bad, I forgot that in reverse join it work using ":", for example :

[EntityCode:FieldCode]

 

and not [EntityCode.FieldCode]

 

regards,

 

Julien

Show all comments
folders
Filtering
getfilters
Sales_Creatio_enterprise_edition
7.18

Hello,

 

I have set up default filters on a section by following these links:



https://customerfx.com/article/programmatically-overriding-or-adding-fi…

https://community.creatio.com/questions/default-filter-section

 

Is there a way to filter records with folders in addition to the default filter made in getFilters?

 

Here is my getFilters method:

			getFilters: function() {
                var filters = this.callParent(arguments);
				filters.logicalOperation = this.Terrasoft.LogicalOperatorType.OR;
				filters.add("FilterByAM", this.Terrasoft.createColumnFilterWithParameter(
					this.Terrasoft.ComparisonType.EQUAL,
					"MQAccountManager.Id",
					Terrasoft.SysValue.CURRENT_USER_CONTACT.value
				));
				if (this.get("CanAssignAccountManager")) {
					filters.add("FilterByManager", this.Terrasoft.createColumnFilterWithParameter(
						this.Terrasoft.ComparisonType.EQUAL,
						"MQManager.Id",
						Terrasoft.SysValue.CURRENT_USER_CONTACT.value
					));
				}
            	return filters;
            }

Kind regards,

 

Julien

Like 0

Like

2 comments
Best reply

Hi Julien,

Yes, the filter from folders will get appended to the filters you set for the section. You just need to add your filters in a filter group so they are properly applied as a whole, in addition to the folder filters - rather than just add the filters individually to the filters returned from callParent. For example:

getFilters: function() {
    var filters = this.callParent(arguments);
 
    // now create a filter group for your filters
    var customFilters = Ext.create("Terrasoft.FilterGroup");
    customFilters.logicalOperation = Terrasoft.LogicalOperatorType.AND;
    customFilters.add("ActiveFilter", 
        Terrasoft.createColumnFilterWithParameter(
            Terrasoft.ComparisonType.EQUAL, "Active", true
        )
    );
    customFilters.add("NoWidgetFilter", 
        Terrasoft.createColumnFilterWithParameter(
            Terrasoft.ComparisonType.NOT_EQUAL, "Type.Name", "Widget"
        )
    );
 
    // now add your filter group to the filters that get returned
    filters.add(customFilters);
    return filters;
}

It does work without a filter group if you're just adding a single condition, however, in your code you're "OR"ing all your new conditions together with the folder conditions. Using a separate group keeps it all grouped with the same conditions and will work as expected.

Ryan

Hi Julien,

Yes, the filter from folders will get appended to the filters you set for the section. You just need to add your filters in a filter group so they are properly applied as a whole, in addition to the folder filters - rather than just add the filters individually to the filters returned from callParent. For example:

getFilters: function() {
    var filters = this.callParent(arguments);
 
    // now create a filter group for your filters
    var customFilters = Ext.create("Terrasoft.FilterGroup");
    customFilters.logicalOperation = Terrasoft.LogicalOperatorType.AND;
    customFilters.add("ActiveFilter", 
        Terrasoft.createColumnFilterWithParameter(
            Terrasoft.ComparisonType.EQUAL, "Active", true
        )
    );
    customFilters.add("NoWidgetFilter", 
        Terrasoft.createColumnFilterWithParameter(
            Terrasoft.ComparisonType.NOT_EQUAL, "Type.Name", "Widget"
        )
    );
 
    // now add your filter group to the filters that get returned
    filters.add(customFilters);
    return filters;
}

It does work without a filter group if you're just adding a single condition, however, in your code you're "OR"ing all your new conditions together with the folder conditions. Using a separate group keeps it all grouped with the same conditions and will work as expected.

Ryan

Thank you Ryan !

Show all comments
bodymask
ProcessModuleUtilities
frontEnd
Client-side
Sales_Creatio_enterprise_edition
7.18

Hi there,

 

I made a button that call ProcessModuleUtilities on click. Once clicked, the callback is called and a BodyMask is shown but never hidden.

 

Here is the button :

			{
				"operation": "insert",
				"name": "GetAccountBtn",
				"parentName": "LeftContainer",
				"propertyName": "items",
				"values": {
					"itemType": Terrasoft.ViewItemType.BUTTON,
					"caption": {
						"bindTo": "Resources.Strings.GetAccount"
					},
					"click": {
						"bindTo": "onGetAccountClick"
					},
					"visible": {
						"bindTo": "getGetAccountButtonVisible"
					},
					"enabled": {
						"bindTo": "getGetAccountButtonEnable"
					},
					"style": "blue",
					"classes": {
                        "textClass": ["actions-button-margin-right"]
                    }
				}
			},

Here is the methods :

			onGetAccountClick: function() {
				Terrasoft.showConfirmation("Effectuer une demande pour devenir l'AM de ce compte ?", function(result) { 
    				if (result === Terrasoft.MessageBoxButtons.YES.returnCode) {
        				this.processGetAbandonAccountPopupResponse("RequestGetAccount");
    				}
				}, ["yes", "no"], this);
			},
			processGetAbandonAccountPopupResponse: function (processName) {
				args = {
					sysProcessName: processName,
					parameters: {
						accountId: this.get("Id"),
						userId: Terrasoft.SysValue.CURRENT_USER.value
					},
					callback: this.callbackShowRequestMade,
					scope: this
				};
				ProcessModuleUtilities.executeProcess(args);
			},
			callbackShowRequestMade: function () {
				this.showInformationDialog("Votre demande a été effectuée.");
			},

Here is my business process :

And finally here is the result : https://vimeo.com/727290324/560dec0d61

 

I have this error in the console  :

XML Parsing Error: not well-formed Location: https://creatioBaseUrl/0/ServiceModel/ProcessEngineService.svc/RunProce… Line Number 1, Column 1

 

Here is the request made by my browser :

POST https://creatioBaseUrl/0/ServiceModel/ProcessEngineService.svc/RunProcess

Request body :

{
  "collectExecutionData": true,
  "parameterValues": [
    {
      "name": "accountId",
      "value": "b253a1de-10cd-452f-bd23-28ecb696b44a"
    },
    {
      "name": "userId",
      "value": "aa995be7-7611-43ea-a79d-19894080a976"
    }
  ],
  "schemaName": "RequestGetAccount",
  "resultParameterNames": []
}

Response body :

{
  "processId": "e3493a1e-0069-4164-81e1-47c7743146f0",
  "processStatus": 1,
  "resultParameterValues": null,
  "executionData": null,
  "success": true,
  "errorInfo": null
}

Do you have any idea what can I do to fix this bodyMask issue ?

 

Kind regards,

 

Julien

Like 1

Like

2 comments
Best reply

When you use a callback with ProcessModuleUtilities, you're responsible for clearing the mask in the callback function.  Add MaskHelper module to the top of the code (like you did with ProcessModuleUtilities) and then call this in the callback function:

MaskHelper.HideBodyMask();

Ryan

When you use a callback with ProcessModuleUtilities, you're responsible for clearing the mask in the callback function.  Add MaskHelper module to the top of the code (like you did with ProcessModuleUtilities) and then call this in the callback function:

MaskHelper.HideBodyMask();

Ryan

Ryan Farley,

Thank you Ryan, I forgot this detail.

 

Julien

Show all comments
#lead
Sales_Creatio_enterprise_edition
8.0

Hi Community! Hope you are doing well.

My goal is to create leads from third party app, obviously avoiding loading duplicates.

I have those questions:

  1. I know that it exists in the process element "Find and Merge duplicate". What is the result of this item? Does it tell us what is the ID of the record that remains? The new record created or the merged record in which result/parameter? gOldRecordId?
  2. I'm working on a source code schema. Can I re use some code to achive my goal? I was reviewing some other services that create leads from landing pages or others, but they are not simple to adapt. Is there any method that allows me to validate duplicates or to do the merge by code after having saved a lead?

Any other comment or suggestion are welcome.

Thank you!

Regards.

 

 

Like 0

Like

0 comments
Show all comments
Sales_Creatio
sales
Sales_Creatio_enterprise_edition
8.0

Dear mates,

We are facing a problem since we are using Creatio (2019).

Occasionally, while in use, Creatio stays loading and becomes unresponsive.

If we open a new tab Creatio remains inaccessible.

We have to close the browser and reopen it to be able to access it again.

Currently we are using Chrome but the problem also happened with Firefox.

Do you also encounter this problem ?

Like 0

Like

2 comments

Hello, 



Please contact our support team (support@creatio.com) for further investigation. 



Best regards,

Bogdan

 

Bogdan,

Hello Bogdan,

I allready open several tickets without any solution.

I would like to know if other users of Creatio encounter or have encountered this problem.

I will open a ticket today with the timestamp of the problem.

Thank you,

Nicolas

Show all comments
Owner
Activity
Sales_Creatio_enterprise_edition
7.18

how to select any contact as owner when creating a new activity, I tried to change "ShowAllContactsAsOwner" feature to true but still, I can't select only system user contacts

Like 0

Like

1 comments

Hello Moheman,

 

usually, all the users under the All employees role can be set as owners.

Please note, that custom filters can also cover up users from being added to the owner field.

You can find more information about creating activities here:

 

https://academy.creatio.com/docs/8-0/user/crm_tools/activities/create_a…

 

Regards,

Gleb.

Show all comments
devlabs
Sales_Creatio_enterprise_edition
8.0

Dear,

 

I tried to install the following add-on from the marketplace: Starting a project (https://marketplace.creatio.com/template/starting-project)

But the installation failed. See attached log.

The Creatio instance is version is 8.0.2.

 

Any idea if this add-on can still be used and how to properly install?

 

Kind regards,

Vincent

File attachments
Like 0

Like

3 comments

I've recently tried this same package and get the same error and was going to report to support. Have you reported to support already?

Ryan

Ryan Farley,

Hello Ryan,

 

I did not report this to support as I was told that support for DevLabs add-ons is done via the community. Should I raise a ticket in the success portal?

 

Thanks

 

 

Hi Vincent,

 

I have updated the template package. Try installing the template again.

Show all comments
Email
Sales_Creatio_enterprise_edition
8.0

I have over 2 K invalid emails in my system and I just need to remove them. Is there a way to do that? or do I need to go record by record?

Like 0

Like

1 comments

Hi Heather, 



Could you please elaborate a bit on how you determined that the email is invalid? 

Also, do you mean the email address or the email message? 



Best regards,

Yurii. 

Show all comments
addon
marketplace
Sales_Creatio_enterprise_edition
7.18

Dear,



We are having issues with installing several add-ons from the marketplace.

These same add-ons were successfully installed in other Creatio instances, but here with one specific website they are throwing errors.



1. https://marketplace.creatio.com/app/excel-reports-builder-creatio



2022-05-24 16:14:35,661 Compiling configuration dll

2022-05-24 16:15:33,735 Errors and (or) warnings occurred while compiling configuration dll

2022-05-24 16:15:33,735 Autogenerated\Src\IntReportHelper.IntExcelExport.cs(273,31) error CS0433: The type 'ExcelWorksheet' exists in both 'EPPlus, Version=4.1.0.0, Culture=neutral, PublicKeyToken=ea159fdaa78159a1' and 'EPPlus, Version=4.5.3.2, Culture=neutral, PublicKeyToken=ea159fdaa78159a1'





2. https://marketplace.creatio.com/app/email-approvals-creatio



2022-05-24 17:45:40,097 Compiling configuration dll

2022-05-24 17:46:32,008 Errors and (or) warnings occurred while compiling configuration dll

2022-05-24 17:46:32,008 Autogenerated\Src\IntReportHelper.IntExcelExport.cs(273,31) error CS0433: The type 'ExcelWorksheet' exists in both 'EPPlus, Version=4.1.0.0, Culture=neutral, PublicKeyToken=ea159fdaa78159a1' and 'EPPlus, Version=4.5.3.2, Culture=neutral, PublicKeyToken=ea159fdaa78159a1'



It is strange that they both throw the same error.

Is there any way to fix this?





Kind regards,

Vincent

Like 0

Like

1 comments

Hi Vincent,

Creatio platform doesn't allow installing one .dll library several times (in this case, EPPlus). Both errors indicate that you already have the EPPlus library installed on your Creatio site. The 'Excel reports builder for Creatio' app uses the library, while the 'Email approvals for Creatio' app does not.

The problem can be fixed by finding the other package that has the library on your Creatio site and manually removing the library from one of the packages to resolve the conflict.

Show all comments
approval
Sales_Creatio_enterprise_edition
7.18

Dear community,

 

Is it possible to add more info in the approvals in the right sidebar?

In the desktop application, it is possible to click to the related record (e.g. invoice) to see the detailed info, but in the mobile app it is not possible.

Therefore, I would like to add some text containing a short description:

https://prnt.sc/rzKCmxQgIEnC

 

 

Kind regards,

Vincent

Like 0

Like

1 comments

Hello Vincent,

 

Please be informed that at the moment, in the existing interface of mobile application approvals, it is not possible to implement such logic as you described.

A request for the implementation of this functionality has already been registered and I will also attach your request there to increase its priority.

 

Thank you for choosing Creatio!

 

Kind regards,

Mira

Show all comments