Hi Team,

 

My team and I have been assigned to a project this month, and one of the requirements is to implement a QR code scanner in the mobile app. So far, I've been able to open the camera using `Ext.device.Camera.capture`, but it doesn't scan anything. I also came across the documentation mentioning Cordova, and I tried using the Cordova barcode scanner plugin, but that didn't work either.

 

Could anyone please provide any additional documentation or articles related to this issue? Specifically, it would be helpful if there are resources on how to use the Cordova plugin or how to develop a custom widget using Flutter.

Like 1

Like

2 comments

Also interested, lots of clients are interested in using QR code (for example, event registrations, or orders etc...), currently use of QR code is limited.

Hello,

Our R&D team has a task to implement a QR scanner in the mobile application. The task is still in progress on their end and we expect this functionality to appear in the app in the next application releases. Currently,  we do not have any examples of such implementation. 

You can use all the provided examples of customizations in mobile applications that we have provided on the Academy: https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platform/category/mobile-app-development.

Show all comments

Hi everyone! We have released a new version of Clio and Clio Explorer.

What's new:

  1. .NET 6 is supported and Clio is now compatible with iOS on M series processors.

  2. OAuth settings are supported in the UI for easy connection with the Creatio trial version.

  3. Quick access to all Clio settings in Clio Explorer for advanced users.

  4. Support for working with auto-generated code in the package assembly for local development in workplaces.

3 comments

Links on Clio explorer and clio

You might want to reclassify as "Article" :)

Clio explorer seems awsome. Kudos to the team

Show all comments

Hello,

 

Is there any preference/specific recommendation of OS for Creatio local environment installation? As there is no relevant information present on the Creatio academy this.



Also in case of no specific preferences of OS, are there any additional requirements for Creatio setup when it is needed to be installed on a Linux machine?

Like 1

Like

1 comments

Dear Rahul,

 

There are recommendations for OS: https://academy.creatio.com/docs/user/setup_and_administration/on-site_…

 

There are no additional requirements beside requirements specified on Academy.

 

Best regards,

Angela

Show all comments

I am trying to implement validation logic in client module edit page of a section.

I want to save the column value of UsrAttributeName (a lookup) into a variable.

To do this, I am using this.get("UsrAttributeName").displayValue. But when Page is loaded it hangs and console shows the error 

message: Uncaught TypeError: Cannot read property 'displayValue' of undefined 

Like 0

Like

2 comments

Hello! 

 

1. To add validation use this.addColumnValidator method in setValidationConfig method.

Please, find the example in the Academy article: https://academy.creatio.com/documents/technic-sdk/7-16/how-add-field-va…

 

2. If the column value is not defined you cannot call for its properties. Check if the column has value:

var attribute =  this.get("UsrAttributeName");

var attributeDisplayValue = attribute  && attribute.displayValue;

 

Please, let us know in case any additional information is required. 

 

Best regards,

Olga. 

Olga Avis,

Hi 

 

After debugging it turns out undefined is coming because Entity/Page is not fully loaded or when I create a new record then all fields are empty.

I could use your suggested way to assign attribute value to a variable but that would not be able to work if entity/page is not fully loaded.

 

So I used a flag in attributes with default value false and set it to true in OnEntityIntilized method.

Then I checked the flag, if it is true then the validation method will run.

 

Thanks

Ram

Show all comments

I am searching for any article or guidance to add an confirmation message when user tries to change status in a section record, the system first asks user via confirmation message(pop up). The pop message should state whether if you are sure to change state or not with Yes or No option.

I only that there will be use of localizable strings in object schema but how it all adds up to create a pop message.

can anyone help in this matter?

Thank you

Like 0

Like

8 comments
Best reply

I do have this article describing how to show various prompts in Creatio via code, like confirmation dialogs etc.

https://customerfx.com/article/displaying-information-confirmation-and-error-dialogs-in-bpmonline/

 

Is that what you're after?

Ryan

I do have this article describing how to show various prompts in Creatio via code, like confirmation dialogs etc.

https://customerfx.com/article/displaying-information-confirmation-and-error-dialogs-in-bpmonline/

 

Is that what you're after?

Ryan

Hello Ryan,

 

Yes, I am looking for the exact thing. Currently I want to add a Prompting for Choices confirmation dialog written in your article to a section after change in status. 

 

