Hello All,

Can Anyone knows, on clicking on tab open popup window in Freedom UI ?

Like 0

Like

1 comments

Hello,

 

Could you please describe your business goal in more details, with screenshots if possible?

Show all comments

Hi all, 

I'm seeing several examples of how to handle the click event of a button in FreedomUI.

 

Was wondering which other events can be handled in the controls. I'm interested in the lostFocus or blur event of an input field. Is there any way to handle that event?

Where I can get documentation about all control events that can be handled?

 

I also saw some examples about handling any change of any viewmodel property. I-d like to handle view events for specific controls.



Thanks!

Like 0

Like

3 comments

Hello Andres!

 

Unfortunately, there are no specific event handlers for the fields.

 

But you can create your own handler for the blur event using the "handlers" schema section of the Freedom UI page or a remote module.

This request should be bound to the “blurred” property of the input field in the “viewConfigDiff”:

 

 

Also, the list of the generic query handlers is available here: https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platform/front-end-development/freedom-ui/client-schema-freedomui/references/handlers

 

Example of the invoking the query handler - https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platform/platform-customization/freedom-ui/page-customization-basics/examples/change-where-the-query-handler-is-invoked

 

 

Best regards,

Natalia

 

Thanks! Actually the "blurred" property is what I was looking for.

Is there any documentation in which I can see all the properties that can be bound for a field, in the same way we can bind blurred?



Thanks!

 

Andres Arrigonni,

Did you by any change got the documentation of all the events for fields? 

I just tried Blurred in a RichTextBox and it's not working.

Show all comments

Hi All,

 

I have added a task in a business process with category "To-do" that requires input from certain users; but I would like to limit result options to just "Completed" for the user and remove other options such as information received, canceled & rescheduled. Can someone please help? Thank you

Like 0

Like

1 comments

Hello,

 

You can use the Activity Results lookup and choose what options you want to leave for the users.

Show all comments

Hi Community!

 

I need to display existing documents from other sections together with the directly attached documents in FreedomUI 8.1.

 

The attachments are stored in the table "SysFile", which has a column called "TypeId". That lookup has the values "File" (default), "Link" and "Link to object".

 

I have tried to tinker around with the database of my on-premise dev environment. While I could manage to display inserted documents of type "Link", they won't open because the SysFile-table has no columns for referencing other documents.

 

There is also a table called "FileLink", which looks promising because it has the columns "FileSchemaName", "FileRecordId", "RecordSchemaName", "RecordId". That would be enough to link existing documents to various records, but the don't show up in the FreedomUi AttachmentList component.

 

Did anyone already manage to do this without duplicating documents?

 

Any help is much appreciated, thanks!

Robert

Like 2

Like

1 comments

Hi Robert!

 

Unfortunately, displaying the various sections' attachments together in one attachment component is impossible. However, you can use a separate attachment component for each section.

 

To implement this, we recommend the following steps:

1.  Open the Page Designer.

2.  For each section that you would like to display the attachments from:

- add the dropdown field, specifying this section as “Lookup” in the field’s general settings (or make sure that such a dropdown field already exists);

- add the attachment component.

3. In each added attachment component, set “Record to attach files” (general settings) to a value from the previously added dropdown field and “File storage location” (advanced settings) to the corresponding table.

 

After you choose the exact records in the dropdown fields, they will be linked to the current record, and you will see their attachments in the corresponding components. It will help you to avoid duplicating documents.

 

Best regards,

Natalia

Show all comments

I am trying to create a new section in a different workplace with an existing object. The Package is from my "Invoices" object, which has all the material I need; however, anytime I try to access this via the New: Section wizard, "SELECT EXISTING OBJECT", I get the error, "Section for this object already exists."



I am having an increasingly hard time maneuvering through the customization of Creatio no-code, without being directed to use schemas, SQL, or outdated object-relational mapping.

Like 1

Like

1 comments

Hello,

 

