Hello team, 

I have a preconfigured page where there is a detail. The use case is a user will select list of records from the detail and I need to process these records. Is there a way to get the selected list of records from the preconfigured page detail?

 

Like 0

Like

4 comments

Hello,



Unfortunately, there is no opportunity to select a few records on the Auto-Generated page. If you need to add a selection of records to the system, you need to specify some filtering conditions by which the Add data element will work.



We have registered your request for our R&D team to include such functionality in one of the upcoming releases. 



Best regards,

Bogdan

Thanks Bogdan, 

If that is the case, I will switch to a multi select lookup detail. Can you please tell me how to filter a multiselect lookup detail?

Dear Shivani,

 

There was a similar question here about the detail filter.

Bogdan,

Thanks Bogdan, I was looking for something different. I need to get the filter id through sandbox

Show all comments

Hi there,

 

Does anyone have a landing page integration with Gravity Forms using a script?

 

This piece of the script works

 

jQuery(document).ready(initLanding);

$( "#gform_15" ).submit(function( event ) {

 createObject();

 

but always sends the data whenever the Submit button is clicked and I want to find a solution to only send when the form is actually sending correctly.



I cannot use the Marketplace integration as I need the Matomo integration script.

Already asked on the Gravity Forms forum, but no response there.

 

Your help is highly appreciated

Like 0

Like

5 comments

Hello Davey,

 

If you mean that you would like to create some kind of form validation that prevents from sending the form when there are empty fields, you could add some conditions to the function.

 

For example you can get the fields from the form by their Id document.getElementById() , and then verify whether their value is null or undefined. If it is, you can just put a return; statement before the createObject(); function, this way the function won't be executed if the conditions are not met.

 

So it would look somethig like this:

jQuery(document).ready(initLanding);

$( "#gform_15" ).submit(function( event ) {

//get the elements 

document.getElementById()

if(element1 === undefined || element2 === undefined) {

//write something on screen to inform that it needs to be filled

return;

} else {

createObject();

}

}

 

At the moment we do not have a ready example of this functionality, but you are welcome to try your own implementation and share with us the results.

 

Best regards,

Dariy

Dariy Pavlyk,

 

Thank you for the quick comment.



It's not that I need to check the form, but it's more like:

 

A user doesn't fill in the required fields, but clicks on 'Submit'

Then the default form will give an error: There was a problem with your submission. Please review the fields below.



But the script is triggered already and data goes to Creatio.

So what I need is that the script is triggered when the form is actually being submitted (like a validation).

 

Example for contact form 7 that works

document.addEventListener( 'wpcf7submit', function( event ) {

    createObject();

}, false );

 

 

And I know it's not Creatio, but Gravity forms, so I'll keep searching unless someone has an answer.

And I'll definitely look into your code example too.

Hello Davey,

 

The example that I provided would solve this issue, as if there is any required field that is not filled, the  createObject(); function will not be triggered.

 

if(requiredElement1 === undefined || requiredElement2 === undefined) {

return;

-- This return stops the function here, it won't go down 

} else {

createObject();

}

 

This "return" will stop the function, it won't go further, so the function won't execute the other function called "createObject();". So no request will be sent to Creatio.

 

Best regards,

Dariy

Dariy Pavlyk,

 

Thank you Dairy,

 

I really appreciate it.

 

I'll test it and give some feedback

Davey Daemen,


I hope you got it working.
I have a simple checkRequired JS function I created for this scenario.
 

function checkRequired() {
    var valid = true;
    jQuery('[aria-required="true"]').each(
        function () {
            if ((jQuery(this).is(':invalid') || !jQuery(this).val()) && !jQuery(this).is(':hidden')) {
                console.log(jQuery(this));
                valid = false;
            }
        });
    if (!valid) console.log("error please fill all fields!");
    else console.log('valid');
    return valid;
}
Show all comments

Hi there,

I am studying the user session object in order to make some dashboard.

There I found a column "session end method", where there are 0, 1, 2 ,3 as values.

What do these values mean?

 

Thanks in advance.

 

Like 0

Like

2 comments
Best reply

Hello Andrew, 

 

SessionEndMethod column values:

Not closed - 0

The session was closed as a result of the user logging out. - 1

The session was closed by a timeout on the server side. - 2

The session closed forcibly. - 3

 

Thank you, 

Igor

 

Hello Andrew, 

 

SessionEndMethod column values:

Not closed - 0

The session was closed as a result of the user logging out. - 1

The session was closed by a timeout on the server side. - 2

The session closed forcibly. - 3

 

Thank you, 

Igor

 

Ihor Skohariev,

Thank you Igor!

Show all comments

Hello team,

 

I have a detail call "Proof" in which I need to add custom attachment detail called "UsrProofAttachments".

 

Here are the steps I followed

1. Created an object with Parent Object as "File". Added lookup column that refers to "Proof" detail.

2. Created a detail through the wizard and configured the detail

3. Changed the parent of "UsrProofAttachments" to FileDetailV2.

Here is how my UI looks

 

The error I get in console is the following

 

{message: 'Column by path UsrProofAttachments not found in schema UsrProofAttachments.'}

 

I have seen a similar post but I am not able to find an answer.

https://community.creatio.com/questions/set-custom-detail-attachments-t…

Help would be much appreciated!

 

Edit : I added the CSS and the UI looks good. But the error is still there

Like 0

Like

3 comments

Hi Shivani,

 

Thank you for your question!

 

Regarding the mentioned error in the console, it indicates that the column was either removed from the corresponding object or renamed. We do not recommend deleting any fields, columns or objects as it may lead to unpredictable issues. If some fields are not needed anymore, you can simply change their usage mode to "none". It's hard to identify which column exactly was removed/renamed without accessing the website. Please, contact us at support@creatio.com. We will check the configuration and will try to find out the reason for this issue.

 

Best regards,

Anastasiia

Anastasiia Lazurenko,

 

I got the attachment detail working. I noticed if you name the attachment detail as <SectionName>File it works eg : CustomFile for section named Custom, UsrProofFile for section named UsrProof

Shivani Lakshman,

Hi Shivani, I have a quite similar request as yours. I need to customize the default attachment detail of Order page by adding a lookup field into the attachment detail page.

 

Since the Order's attachment has its own object OrderFile, I created a replacing object of OrderFile and added a new lookup column, say UsrAttachmentType, in the OrderFile object. Then I used this new OrderFile to create a detail through detail wizard and put Name, Description, and UsrAttachmentType columns in the detail page. Then I changed the parent object of the detail with FileDetailV2 and saved the detail.

 

After the above steps, I could use the new attachment detail to upload files as original attachment detail; but when I double click the attachment record in the detail list, it opened with the old attachment detail page with only Name and Description fields, not the new detail page I setup as above, with additional lookup field UsrAttachmentType.

 

Please advise what I shuld do? Thank you!

 

 

Show all comments

Hi

 

I have a working Printable which prints my quotes. However, the formatting of the numbers is not in thousand separators, so I therefore updated the Word mergefield values, but when outputting from Creatio, I get no merge values populated.This is what I have done so far:

  1. Created a new version of the Word doc template
  2. Toggled the field codes to display the full merge values
  3. Changed a field which has a large multi thousand number from the following (note: how I have removed \*MERGEFORMAT):
    1. {MERGEFIELD "Opportunity product.Total, amount" \*MERGEFORMAT }

      to
    2. {MERGEFIELD "Opportunity product.Total, amount" \# #,##0.00 }
  4. Uploaded to replace the working Printable
  5. Generated the quote

In the resulting word doc, the values for this field are missing.

I have also tried the following variations, with none working:

{MERGEFIELD "Opportunity product.Total, amount" \# "#,##0.00" }

{MERGEFIELD Opportunity product.Total, amount \# #,##0.00 }

 

Either I am missing something obvious or Creatio does not like this format override.

 

Any help is greatly appreciated.

 

thanks

Like 0

Like

1 comments

Hi, Mark

 

You can use a macro for these fields in your printable. For example: ColumnName[#NumberDigit|,#] 

More information at the link: https://academy.creatio.com/docs/developer/application_components/repor…

 

Unfortunately, there are no basic application tools to add commas between the digits. It can only be done with the help of the development process. In this community thread, you can find the example of such implementation https://community.creatio.com/questions/how-set-comma-separator-money-f….

 

Show all comments

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

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

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

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

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