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, folks. By default, custom angular components have no setting UI panel, as on screen. I haven't found any info in docs, so maybe here somebody knows how to add user-friendly way to set up component?

Like 0

Like

2 comments

Hello,
​​​​​​​
Unfortunately, for now, the system does not support such no-code option. However, already informed our developers about this option, and they will work on this feature in future versions. 

Thank you for helping us improve the system!


Best regards,
Ivan

Ivan Savenko,

ok, thx. Maybe there is some way to detect when page opened in configuration mode?

Show all comments

Hi all!

We have a DB view that contains predicted vacation balance for each person, with effective Date and Vacation balance value. 

When creating dashboard each person can view his/her data, we see that dashboard rounds up decimal values of vacation balance to closest integer. Can this behaviour be changed? Either to show actual value ( for example 2.79) or always rounded to lower (2).  

 

Atatched you can find sample data used to build dashboard above.

Thanks! 

Like 0

Like

2 comments
Best reply

Dear Iuliia,

You can manage the number of digits after the decimal point in the "How to display" section in the "Format":



Additionally, please make sure that the column itself in the object has the correct value type:



Have a great day!

Dear Iuliia,

You can manage the number of digits after the decimal point in the "How to display" section in the "Format":



Additionally, please make sure that the column itself in the object has the correct value type:



Have a great day!

Alina Yakovlieva,

thank you, it's very helpfull! 

Show all comments

I have a home page set up with metrics and a list.  I added page parameters, but when I go to the list and try the "Apply filter by page data" option to select the parameter, it says No Data.  Shouldn't I be able to filter lists by page data parameters this way? 

 

Thanks!

Like 1

Like

3 comments

Home pages don't typically have a record source, so there's no record context to use there. Unless you've connected some object type to the page, it doesn't have any context of a record to bind to. 

Can you describe more what you're trying to accomplish?

I don't have a data source connected, but I was hoping to use dates inputted as page parameters to filter a list.  The quick filters for dates are limited to columns on the object, but I was hoping to be able to filter the list by a date from a related object. 

I have the same need, but as I understand, it is not available yet

https://community.creatio.com/questions/how-have-date-range-filter-home…

Show all comments

Hi there,

 

I am trying to create a mobile app which has custom buttons which, when pressed, record a timestamp. I have created a new workplace in the mobile application wizard and have added the section where I want to include these buttons. When I generate this section, four client modules are created as shown in the image attached. Can I configure these custom buttons in one of these client modules? Some documentation recommends configuration in MobileFUI... client modules but I have no MobileFUI client modules for my new section.
 

 

Thanks 

Like 1

Like

2 comments

Hello,
The process of adding a new button in the mobile app involves creating your own remote module, basically, the list of things you need to do is following:

  1. 1) Create TypeScript project for remote module.
  2. 2) Create a custom request in remote module.
  3. 3) Create custom request handlers using remote module.
  4. 4) Register handler in remote module.
  5. 5) Build project and upload changes to Creatio.
  6. 6) Add button to the page using metadata.
  7. 7) Check functionality.
  8. Also, you need to add and enable EnableMobileSDK feature in the features section.
    An example of adding a custom module can be found in this article. In your case, the code of the remote module should look like this:
  9. import {
    	BaseRequest,
    	BaseRequestHandler,
    	CrtModule,
    	CrtRequestHandler,
    	Logger,
    	CrtRequest,
    	ModalPresenter,
    	bootstrapCrtModule,
    	DoBootstrap,
    } from '@creatio/mobile-common';
     
    @CrtRequest({
    	type: 'crt.MyButtonRequest',
    })
    export class MyButtonRequest extends BaseRequest {
    	public message?: string;
    }
     
    @CrtRequestHandler({
    	requestType: 'crt.MyButtonRequest',
    	type: 'usr.MyButtonRequest',
    	scopes: ['UsrMobileUsrUserModuleRecordPageSettingsDefaultWorkplace_Root'],
    })
    export class UsrMyButtonRequestHandler extends BaseRequestHandler<MyButtonRequest> {
    	public async handle(request: BaseRequest): Promise<unknown> {
    		var message: string | undefined = (request as MyButtonRequest).message;
    		if (message) {
    			Logger.console('Request message: ' + message);
    			ModalPresenter.showSnackBar('Message title', message);
    		}
    		return this.next?.handle(request);
    	}
    }
     
    @CrtModule({
    	requestHandlers: [
    		UsrMyButtonRequestHandler,
    	],
    })
    export class UsrModule implements DoBootstrap {
    	bootstrap(): void {
    		bootstrapCrtModule('UsrModule', UsrModule);
    	}
    }

