Hello,

How can we bind the value of the system setting "HasContactMiniPageAddMode" to SVN?

after changing the value to "false", we add data binding for this "SysSettingsValue" where system setting code equals to HasContactMiniPageAddMode we get a warning:

"The record with Id "a0849de9-b4e5-408d-a75c-4551e3e0b9c0" is already bound in the data "SysSettingsValue_ContactMiniPageForAddMod" of package "UIv2" for schema "System setting value"

Like 0

Like

5 comments

Hello ayman,



To achieve it you should set instalation type = Update existing and check column [Forced update]

[Update existing] - when updating a package, only those object columns that are marked with [Required for update ([Forced update]) in the [Columns] group will be updated. This type of installation is used, for example, when delivering hotfix updates!



Best regards,

Alex

Alex_Tim,

 

I still get the warning when saving the data binding with [Update existing] installation method chosen, should this not be the case? I have forced update set on the system setting I'm updating as well. Presumably this warning can be ignored, since the data is bound in another (OOTB) package which won't be installed with my package, but it does seem odd that the warning is still shown.

Hello Harvey, 

 

Could you please specify why do you need to bind the data that is already in one of the base packages?

 

Thank you in advance for your reply!

Olga. 

Hi Olga, in this case it's because I'm binding the default maximum repetitions of Business Processes system setting to the package to a higher number, but in general just to be able to bind any pre-existing System Setting to the package.

Harvey Adcock,

 

Thank you for the clarification! This warning has no impact on data binding. 

 

Best regards,

Olga. 

Show all comments

Dear Team,

                 Please help me How to Save File from base64 string in a web service.please share any sample code.

 

Regards,

Sekhar K.

Like 0

Like

2 comments

Hello Sekhar,



If we speaking about converting base64 string to a file you can check the possible realisation of this case here: https://snipplr.com/view/6034/base64-encode-or-decode-a-file/



Also, when the task is to upload file to bpmonline, OData service is used for that purposes, here is an example:  https://community.bpmonline.com/questions/how-upload-attachments-odata



If you have any questions, please specify more precisely what exactly you are trying to achieve.



Best regards,

Alex

Thanks Alex.

 

Show all comments

I'm trying to pass a Guid from a script task to a subprocess.

Here is the entire process: http://prntscr.com/mc2cmv 

The code of the script task is:

 

var pipelineId = Entity.UsrPipelineId;
 
//pass pipelineId to GenerateUBOPositionSubProcess
 
return true;

What would I have to write? The subprocess has a parameter defined that is named PipelineId (http://prntscr.com/mc2ej9).

Like 0

Like

5 comments

You can set process parameter in the script:

Set("PipelineId", pipelineId);

That sets the parameter for the process that contains the script task, but not for a subprocess that is further down the line from the script task (see the first link I included), I thought? Or do processes and subprocesses share parameters?

Dear Jonas,

You can use this coder to pass the value:

UserConnection userConnection = Get<UserConnection>("UserConnection");

IProcessEngine processEngine = userConnection.ProcessEngine;

IProcessExecutor processExecutor = processEngine.ProcessExecutor;

var nameValues = new Dictionary<string, string>();

int parameter1Value = 100;

nameValues["parameter1"] = parameter1Value.ToString();

processExecutor.Execute("UsrProcessCustom", nameValues);

return true;

Best regards,

Dean

Thank you. I will start testing this today. 

Now I need to know how to get data back from that process. Is that possible?

Dear Jonas,

You can try to add another element in your subprocess and use the same script to pass the values back to the parent process. 

Dean

Show all comments

I am trying to add an auto-numbering field on Opportunity.

https://academy.bpmonline.com/documents/technic-sdk/7-13/how-add-auto-numbering-edit-page-field

I successfully did this with the Product object just like the guide said. It was very easy.

But when I try to do the same thing on Opportunity, there are some differences. Opportunity does not have the inherited Code –property or the methods called in the code under onEntityInitialized()

I have only tried the client-side solution.

Best regards,

Like 0

Like

6 comments

Hi, Julius!



As you have your own field in Opportunity (e.g. "UsrCode"), so you can use:



    onEntityInitialized: function() {

                 // onEntityInitialized method parent realization is called.

                this.callParent(arguments);

                // The code is generated only in case we create a new element or a copy of the existing element.

                if (this.isAddMode() || this.isCopyMode()) {

                    //  Call of the Terrasoft.BasePageV2.getIncrementCode base method, that generates the number 

                    // according to the previously set mask. 

                    this.getIncrementCode(function(response) {

                    // The generated number is stored in [Code] column.

                        this.set("UsrCode", response);

                    });

                }

            }

Dear Julius,

Since opportunity section does not have an existing Code column, you can create one using means of section wizard.

No special methods needed for new column, since we are calling parent realization in the onEntityinitialized method, which has the logic of working with auto incrementing. Just be sure to indicate your custom column in the this.set method by its name, but not title.

As for the back end realization of the auto incrementing, follow the instructions just the same, but indicate name of the custom column.

Regards,

Anastasia

 

Anastasia Botezat, Vladimir Sokolov,

I tried this again. But it's not working. No value gets set.

I have created the System Settings, the Property on Opportunity, And I have adjusted the JavaScript to have the correct string value, "UsrCode".

It's not working this time either. Is the on-client method unavaliable on the Opportunity object?

Maybe the Opportunity object does not know the Systems Settings i Created. The system settings code names are : OpportunityLastNumber and OpportunityCodeMask

UPDATE : It is working while using Copy. But no Code is set when adding an Opportunity with the Mini-Page. I am now working on this. Any advice appreciated.

UPDATE 2 : Creating and Copying works as long as I do not have a Mini-Page. I tried to add the same JavaScript in the MiniPage methods{}. But that's not working. Any tricks to use MiniPages?

Julius,

The auto increment logic is not a part of basic mini page logic. The 

getIncrementCode method is written on the BasePageV2. However, mini pages are inherited from BaseMiniPage, which does not have such method.

You can add the getIncrementCode method realization to the mini page, so that it will execute the logic. 

As for the back-end part, the changes are displayed on the client side only after record is saved. Therefore, it is impossible to view the code value on the opportunity page immediately. 

Regards,

Anastasia

Anastasia Botezat,

 I did not get this to work with Mini-Page. I have anyway decided to work without the mini-pages. When Creating a Opportunity I just get the regular edit page where the incremented numbers work fine. Thank you.

Anastasia Botezat,

Hi,

This dint worked  even to me. 

https://community.bpmonline.com/questions/auto-increment-issue

I have posted the issue in detail in the above link. Please help!!!!

regards,

Sriraksha

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

Greetings,

This article is about how to add Account logo into printable form.

1.      Create a new Printable

Go to the “System Designer” and open “Lookup” section.

Find Lookup with name “Pintables”

In the Pop-up window click on “New” button and choose “MS Word” option.


Specify name and section. You can use any section which is related to Account.

I used Account section for example.

2.      Add macros

Let’s add Account Name and Account Logo to macros

Click on “Set up list of fields” in the bottom of the screen.


In the pop-up window look at middle column and find “Name” and click on “>” button.


3.      Add Logo macros

Using this way let’s add Account Logo into macros list.

On the left hand column click on “+” near “Account” ad choose “Account Image” object.

In the middle column choose “Image” option and click on “>” button.

Click “OK” on the bottom of the screen.


4.      Use macros in printable designer

Open MS Word doc. Switch to bpm’online tab. Choose our new printable.

Choose Name” and “Image” macros from the right hand side column and place it on the page.

Click on “Save in bpm’online”

Like 0

Like

Share

1 comments

Hi, 

Please help to fix the below error while instaling package to oracle based BPMonline instance. Installation fails and install log has below error and error screenshots. Please assist to fix the issue.

Oracle.DataAccess.Client.OracleException: ORA-02291: integrity constraint (DLD_CRM.FKiEw0PrrAuIapzcrL01PohOXeFM) violated - parent key not found

at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)

ORA-02291: integrity constraint (DLD_CRM.FKiEw0PrrAuIapzcrL01PohOXeFM) violated - parent key not found

 ---> Oracle.DataAccess.Client.OracleException: ORA-02291: integrity constraint (DLD_CRM.FKiEw0PrrAuIapzcrL01PohOXeFM) violated - parent key not found

   at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)