Indeed, in Creatio, creating multiple sections for one object is impossible. You either need to remove existing sections or create a new object for the new section.

Show all comments

I have a need to intercept record merging events (deduplication).

In the case of merging records, store information about the ID of the deleted record (which was merged and deleted) in the registry of deleted objects, which has already been created, but only deleted records are written there, and not those that were a duplicate and were simply merged and, accordingly, deleted.

Implement a mechanism that will store information about the user who performed the merge and the exact time of the operation. Is this even possible?

Like 1

Like

1 comments
Best reply

Theoretically it's possible. When triggering the merge the MergeEntityDuplicatesAsync method from the DeduplicationService is triggered. This is a public method that can be overridden. The body of the request is a JSON like below (in this case I was merging two documents):

{"schemaName":"Document","groupId":1,"deduplicateRecordIds":["054ac2b7-6840-4cc8-881e-b268b0891459","c467e547-cbff-4ae7-b146-93eff47f1ce6"],"mergeConfig":"{\"Number\":\"c467e547-cbff-4ae7-b146-93eff47f1ce6\",\"Date\":\"c467e547-cbff-4ae7-b146-93eff47f1ce6\",\"Account\":\"c467e547-cbff-4ae7-b146-93eff47f1ce6\"}"}

deduplicateRecordIds is an array with Ids of two records that I selected before triggering the merge.

In the mergeConfig body we have \"Number\":\"c467e547-cbff-4ae7-b146-93eff47f1ce6\ - this is an Id of the record that was left in the app after the merge. So we have

 

"054ac2b7-6840-4cc8-881e-b268b0891459","c467e547-cbff-4ae7-b146-93eff47f1ce6

 

in the deduplicateRecordIds array and 467e547-cbff-4ae7-b146-93eff47f1ce6 is left in the app. This means that 054ac2b7-6840-4cc8-881e-b268b0891459 was removed. So this Id should be added to the log table (for example using InsertQuery class). As for the user that performs merge - we can try retrieving this information using UserConnection.

 

Alternatively you can dig into the possibility of overriding the base merge button click (that will also trigger the "DeduplicationActionProcess" business process (see the process log after the merge is triggered)) and bind calling your custom business process that will do the same operation as the base process (create a copy of the process and trigger it instead of the base process) and using it you will also be able to log deleted record and user who performed the merge.

Theoretically it's possible. When triggering the merge the MergeEntityDuplicatesAsync method from the DeduplicationService is triggered. This is a public method that can be overridden. The body of the request is a JSON like below (in this case I was merging two documents):

{"schemaName":"Document","groupId":1,"deduplicateRecordIds":["054ac2b7-6840-4cc8-881e-b268b0891459","c467e547-cbff-4ae7-b146-93eff47f1ce6"],"mergeConfig":"{\"Number\":\"c467e547-cbff-4ae7-b146-93eff47f1ce6\",\"Date\":\"c467e547-cbff-4ae7-b146-93eff47f1ce6\",\"Account\":\"c467e547-cbff-4ae7-b146-93eff47f1ce6\"}"}

deduplicateRecordIds is an array with Ids of two records that I selected before triggering the merge.

In the mergeConfig body we have \"Number\":\"c467e547-cbff-4ae7-b146-93eff47f1ce6\ - this is an Id of the record that was left in the app after the merge. So we have

 

"054ac2b7-6840-4cc8-881e-b268b0891459","c467e547-cbff-4ae7-b146-93eff47f1ce6

 

in the deduplicateRecordIds array and 467e547-cbff-4ae7-b146-93eff47f1ce6 is left in the app. This means that 054ac2b7-6840-4cc8-881e-b268b0891459 was removed. So this Id should be added to the log table (for example using InsertQuery class). As for the user that performs merge - we can try retrieving this information using UserConnection.

 

Alternatively you can dig into the possibility of overriding the base merge button click (that will also trigger the "DeduplicationActionProcess" business process (see the process log after the merge is triggered)) and bind calling your custom business process that will do the same operation as the base process (create a copy of the process and trigger it instead of the base process) and using it you will also be able to log deleted record and user who performed the merge.

