Hi Community,

 

I have follwed the following article to add a validation on attachment object using Entity Events Layer:

Article: https://community.creatio.com/questions/how-restrict-attachment-upload-specific-conditions

 

The above logic is working as expected when I am uploading files of small size (< 500 KB). But the issue happens when I try to upload larger files, the following popup appears instead of the custom exception.

 

Any suggestion how to resolve the issue for larger files?

 

Thanks,

Sourav Kumar Samal

Like 0

Like

2 comments

Hello,

 

The logic provided in the previous post doesn't depend on the file size (that is specified in the system setting with "MaxFileSize" code). Additionally it doesn't use file locator in it, it only uses values from the account object column and compare it to the current date and time. There should be another custom logic that generates this exception, something that is triggered when adding the file to the system and if the upload is restricted another logic stops its execution with this exception.

 

Best regards,

Oscar

Oscar Dylan,

 

I have added the following code:

 

		#region Methods: Public
 
		public override void OnFileSaving()
		{
			var ClaimId = Entity.GetTypedColumnValue&lt;Guid&gt;("ClaimsId");
			var ResultESQ = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Claims");
			ResultESQ.UseAdminRights = true;
			ResultESQ.AddColumn("Id");
			ResultESQ.AddColumn("ClaimStatus");
			var Result = ResultESQ.GetEntity(UserConnection, ClaimId);
			var DCMStatus = Result.GetTypedColumnValue&lt;Guid&gt;("ClaimStatusId").ToString();
 
			if(DCMStatus == "ff78a06e-9d37-474a-841c-32a8faaa7776" || DCMStatus == "13c42d45-0fb9-4854-9a5d-5a5feb126db2" || DCMStatus == "19226327-e2ff-420c-937e-c36949be4425"
				|| DCMStatus == "3adf1d1d-bc90-475b-b24b-ca837e9ca9fc"|| DCMStatus == "942af147-3fc9-4a80-89aa-76f0412e0ade"){
			    base.OnFileSaving();
			}else{
			    throw new Exception("Attachments can not be added as Claim is already Submitted.");
			}
		}
 
		#endregion

When the file size is small, the following popup is coming:

 

 

When the file size is large, the following popup comes up:

 

 

The above popup comes only when the above condition is met. We have not implemented any other logic for this object. Could you help us here with what might be the cause of the issue, when it is working fine with smaller files but not with larger files.

 

Thanks,

Sourav Kumar Samal

Show all comments

Hello Community!

 

Is there a way in business processes to read the values of a record before the update actually happened?

I know that I could use EventListener, but I'm trying to solve this with a No-/LowCode approach, if possible.

 

Thanks for any hints and best regards,

Robert

Like 0

Like

8 comments

Hello Robert,

 

Could you please elaborate on your business task?



Who do you need to reed the values of a record before the update?



Best regards,

Bogdan

Hi Bogdan,

 

I have a business process, which grants access permissions based on a linked contact in an activity (not the owner field).

When this contact changes, I need to read the value of this contact field that was stored before the update, so that I can remove the access permissions for that contact.

 

BR,

Robert

Robert Pordes,

There is no basic logic for your needs.

But, as a workaround, you can create a new column contactBackup in the activity object and store old contact there.

You can use Modify Data business process element to set the value for the contactBackup column.

Also, it is not necessary to add this column to the section page. It can be just a "system" column.

Best regards, Alex.

Robert Pordes writes:

When this contact changes, I need to read the value of this contact field that was stored before the update, so that I can remove the access permissions for that contact.

We do it in another way - remove all rights and set new ones. 

Vladimir Sokolov,

Thanks for the reply, but that doesn't work in our case, because the initial permissions can be quite complex, and also due to delegation we do not know the exact current permissions of the records.

I will post an idea for Creatio to implement this feature in the business processes, as it would be handy for several business tasks.

 

BR,

Robert

 

Aleksei Efimenko,