Can you please tell me if any of Creatio CRM section have this in-built (confirmation message) so that I can find the code to understand how to bind functionality or process to the YES or NO button?

 

Thank you

Hello Ramnath Sharma,

 

Current versions of the Creatio CRM don't have such kind of ready in-built pop-up confirmation.

On the other hand you can try to use the methods which were provided by Ryan Farley:

 

https://customerfx.com/article/displaying-information-confirmation-and-…

 

Also in articles below you will be able to find information about other kinds pop-up windows (with input fields, buttons, etc.):

 

https://academy.creatio.com/documents/technic-sdk/7-15/adding-pop-summa…

 

https://academy.creatio.com/documents/technic-sdk/7-15/creating-pop-sum…

 

https://academy.creatio.com/documents/technic-sdk/7-15/creating-pop-sum…

 

https://academy.creatio.com/documents/technic-sdk/7-15/adding-pop-hints

 

You can also analyse the the any minipage code and create a custom page that would open upon your preferred conditions.

 

Best regards,

Roman

RAMNATH SHARMA,

 

Yes, you can use that code in a section, page, or anywhere in Creatio. To do a Yes/No prompt, you'd add code like this (from the article I posted)

Terrasoft.showConfirmation("Would you like to do the thing?", function(result) { 
    if (result === Terrasoft.MessageBoxButtons.YES.returnCode) {
        // the user selected "yes" - do something here if needed
    }
    else {
        // the user selected "no" - do something here if needed
    }
}, ["yes", "no"], this);

To show this confirmation after the user changes the Status field, you'd need to wire up a change event for that column, I describe how to do that here: https://customerfx.com/article/triggering-an-event-when-a-field-is-changed-on-a-page-in-bpmonline/

 

Inside the method that fires when the Status column is changed, you'd place the code above, and could then react as needed.

 

Hope this helps,

Ryan

Thank you Roman and Ryan.

 I will follow the suggested articles to implement pop up confirmation.

Ryan Farley,

Is it possible to send these informational / confirmation messages from business processes (Script tasks, maybe) ?

Ryan Farley,

Hi,

I want to use this code, but not sure where to add the code to?

Is that in a script task of a process?

Thanks

Chani Karel,