The difference with the article above is a way to add a button. In order to do so in one of the schemas you showed (depending on where you want to locate a button) you need to add a code of the button to a viewConfigDiff:

{
	"operation": "insert",
	"name": "settings",
	"values": {
		"entitySchemaName": "UsrUserModule",
		"details": [],
		"columnSets": [],
		"localizableStrings": {
			"SocialMessageDetailCaptionUsrUserModule_caption": "Feed",
			"AttachmentsDetailCaptionUsrUserModule_caption": "Attachments",
			"primaryColumnSetUsrUserModule_caption": "General information"
		},
		"settingsType": "RecordPage",
		"operation": "insert",
        "viewConfigDiff": "[{\"operation\": \"insert\", \"name\": \"MyButton\", \"parentName\": \"UsrUserModule_PrimaryTab_Body_primaryColumnSet\", \"propertyName\":\"items\", \"values\": {\"type\":\"crt.Button\",\"caption\": \"Click here\", \"color\":\"primary\",\"clicked\":{\"request\": \"crt.MyButtonRequest\", \"params\": { \"message\": \"Some test message\" }}}}]"
	}
}

Dmytro Vovchenko,

Thank you!

Show all comments

Today I saw in Creatio 8.2 something long awaited to be available in Freedom, the rule that allows you to designate a formula to a field.

 

But :-( when trying to designate a formula to a field, it doesn't allow me to do so and apparently what I saw is ‘on hard’ and it is not possible to add this element to our business rules yet.

 

I saw it in the OrderProduct object to calculate the total of an order line, you can change the formula, but not add a new one, because the ‘Set up formula’ element is not accessible.

Does anyone know how to access ‘Set values’ using formula?

 

Thanks

Julio

Like 3

Like

3 comments

Hello, some feedback regarding this question?

 

Thanks

Hello, 

 

Thank you for reaching out.

 

This functionality is still in development, so access to it will only be available after the official release, which is currently planned for version 8.2.2.

Sergii Zhmurko,

Thanks for confirming that we will have this feature soon! :-)

Show all comments

Dear Community,

 

After installing the "Excel Reports Builder for Creatio" add-on and removing the APK and JAR extensions in the system settings as guided by this tutorial (Failure to Upload Template for Excel Report in Creatio and a Solution), I attempted to upload my Excel template. Unfortunately, I received an "Empty Response" message.

 

To investigate further, I compiled all packages, which resulted in the attached compilation errors.

 

Any advice on how to address this issue would be greatly appreciated.

 

Thank you in advance for your assistance.

File attachments
Like 0

Like

2 comments

Hi Mouna Rachidi,

I wasn’t able to reproduce the issues related to the template upload and compilation errors. Could you please share a few more details so I can help you better?

  • Which version of Studio Creatio are you using?
  • What version of the Excel Reports Builder for Creatio is installed, or when did you install this app from the Creatio Marketplace?
  • What’s the file extension of the template you’re trying to upload?

Dear Irina Lazorenko,

 

Thank you for your attention to my request. Please find below the information you requested:

 

  • Which version of Studio Creatio are you using: Version 8.0.6.3439 (.NET Core 3.1.32)
  • What version of the Excel Reports Builder for Creatio is installed, or when did you install this app from the Creatio Marketplace: I installed the add-on from the Creatio Marketplace (Excel Reports Builder for Creatio).
  • What’s the file extension of the template you’re trying to upload: Microsoft Excel Worksheet (.xlsx)

 

Please let me know if further information is needed.

 

Best regards,

Mouna.

Show all comments

I have problem with installing package to new enviroment. I still continue to install the next package. When i want to compile there is an error like this:

 

and this is the log file:
 

File attachments
Like 0

Like

1 comments

Hello, 