I have thought about this, too, but it is not very elegant and I don't want to create fields for every requirement and also don't want to have the fields visible in the filters for the users.

I will try activating and reading the change log in the business process...

 

BR,

Robert

 

Robert Pordes,

 

In case you dont want to show the fileld in any dropdown on the UI, then you can set the Usage Mode for that field to None.

 

Regards,

Sourav Kumar Samal

Sourav Kumar Samal,

That's a good point and I might consider this, thanks!

Show all comments

Hello,

 

I was wondering if it is possible to run a process that creates a case for each contact we have in contacts section based on start time signal

 

Thank you,

Mariam M.

Like 0

Like

1 comments

Hello Mariam,



I like the following way (you can make your own filtering condition to mark that Contact doesn't have such Case yet)



Show all comments

Hi Community,

I am facing an issue which is related to SectionActions Button for sending multiple records. I need to send some records (out of all selected records) to a business process in an array after filtering with esq inside section edit page.

Issue: The filtered Id's are not being pushed into array correctly. Means when we explore the array, the values are there but when we try to print or send we get initial value of that array (i.e. empty string or null).

 

getSectionActions: function() {

                var actionMenuItems = this.callParent(arguments);

                actionMenuItems.addItem(this.getButtonMenuItem({

                    Type: "Terrasoft.MenuSeparator",

                    Caption: ""

                }));

                actionMenuItems.addItem(this.getButtonMenuItem({

                    "Caption": {bindTo: "Resources.Strings.AMDAssignMultipleRecords"},

                    "Click": {bindTo:"runCustomProcess"},

                    "IsEnabledForSelectedAll": true

                }));

                return actionMenuItems;

            },

            runCustomProcess: function(){

                if(this.get("SelectedRows") == "" || this.get("SelectedRows") == undefined){

                    this.showInformationDialog("Please select records for batch process!");

                }

                else{  

                    var selectedRows = this.get("SelectedRows");

                    console.log("Selected records : ", selectedRows);

                    var recordsnumber = selectedRows.length;

                    var resIdRows=[];

                    var resIdForArray="";

                    selectedRows.forEach(fnProgramABCArray);

                    console.log("Selected ABC records : ", resIdRows);

                    var selectedOrder = resIdRows.toString();

                    console.log("selectedOrder: ", selectedOrder);

                    var args = {

                        sysProcessName: "AMDProcess_BatchAssignments",

                        parameters: {

                            SelectedRowsCol: selectedOrder,

                            NoOfRes: recordsnumber

                        },

                    };

                    ProcessModuleUtilities.executeProcess(args);

                }



                function fnProgramABCArray(item){

                    var esq = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "AMDTestPlans" });

                    esq.addColumn("AMDStatus");

                    esq.addColumn("AMDProgram");

                    esq.filters.addItem(esq.createColumnFilterWithParameter(

                        Terrasoft.ComparisonType.EQUAL, "Id", item));

                    esq.getEntityCollection(function (result) {

                        let status = result.collection.getByIndex(0).get("AMDStatus").displayValue;

                        let program = result.collection.getByIndex(0).get("AMDProgram").displayValue;

                        if(status === "In Progress" && program === "ABC"){

                            resIdRows.push(item);

                        }

                    });

                }

            }

 

Please find attached screenshot below with an array of selected records vs another array of selected ABC records and string output as Selected order (empty string).

 

Like 0

Like

1 comments

Hi,

 

The issue here is that ESQ is asynchronous and as a result once the:

 

selectedRows.forEach(fnProgramABCArray);

 

is called, the browser continues executing the main runCustomProcess, but in addition executes the fnProgramABCArray in the background and when the

 

console.log("Selected ABC records : ", resIdRows);

 

and 

 

console.log("selectedOrder: ", selectedOrder);

 

are executed they won't show anything, these will be an empty array and an empty string.

 

You need to modify this logic and perform the filtration of records in the business process directly where you can check all the records passed using either the read data element and the conditional flow or a script task that uses the SelectQuery class to check data consistency.

 

