Hi, all mentors, 

 

    I'd like to compare Product previous price after user update the product price, if the price change, I can use BP to notify related user . So, I add one column into product (UsrPreviousPrice) , and try to store the product previous price in it.

 

   However, I am new in object event handling and c#, but I believe it will help solve the issue, right now I don't know how to write the script task part. Please help clarify any errors. 

 

 

Like 0

Like

3 comments

Hello Jeffrey,

Could you please clarify the business task? Correct me if some step is wrong:

  1. 1) The system user updates the price on the Product list page 
  2. 2) The old price goes to the UsrPreviousPrice column and the new price adds to the "Price" column
  3. 3) Do You need to email the customers with 2 prices (old one and new one)? Or do you want to notify the system users by the notification in the system?

Anhelina,

Hi, Anhelina, 

     Thank you for your reply. 

1) The system user updates the price on the Product list page
 - -->Correct, the puchase dept will update the new price based on market information.

2) The old price goes to the UsrPreviousPrice column and the new price adds to the "Price" column
--->Correct

3)  Do You need to email the customers with 2 prices (old one and new one)? Or do you want to notify the system users by the notification in the system?
--> I want to compare the two price and if the current price is larger than the previous price, I will notify the user who have orders that contain these products. 

Right now,
  2) is what I need to solve, (maybe object event process), but not yet know how to do.
  
  3) I believe I can solve it by using business process.
 

Jeffrey,

Step 2 can only be realized by writing code and I've found the same question on the Academy. As a workaround, you may manually copy the price to the UsrPreviousPrice column before updating.

Step 3 you may realize through the one business process. You should add two parameters (values from two columns), compare them and send an email if conditions passed:

  1. 1) Check in this article how to compare two BP's parameters
  2. 2) Sending the email from BP you may check here.
Show all comments

Hi,

Anyone experienced the same error as me?

 

*UsrSomePage is not allowed due to ACL setup for *CurrentUser. Failed rules: - Object page settings rule.


HTPP: PostClient:


 

I have a classic page I'm trying to open from a freedom detail. My button works perfectly for Supervisor then opens the classic page, but for any other user it doesn't. The object has no permissions declared at the Object Permission section.

Let me know if you know anything.

PS
I tried adding System Administrator to User and the button works, but I don't want to do that. Object has no permission set-up. 

Regards,
Solem A.

Like 0

Like

2 comments
Best reply

Hello,

 

The possible reasons, why user can't open the page:
1. User does not have permissions to page data source. 
2. The list page is not added to any workplace, available for user. 
3. Another page is configured for the current user (or his role) in the object related pages.

 

Solution:
1. Set up correct permissions, workplaces (check 1-3 points above). 
2. Add page to the Whitelist of pages to bypass page opening restrictions lookup, if customer want to allow any user can open via direct URL regardless of configured permissions. 
3. Add user (or role) to CanBypassPageOpeningRestrictions system operation to bypass all restrictions. We strongly recommend to use correct configuration (not just bypass permissions) to provide the best level of security. 

Hello,

 

The possible reasons, why user can't open the page:
1. User does not have permissions to page data source. 
2. The list page is not added to any workplace, available for user. 
3. Another page is configured for the current user (or his role) in the object related pages.

 

Solution:
1. Set up correct permissions, workplaces (check 1-3 points above). 
2. Add page to the Whitelist of pages to bypass page opening restrictions lookup, if customer want to allow any user can open via direct URL regardless of configured permissions. 
3. Add user (or role) to CanBypassPageOpeningRestrictions system operation to bypass all restrictions. We strongly recommend to use correct configuration (not just bypass permissions) to provide the best level of security. 

Mira Dmitruk,


This worked for me, 
 

Add page to the Whitelist of pages to bypass page opening restrictions lookup, if customer want to allow any user can open via direct URL regardless of configured permissions.

 

Thank you!
Solem A.

Show all comments

Hello,

 

I need to create a page in freedom UI and add it as a section without linking it to a model, meaning that this page operates freely without having a business object related to it.

 

The purpose is to call external API and retrieve values to be populated in a table/list, and it does not need to be related to any model inside creatio. No need to add-edit-delete for the model, a free customizable page that I can fully control from code level.

 

Thanks

Like 1

Like

1 comments

I create such pages in the business process - predefined page

Show all comments

Hi,

In creatio, I have created a section which has a detail. The section's object has a field named 'Stage'. When 'Stage' value changes I want to refresh grid detail action buttons without page reloading, so that I can remove the + button (for adding) and the actions for copying, editing, deleting and Data Import.