The code listed above and in the linked article are for client-side code (code that would exist on a page). It is possible to send a message from a process that would get received on a page, but that does require some programming on both sides (a script task in a process and also modifying code on a page, or somewhere in the client to receive the message from the process and display the prompt - however, there's no way to get the result of the prompt back to the process so it can proceed according to the value selected). This article explains how to send a message from a process to be received in the client https://customerfx.com/article/sending-a-message-from-server-side-c-to-…

Ryan

Show all comments

Hi

In order to increase our developers' productivity, we're looking for ways to test server-side C# code before using it in process designer task script.

I've followed this guide: https://academy.creatio.com/documents/technic-sdk/7-15/developing-configuration-server-code-user-project

In the onsite scenario and after enabling file system mode and recompiling the application, I got this error message:

The "Default" workspace assembly is not initialized

 

PS: The second method worked well (Cloud Executor) but it didn't allow debugging which is cruicial for our developers.

Thank you

Mohamed

Like 0

Like

2 comments

Hi Mohamed,



I checked on my end - there is key missing in workspace arguments: confRuntimeParentDirectory. In this key you should specify path to [rootAppFolder]\Terrasoft.WebApp



For example:

-filename="C:\Users\D.Smishchenko\source\repos\ExecutorLibrary\ExecutorLibrary\bin\Debug\ExecutorLibrary.dll" -typeName=ExecutorLibrary.Executor -operation=ExecuteScript -workspaceName=Default -confRuntimeParentDirectory="C:\bpmonline\7.15.0.634_SalesEnterprise_Marketing_ServiceEnterprise_Softkey_MSSQL_ENU\Terrasoft.WebApp"



Thank you. We will transfer this to our academy team to include the changes.



Regards,

Dmytro

Dmytro Smishchenko,

Thanks! It's working now.

Show all comments

I created a module that I used to generate a custom  comboBoxEdit  view  (lookup/dropdown) , then I used that module in another page (load the component)  , and the view created successfully but without data.

To be more clear:

1- Code of my Custom Module 

define("UsrDropDownGenerator", ["ext-base", "terrasoft", "sandbox"], function (Ext, Terrasoft, sandbox) {

    Ext.define("Terrasoft.configuration.UsrDropDownGenerator", {

        alternateClassName: "Terrasoft.UsrDropDownGenerator",

        extend: "Terrasoft.BaseModule",

       

        Ext: null,

        sandbox: null,

        Terrasoft: null,

        viewModel: null,

        

        view: null,

      

        init: function () {

            debugger;

            this.callParent(arguments);

            this.initViewModel();

        },

        initViewModel: function () {

           debugger;

            var self = this;

            

            this.viewModel = Ext.create("Terrasoft.BaseViewModel", {

                values: {

                    

                    booleanValueColumnList: Ext.create("Terrasoft.Collection")

                },

                columns: {

                    

                    booleanValueColumnList: {

                        type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,

                        name: "booleanValueColumnList",

                        isCollection: true,

                    }

                    

                },

                methods: {

                     getColumnList: function (filters, list) {

                         

                         debugger;

                       if (list === null) {

                            return;

                        }

                        list.clear();

                        var columns = {};

                       for (var x = 0; x < 4; x++) 

                          {

                                            

                                var value1 = {

                                displayValue: "qq",

                                value:"1"

            

                              };

                            columns[x] = value1;

                          } 

            

                            list.loadAll(columns);

                            

                    },

                    

                    simpleFilterColumnChange  :function(args){

                        debugger;

                    }

                }

            });

            

        },

        

        render: function (renderTo) {

                 

 // This is executed on the module initialization, right after the init method.

            

              this.view = this.Ext.create("Terrasoft.Container", {

            

                items: [

                    Ext.create("Terrasoft.Container", {

                        renderTo: renderTo,

                    

                        items: [

                            {

                                width: "300px",

                                markerValue: "testMarker",

                                rightIconClasses: ["combobox-edit-right-icon"],

                                className: "Terrasoft.ComboBoxEdit",

                                list: {

                                    bindTo: "booleanValueColumnList"

                                },

                                prepareList: {

                                    bindTo: "getColumnList"

                                },

                                change: {

                                    bindTo: "simpleFilterColumnChange"

                                }

                                

                            }

                            

                        ]

                    })

                ]

            });

            

            

          

            this.view.bind(this.viewModel);

            

            

            return this.view;

        },



       

        destroy: function () {

            

            this.view.destroy();

           

            this.viewModel.destroy();

        }

    });

    debugger;

    

    return Terrasoft.UsrDropDownGenerator;

});

 

2- Code of my page  

......

        methods: {

                             

            onEntityInitialized:function(){

                

                this.callParent(arguments);

                

                var configObj = {

                       data : [{label : "Name" , description:"hh"},{label:"Age" , description : "10"},{label:"Job" , description : "bb"}]

                };

                                      

                this.sandbox.loadModule("UsrDropDownGenerator", {

                        renderTo: "centerPanel", //name of the container where visual module view will be displayed

                        keepAlive: true

                });

                

            },

        

            

        },

 

The dropdown was created successfully and appeared in the page  , but it does not contains any data.

When I click the dropdown ,  the getColumnList() function executed and the data are saved in the list , but no data appear in UI .

Why the data are not filled in the dropdown  , where is the problem in my code?

 

Like 0

Like

1 comments

Hello,



Unfortunately, it`s hard to tell why exactly this code is not applying.



I can recommend you another, easier way to achieve it . If I understood you right, the task is to create dropdown with some values. 

To achieve it you can simply create new object that will store all the data, and add the new lookup field to the page via section wizard.



Also, you can create some custom styles for this field, more about styles can be found here: https://community.bpmonline.com/questions/how-add-custom-style-control-… and here https://community.bpmonline.com/articles/how-add-or-edit-css-style



Best regards,

Alex

 

Show all comments

what I mean is how to apply the concept of angluar js 1.x directives on custom lookup in bpm, so wirte the code of custom lookup once and add it to multiple pages.

Like 0

Like

2 comments

Use mixin   A good example of mixin allows add multi-currency field

Hello.

The mixin would indeed be a decent way to achieve the desired functionality.

Best regards,

Matt

Show all comments