Show all comments

Hello Everyone,

I have implemented saving functionality in Freedom Ui.

const saveRecordRequest = {

    type: "crt.SaveRecordRequest",

    preventCardClose: true,

    $context: request.$context

};

                     

// now execute the save request and check if it was successful

if ((await request.$context.executeRequest(saveRecordRequest))) {

    // save was successful, continue with something else here

}

else {

    // save was not successful (maybe due to required fields not being filled in)

}

I have followed this link

https://customerfx.com/article/saving-a-page-before-some-action-on-a-cr…;

it is saving  the record but after saving record it is  not automatically coming to list page as save button functionality is working.

Can anyone Please guide me here, How I can get that

Like 0

Like

2 comments

What is the behavior you're expecting? Can you outline the scenario you're trying to accomplish? 

In the code you're including preventCardClose: true which specifically tells the page to not close after saving. If you want the page to close after the save, you need to remove that part (or change to false). However, there could be other factors of what a page does after saving (you could force the navigation back to the list using some code if wanted)

Ryan

preventCardClose:false , this works for me .Thank you  @Ryan for guiding me

Show all comments

Greetings,



I was curious as to whether there was a way to setup a BPM filter to pull customers that are about to become 18 years of age and send them a message about product opportunities available to them. Thanks in advance for any assistance.



Best,



Lucas

Like 0

Like

4 comments

Hi Lucac,



You can create a dynamic folder based on needed conditions.

 

And add the campaign audience from a dynamic folder, as well as from a custom filter. 

Bogdan,

Yes, however how would we set up the automation to pull a member who is a about to turn 18 for example, in the next 6 months?

Lucas Centeno,

I didn't test this out, but it would likely work to use: 

  • Age = 17
  • Birth date Within Previous 6387 Days (which is 17 1/2 years in days)

Ryan

Ryan Farley,

Thank you for the guidance, Ryan. Unfortunately, the filtration provided did not work. It would be nice to have a "Within" or "Between" filtration feature in Creatio in addition to "=" ">" "<", etc.

Show all comments

CAN ANY HELP ME ON Triggering a Client-Side Event When a Field is Changed on a Page in Creatio in Freedom UI?

Like 0

Like

4 comments

I have an article showing how to do this here: 

https://customerfx.com/article/responding-to-an-event-when-a-field-is-c…

Ryan

@Ryan I have to call a method inside field is changed .I have  used this approach but I am getting issue in this. Can you please help how we can call a function inside field value

 handler: async (request, next) => {

        if (request.attributeName === "BooleanAttribute_ddmdb1n") {

              await cfx.fieldChecked(); // 

        }

        return next?.handle(request);

    }

},

            {

                request: "cfx.fieldChecked",               

                handler: async (request, next) => {

                    const okBtn = {

                        key: "OK",

                        config: {

                            color: "primary",

                            caption: "YES"

                        }

                    };

                    const cancelBtn = {

                        key: "CANCEL",

                        config: {

                            color: "default",

                            caption: "Cancel"

                        }

                    };

                    const result = await request.$context.executeRequest({

                        type: "crt.ShowDialogRequest",

                        $context: request.$context,

                        dialogConfig: {

                            data: {

                                message: "Are you sure you would like to proceed? It will wipe out all the information!!!!",

                                actions: [cancelBtn, okBtn]

                            }

                        }

                    });

                    if (result === "OK") {

          request.$context.StringAttribute_uo3a61k = "";

                    }

You cannot put methods inside a Freedom UI page. Either move the code from cfx.fieldChecked into the change request handler, or you can move it to a module

Ryan

okay got it .Thank you for help

Show all comments

Can anyone knows HOW TO ADD POP CONFIRMATION MESSAGE for selecting Yes or No in Freedom UI

Like 0

Like

2 comments