Best regards,

Oscar

Show all comments

Hi all,

I tried to restrict attachment access for the contacts via a process in certain conditions or via object permissions when a document is created from a specific role. I am not successful, should this work ?

 

Thanks in advance

Like 0

Like

1 comments

Hi Franck,

 

As for the "Attachments and notes", in case you need to set the restrictions only for one specific section such as Cases, then you need to set up the object permissions only for one specific object related to this section, such as "Attachments and notes detail object in Cases section". However, in case you'd like to set the same permissions for all the sections/objects attachments, then there will be a need to specify the corresponding object permissions for all the objects/sections (you can filter the needed objects directly in the "Object permissions" with a key-word "attachment").  

 

As usual, you will be able to set up record permissions there as well (the permission mechanism is based on the record authorship):

https://academy.creatio.com/docs/8-0/user/setup_and_administration/user…

 

Best regards,

Anastasiia

Show all comments

I have the popup add-on installed from marketplace. I've used it in the past often, but it stopped working in our current instance about a week ago. I don't have popup blocker on the browser.

 

I had tried uninstalling and reinstalling previously but this wiped all the business processes that had it in place. I cannot rebuild it all again- is there any way to troubleshoot this?

 

https://marketplace.creatio.com/template/popup-element-business-process…

Like 0

Like

2 comments

Hi, Susan,

I have the same issue. Did your troubleshooting successful?

Hi to all,

 

You should identify the cause of the issue first and foremost.

Check the process log and make sure the process was launched and “To whom should the window be shown” field was filled out correctly.

If everything is correct, troubleshoot the issue in the incognito mode.

 

If you cannot reproduce the issue in the incognito mode, check your browser extensions. Some of them, ad blockers in particular, could block pop-up windows in Creatio.

Show all comments

Hello community,

 

Is it possible to remove records adding in a specific detail when the main object is in a specific stage?

Like 0

Like

1 comments

Hello,

 

Add the following code in the page schema of main object under methods:

isDetailEnabled: function(detailName) {
        var DCMStage = this.get("UsrDCMLookup").displayValue;   
	if (detailName === "ExampleDetail") {
		if(DCMStage === "Approved"){
                    return false;       //Disable the "+" button
                }
                else{
                    return true;        //Enable the "+" button
                }
	}
	return this.callParent(arguments);
}

 

Regards,

Sourav

Show all comments

I want to show only the Completed value, not the other values of the lookup.

Printscreen:

Another printscreen :

Is there some lookup where these values are stored, or they are hardcoded an I cant modify them ?

Like 0

Like

2 comments
Best reply

Hello Petrika,

 

For the 1st image, you can search for the lookup named "Activity results" and set the "Available in business process only" column to true/Yes for the values which you don't want to see in the dropdown:

 

 

For the 2nd image, you can search for the lookup named "Activity statuses" and delete/add the values which you want to see in the dropdown:

 

 

Regards,

Sourav

Hello Petrika,

 

For the 1st image, you can search for the lookup named "Activity results" and set the "Available in business process only" column to true/Yes for the values which you don't want to see in the dropdown:

 

 

For the 2nd image, you can search for the lookup named "Activity statuses" and delete/add the values which you want to see in the dropdown:

 

 

Regards,

Sourav

Sourav Kumar Samal,

Thank you very much , it worked

Show all comments

Hello Creatio Community !

Is it possible to add a mini page in Portal ?

I want to add the mini-page of creating an Application in portal. Printscreen below

Like 0

Like

2 comments

Hello,

Currently there is no oob functionality that can allow to use mini pages for portal users and it cannot be changed with basic system tools. 

We already have a query registered for our responsible R&D team to consider implementing this functionality in the upcoming releases.

 

You may consider implementing this functionality with a help of development, please find more information in the below article:

https://academy.creatio.com/docs/developer/interface_elements/mini_page…

Best regards,

Anastasiia

Thank you Anastasia !

Show all comments

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