Currently, we are supporting .NET 6 SDK.
Required Windows components for Creatio NET Framework.

Please install this component and try compiling the website.

Regards,
Orkhan

Show all comments

I am trying to get contact collection data from creatio using OData 4. 

 

In my account, I have tons of contact data, but somehow API gives empty error.

 

Is it something related to permission access related issue?

 

 

@Community, please help to solve this issue

Like 0

Like

1 comments
Best reply

Hello. Make sure that the user used to authenticate the request has the right to read the data of the "Contact" Object. Check in the System Designer, Access Rights to Objects.

Hello. Make sure that the user used to authenticate the request has the right to read the data of the "Contact" Object. Check in the System Designer, Access Rights to Objects.

Show all comments

Is there a handler used when loading a List element for the first time or when reloading the list, including after changing quick filters? The crt.LoadDataRequest handler appears to only be called when reloading the list or loading in additional records via the infinite scroll mechanic, but not on the first load of the data or when reloading the data after quick filters are changed, so it does not fit the need.

 

What I'm looking to do is to intercept the initial loading of the data for the list to perform some async task, and once that async task has been completed allow the load to resume as usual. This should be triggered when the page first loads the list in, and whenever the user clicks to reload the list manually or changes quick filters that change the list data, but shouldn't be triggered on the infinite scroll.

Like 1

Like

4 comments

Hello,
 

The initial data loading request 'crt.LoadDataRequest' was not included in this step because it’s part of the system's core loading process, ensuring that essential page elements are set up first.

 On subsequent loads, the system publishes 'crt.LoadDataRequest' where users can apply their customizations.
 

Currently, there’s no default handler to directly intercept the system’s initial load, but there are other options for customization depending on the user’s needs.
 

Additional options include:
 

1) System "crt.HandleViewModelInitRequest" on view model initialization.

2) A change request on view model attribute change, more details on this approach below:

! Warning: Theoretically, this approach could cause slower performance when working with the card, as it increases the total number of handler calls (the approach will trigger on every list change: loading, reloading, sorting change, column list change, and column value change).

 

To use this approach, add a change marker to the appropriate DataGrid attribute (example below):


T
hen, add a handler to process the usr.MyRequest in the handlers, similar to how it's done for crt.LoadDataRequest and crt.DataGridCreateItemRequest.
 

As a result, your custom logic will execute when a new column is added, or when a column is deleted, and for other list changes.
 

Hope this helps, and thank you for reaching out!

Hi Pavlo, thank you for the detailed response! I'm sure that functionality will come in handy.

 

Unfortunately, for our use case, we need to perform an action before the data is fetched for the reload, whereas this change triggers only after the data has already been fetched from the database to reload the list. Is there anything that would fire in a similar way but before the data is requested from the server? LoadDataRequest does this, but has the drawbacks of being called only in certain circumstances.

 

Is there any documentation on the event handler "call stack"? This would be really useful, knowing that, for example, when a user clicks the reload button, first handler X is called to do some action, then handler crt.LoadDataRequest is called to handle the outbound data call to the servers, then the data is sent to the user's browser, then handler Y is called to do some action, then handlers that are associated with the change property of viewModelConfig are called when updating the data stored in the List, etc.

 

Many thanks,

Harvey

Harvey Adcock,

Hello,

Thank you for the additional clarification. Unfortunately, at this time, this option is not available.
 

I have created a task for the development team to implement such a handler in the system.
 

Thank you for helping us improve our product.

Best regards,
Pavlo

Hi Pavlo, thanks - I think we really need some more consistency in what triggers handlers and what doesn't. Performance implications of overriding certain handlers is something for the developers to consider (ideally armed with documentation on any things to look out for - the current info on request handlers in the Academy is incredibly limited) and not really something that should be prevented from being done entirely. Why even have the ability to override LoadDataRequest when one of the main times it should be called (first loading data for a List) it doesn't even fire? Developers just end up having to do workarounds that are even worse for performance, such as triggering a reload of the data from code, so the data gets requested twice.

 

There are so many page events which would've previously in Classic UI triggered something in the page code that developers could override as needed, but now it's just flipping a coin to find out if the event you need to capture and handle in some custom way is possible to be overridden or not.

Show all comments