I have tried using 'updateDetail' and 'reloadEntiy' but they don't seem to refresh these buttons

Like 0

Like

2 comments
Best reply

Hello,

 

Not sure about removing buttons (but theoretically it's possible using the "Visible" property), but as for the "Enabled" property, it's possible to control the state of the button. This can be achieved using sandbox messages exchange mechanisms like (control the copy button "Enabled" property in the detail on the case page based on the case category selected):

 

CasePage schema

messages: {
			"UpdateActionsStatuses": {
				mode: Terrasoft.MessageMode.PTP,
				direction: Terrasoft.MessageDirectionType.PUBLISH
			}
		},
		...
onCategoryChanged: function() {
				this.callParent(arguments);
				this.sandbox.publish("UpdateActionsStatuses", this.get("Category"), ["ForActionsStatusUpdate"]);
			}

 

Detail schema

messages: {
			"UpdateActionsStatuses": {
				mode: Terrasoft.MessageMode.PTP,
				direction: Terrasoft.MessageDirectionType.SUBSCRIBE
			}
		},
....
CopyRecordMenuItemEnabled: {
                    dataValueType: this.Terrasoft.DataValueType.BOOLEAN,
                    value: false
			},
....
getCopyRecordMenuItem: function() {
				return this.getButtonMenuItem({
					Caption: {"bindTo": "Resources.Strings.CopyMenuCaption"},
					Click: {"bindTo": "copyRecord"},
					Enabled: {bindTo: "CopyRecordMenuItemEnabled"},
					Visible: {bindTo: "IsEnabled"}
				});
			},
....
subscribeSandboxEvents: function() {
				this.callParent(arguments);
				this.sandbox.subscribe("UpdateActionsStatuses", this.updateActionsStatus, this,
						["ForActionsStatusUpdate"]);
			},
 
			updateActionsStatus: function(result) {
				var parentCaseCategory = result.displayValue;
				var isCategoryCorrect = parentCaseCategory == "PPE Case (Sales Contract)";
				this.updateCopyRecordMenuItem(isCategoryCorrect);
			},
 
			updateCopyRecordMenuItem: function(isCategoryCorrect) {
				var parentCopyRecordEnabled = this.getCopyRecordMenuEnabled();
				var isEnableCopyRecordMenuItem = isCategoryCorrect && parentCopyRecordEnabled;
				this.set("CopyRecordMenuItemEnabled", isEnableCopyRecordMenuItem);
			}

 

As a result the copy button will be enabled in the detail only if any record is selected in the detail and also if the case category (case page is where the detail is added) is "PPE Case (Sales Contract)".

Hello,

 

Not sure about removing buttons (but theoretically it's possible using the "Visible" property), but as for the "Enabled" property, it's possible to control the state of the button. This can be achieved using sandbox messages exchange mechanisms like (control the copy button "Enabled" property in the detail on the case page based on the case category selected):

 

CasePage schema

messages: {
			"UpdateActionsStatuses": {
				mode: Terrasoft.MessageMode.PTP,
				direction: Terrasoft.MessageDirectionType.PUBLISH
			}
		},
		...
onCategoryChanged: function() {
				this.callParent(arguments);
				this.sandbox.publish("UpdateActionsStatuses", this.get("Category"), ["ForActionsStatusUpdate"]);
			}

 

Detail schema

messages: {
			"UpdateActionsStatuses": {
				mode: Terrasoft.MessageMode.PTP,
				direction: Terrasoft.MessageDirectionType.SUBSCRIBE
			}
		},
....
CopyRecordMenuItemEnabled: {
                    dataValueType: this.Terrasoft.DataValueType.BOOLEAN,
                    value: false
			},
....
getCopyRecordMenuItem: function() {
				return this.getButtonMenuItem({
					Caption: {"bindTo": "Resources.Strings.CopyMenuCaption"},
					Click: {"bindTo": "copyRecord"},
					Enabled: {bindTo: "CopyRecordMenuItemEnabled"},
					Visible: {bindTo: "IsEnabled"}
				});
			},
....
subscribeSandboxEvents: function() {
				this.callParent(arguments);
				this.sandbox.subscribe("UpdateActionsStatuses", this.updateActionsStatus, this,
						["ForActionsStatusUpdate"]);
			},
 
			updateActionsStatus: function(result) {
				var parentCaseCategory = result.displayValue;
				var isCategoryCorrect = parentCaseCategory == "PPE Case (Sales Contract)";
				this.updateCopyRecordMenuItem(isCategoryCorrect);
			},
 
			updateCopyRecordMenuItem: function(isCategoryCorrect) {
				var parentCopyRecordEnabled = this.getCopyRecordMenuEnabled();
				var isEnableCopyRecordMenuItem = isCategoryCorrect && parentCopyRecordEnabled;
				this.set("CopyRecordMenuItemEnabled", isEnableCopyRecordMenuItem);
			}

 

As a result the copy button will be enabled in the detail only if any record is selected in the detail and also if the case category (case page is where the detail is added) is "PPE Case (Sales Contract)".

Yes, it worked. Thank you

Show all comments

Is it possible to create an entity based on a view (so with the "Represents Structure of Database View" checkbox checked, and with the view created using a SQL script) that inherits its record permissions from a "real" entity? I tried to do so by simply checking the record permissions checkbox and specifying the parent object in the "Object to inherit access permissions from" field of the entity, but this doesn't seem to work.

 

My setup is that we have the OOTB Leads entity, and then I've created a view over the top of it taking all columns but with a filter condition, to be used for reporting over Leads while filtering out certain Leads that should never be included in reporting so we have a more consistent reporting basis and don't have to make sure to include those filters in every widget. I added 2 columns to the view based on the Id and LeadName columns called UsrBaseLeadId and UsrBaseLeadName, which then have a lookup column UsrBaseLead added over them in the view-based entity. This lookup is then used as the "Object to inherit access permissions from" for the view-based entity.

 

There aren't any errors thrown in the logs when trying to do this, but non-super-users just can't see any of the records. When I tried to check a record in the view's permissions, I could see that the SysRights table for the view entity doesn't exist, so I tried creating that rights "table" as a view in the database that took its data from the Rights Table of the real entity, but while that seemed to work inasmuch as I could check a record's access rights and see that the correct rights were there and was even able to modify those rights, it didn't make it visible to a non-super-user.

Like 1

Like

3 comments
Best reply

It would be great to have the view be able to inherit permissions from some object that the view has as a lookup column. However, I don't believe that is possible. What I typically do is this:

  1. Create a view and include as a column some other object that has permissions (for example, if the view includes an Opportunity lookup column and the account has permissions)
  2. Anywhere the view is used, include a filter condition that some column on that related object is not null (that would never be null). Plus it cannot be the Id or the column used as the display value. Example, if my view has a lookup for Opportunity, I could use Opportunity.Stage is filled in.
  3. Using this approach, the user will only see the rows corresponding to the related record that they have access to, since if they cannot view the related opp the Stage will return a null value. 

It's not ideal and definitely not secure, but it does limit the view rows to what the user can see on the related object.

Ryan

Anybody have any experience of working with such a setup?

It would be great to have the view be able to inherit permissions from some object that the view has as a lookup column. However, I don't believe that is possible. What I typically do is this:

  1. Create a view and include as a column some other object that has permissions (for example, if the view includes an Opportunity lookup column and the account has permissions)
  2. Anywhere the view is used, include a filter condition that some column on that related object is not null (that would never be null). Plus it cannot be the Id or the column used as the display value. Example, if my view has a lookup for Opportunity, I could use Opportunity.Stage is filled in.
  3. Using this approach, the user will only see the rows corresponding to the related record that they have access to, since if they cannot view the related opp the Stage will return a null value. 

It's not ideal and definitely not secure, but it does limit the view rows to what the user can see on the related object.

Ryan

Yeah that's a clever workaround, many thanks Ryan! Agreed about the security aspect, but for the the cases where it's just about having those record permissions used to define non-security visibility as I currently have for the base entity it will work for now.

 

It would definitely be good for the view entities to be able to inherit permissions from lookup columns though, and feels like it would be a relatively quick win for Creatio to add, as most of the functionality around that would already exist. It could even be done in a no-code way by enabling the creation of these view-based entities directly in the config, effectively adding a logical layer to the platform which would be great for filtered views into the data and adding virtual calculated fields. So much utility to be had with such a logical layer.

Show all comments

Hello Community!

 

I'm trying to fill a field with the result of a simple calculation (e.g. field A - field B).

 

However, when I create the business rule and select "set field" as action, I can only provide a constant value and not a formula...am I missing something?

 

Here is a screenshot of the 

 

I know that I can use a business process to achieve this, but this would be much more simpler and elegant I think.

 

BR,

Robert

Like 0

Like

4 comments
Best reply

It's not yet available in Freedom UI --> Creatio Roadmap indicates for Q4 2023 https://academy.creatio.com/docs/release/creatio-roadmap?check_logged_i…

I forgot to add that I use version 8.0.10.4735

It's not yet available in Freedom UI --> Creatio Roadmap indicates for Q4 2023 https://academy.creatio.com/docs/release/creatio-roadmap?check_logged_i…

Damien Collot,

Thanks Damien, at least I know that I did overlook something.

Hi Damien,

I do not have access to the link to the roadmap.

I get this message:

"

Access denied

You are not authorized to access this page.

"

Is it restricted?

It is very interesting information.

Thanks,

Luis

Show all comments

Hi Community,

Is it possible to add a new System Variable to be used in the Object level, so that we can use it as a default value?

Thank you

Sasori

Like 1

Like

3 comments
Best reply

Hello Sasori,



These values are hardcoded and you can't change them.

Hello,

 

It's possible. Default values can be set via configuration for all replaced objects. For example, if I want to set the default Account for Orders I create replaced object for Order and specify it in the default value field. It can be selected from existing values, system settings, or variables.



Please note that if the selected default value is removed or the type of system variable and lookup is different it can lead to different issues so do not select values that can or will be deleted. 

Hi Bogdan,

Thank you for the explantion but my question was a little bit different.

The question is how/where to configure a new System Variable beside the existing ones:

New ID

New Sequential Id

Current User

Current User Contact

 

Thank you,

Sasori

Hello Sasori,



These values are hardcoded and you can't change them.

Show all comments

I'm trying to add an object in my local account and add a parent object to the object, but when I try to add it, I get the error that the menu does not appear. I tried typing any name, it still comes up blank. What can I do?

Like 0

Like

5 comments





This is the area I mentioned on another computer, could it be related to the installation files?

Burak Toprak,

 

What is the product version you are using?

 

 

Sourav Kumar Samal,



8.0.6 

Hi!

 

If you are trying to create an object that should inherit properties from other packages, and nothing is being inherited, make sure you have added dependencies to those packages.

 

To do this, you can open the "Dependencies" section on the package creation page and add dependencies to the packages from which you want to inherit properties. If the package has dependencies, the installation of these dependencies is checked during package installation, so make sure you have added all the necessary dependencies for inheriting properties.

 

If the problem still persists, make sure you have added the proper object settings according to your requirements. If necessary, refer to the Creatio documentation https://academy.creatio.com/docs/7-17/developer/development_tools/packa….

To add to what Alla said, whatever object it is that you want to select as your parent, find what package that object is in and then add that package as a dependency to your package. If you're wanting to select BaseEntity, I believe that package is Base.

Ryan

Show all comments

Dear,

I would like to create a custom object to replace the activityparticipant object.

However, when i tryed to create the remplacement object, i ve got the error:

Multiple replacements of same schema in single package are not allowed.

There are effectively two activityparticpant objects :

So how can i create a new activityparticipant custom object ?

Thank you,

Nicolas

Like 0

Like

4 comments

hi LÉZORAY Nicolas,



The Error: Multiple replacements of the same schema in a single package are not allowed refers that the object schema is already available in the current package. 



Could you confirm the current package doesn't have this Object?

Also do you have any custom created package and where this replacement is tried?



Below is the successful replacement of object in custom development package.





 

 

BR,

Bhoobalan Palanivelu.

Hi Bhoobalan Palanivelu !

I don't see how you managed to create the replacement object without error.

 

In the custom package i have no activityparticipant object:

 

If i go into Allpackage i have the same files as you (without the DEVLocal one):

 

Here's how i proceeded:

 

In the next screen, in the inheritance field, i entered "activityparticipant" 

And then i got the error message:

 

Can you please let me know how you managed to create your custom item ?

Thank you for your help !!!

Have a nice day,

Nicolas

 

LÉZORAY Nicolas,



By chance could you please try it in another custom-created package (Custom_Transfer) rather than OOTB Custom?

Bhoobalan Palanivelu,

 

It works in the another custom package.

I have never used this one.

 

Thank you !

Show all comments

Hello Creatio team,

I manage to give access for ( Operations and Records )to this specific object from the Configuration.

Even though these changes are not reflected as can be seen in the printscreen below:

How can i overcome this problem ?

Like 0

Like

1 comments

Hello,

 

As we mentioned in the submitted case to support, we do not recommend you manually check those boxes, to properly add them please follow the steps below:

  1. In the object, permissions section add your restrictions
  2. The system will create a "copy" of the object you are working on in the current package as a reference to the original object
  3. In that copy, you will see the checkboxes checked for the chosen options from object permissions.

Please make sure to set the "Current Package" system setting to the one you are developing in.

For further questions please refer to your support case.

 

Thank you.

Show all comments