Like 0

Like

1 comments

Dear Ganesh,

"parent key not found" message indicates that you are trying to insert a child without a matching parent, as defined by a foreign key constraint. I recommend checking data bindings for the objects that are installed with the package. 

Best regards,

Angela

Show all comments

Hi all,

We have a custom section called 'Dossiers'.

A dossier can have multiple invoices. Therefore we created a custom detail 'Invoice history' where each record is linked to a dossier (name UsrDossierInvoiceHistory).

Now I want to make the data from this detail available like a section so I can add it to a workplace and all records (linked to all dossiers) are displayed and can be filtered on.

Would it be enough to add a file 'UsrDossierInvoiceHistorySection' and 'UsrDossierInvoiceHistoryPage'?

Or can I achieve this using the section wizard, referring to an existing detail object?

Kind regards,

Vincent 

Like 0

Like

1 comments

Dear Vincent,

Please refer to this community question regarding registering custom section for existing object https://community.bpmonline.com/articles/register-custom-section-existi…. In your case your detail is an object and you need to create a section from it.

Best regards,

Oscar

Show all comments

Hi Community,

 

Is it possible to trigger a business process after new user was created?

 

I tried it, but it seems the process is not triggered. I also check the process log but this process is not there.

 

Like 0

Like

1 comments

Hi all,

Does someone knows how to import product image in the xlsx file ?

I tried the image URL, the image encode in base64...

thank you

Like 0

Like

5 comments

Hello,

if we take a look at the table in DB where information on products is stored, you can see that the column which stores information on images is called "PictureId". This column takes information directly from "SysImage" table where all images are stored. The image itself is stored in "Data" column and it is stored as binary code there. Unfortunately there is no way to import data to SysImage table directly using data import tool. I will create a problem to our R&D team so to develop this functionality in future and I hope it will be implemented soon enough. As for now you need to update images manually via product page. Thank you for helping us to make our application better.

Best regards,

Oscar

thank you Oscar

Do you know how to encode Line feed in the excel import file for BPM multi-line fields ?

LÉZORAY Nicolas,

 I ve got it, i replace line feed by <br/> in my SQL results, next in the xlsx file, i replace <br/> with ALT+010

LÉZORAY Nicolas,

Are you saving this into a standard field or the Notes field? When I did importing of data into the Notes field, it has never worked.

Mark Roberts, into the Notes Field it works

Show all comments