Hi,

Due to the shared data structure between Projects and Project Tasks I am having some issues with the import process. I am just testing currently and importing around 30 tasks, with the full import to import several thousand.

During testing I found I needed a change in a mapped field and therefore my typical situation is to delete the previous import, make the adjustment and re-import.

However, I cannot find a way to list all of the project tasks to allow me to bulk delete. My concern is that if I encounter an issue when doing the full import I cannot roll back easily.

thanks in advance for any help.

Mark

Like 0

Like

5 comments

Dear Mark,

All imported records are marked with the import tag, thus you may create a process which will find all imported records and delete them with Delete element. 

Best regards,

Angela

Hi Angela

Thanks for your reply. I have been working through the various sections; Accounts, Opps, Contacts etc. performing data import testing, before we do our full CRM migration. As part of this process, sometimes I find issues with the import and will use the import tag to select the imported records, delete them and re-import once resolved data issue.

However, with Project Tasks I cannot find a clean listing display. It is OK if a project task is not associated with a Project, as that will be listed in the default Project list. Where a project task is associated with a project, it is therefore displayed within a Project in the Task detail tab.

I cannot find anywhere to list all project tasks by import tag to allow such a deletion. Does such a place exist?

thanks

Mark

Mark Roberts,

Project task is a record that can be found in project section. Basically, project ask is an entity of project. 

Best regards,

Angela

Hi

Thanks for your reply Angela. However, I still cannot see a way to list JUST the project tasks.

When I go to Projects, it is just projects displayed and not a list of project tasks. My issue is that when importing complex data, I need a way to undo that import if I find an issue with it and for all other areas I can simply use the tag to select the import data and delete all the records.

If you are able to provide a step by step way to list all project tasks, that would be great!

thanks

Mark Roberts,

You may create lookup based on object "Item of project task resources" to see them separately. 

Best regards,

Angela

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 am following the instructions in the academy page (https://academy.bpmonline.com/documents/technic-sdk/7-13/adding-detail-…) to create an editable list.  When I get to part 2 (Creating a Detail Schema), it says to inherit BaseGridDetailV2 base detail list schema functions, and the picture shows "Base schema - Details with list ( NUI )."  I don't see an option with the NUI in the list, but if I choose the one that is there then I get an error message "Substitution of Modules is not Allowed."  

 

These are the options I have to choose from:

 

I have looked for "BaseGrid" and "base detail list", but there are no options to choose from.  Are these instructions still up to date?

Like 0

Like

2 comments

The instructions said to add a new Module, but I found that it works if I use a "Schema of the Detail View Model with List" instead.  It works fine doing it this way.

Hello Timothy,



Try to choose "Schema of the Detail View Model with List" option when adding a new module instead of "Module" options. It should help.



Best regards,

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

Hi All

 

I have a function that is triggered when Account is changed on Lead.

I use the common code for getting query results:

var recordId = this.get("Id");
var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
    rootSchemaName: "Lead"

and the code to get my query resluts:

esq.getEntity(recordId, function(result) {}

It works fine but not before save.

Before save I bbelieve I don't have the recordId yet and this is why I can't get query results.

Any ideas?

Maybe there is a way to use the Id of the account that was chosen in the lookup and use it ?

Thanks

 

Like 0

Like

5 comments

Dear Oren,

The schema responsible for account in lead section is "LeadAccountProfileSchema". It inherits from "BaseProfileSchema". There is method onLookupResult(), which contains info about selected new account.

You can override this method in the replacing "LeadAccountProfileSchema" module. You can retrieve the new account id like this: selectedRows.getByIndex(0).Id.

Hope you find it helpful!

Regards,

Anastasia

Anastasia Botezat,

Thanks Anastasia

The method "onLookupResult" indid works when new account is selected.

Can you be more specific about getting the account Id ?

If for example I want to query information from the account table, should I use it like this?:

 

var recordId = selectedRows.getByIndex(0).Id;

    

var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {

                    rootSchemaName: "Account"

                    });

esq.getEntity(recordId, function(result){}

Dear Oren,

You can create a custom method, which will contain your ESQ to Account. In the onLookupResult() method, where you retrieve the id you can call custom function with ESQ and pass the retrieved Id as an argument to that method and then use it in the function to set ESQ filter.

onLookupResult: function() {
 //basic logic
 var accId = selectedRows.getByIndex(0).Id;
 this.customESQAccount(accId);
}

 

Regards,

Anastasia

Thanks again Anastasia

There is a problem with your code.

Code Validation says:

selectedRows is not defined

I need to get the Account Id but please note that all is happening before save so I don't have the Lead record Id yet.

How can I get the selected Account Id ?

Oren Diga,

found it.

To acess the lookup value I used the get method as follows:

var recordId = this.get("Account").Id

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
Question

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

Hello,

I have a collection of OpportunityProductInterest objects on a quote, and I would like to immediately call a method of the OpportunityProductInterest class for each of them (to update price and discount information) when I change a particular field on the parent quote.

I have tried using messaging for this, but the broadcast message I send from the Quote object doesn't appear to be received.  Is there a more direct way of calling a method from each instance of a child object, or is there a way to make messaging work for this purpose?

Thank you.

Like 0

Like

6 comments

It's hard to understand what exactly you want to achieve. If you want to update all records after saving, then it's better to use a business process. If you want to update all records after changing a value in a field, then you need to use "dependencies of the calculated field", the "messages" property and the EntitySchemaQuery implementation on client. If you want to calculate all records separately it's better to write a web service. Anyway the task is not clear.

Eugene Podkovka,

The second, more or less.  I received some help from another source earlier and have the basic mechanics set up; however, it seems that the onEntityInitialized function is not being called on the detail object.  (I've put in debugger; and console.log(); statements to confirm, and neither shows up from that function in this object despite working in others.)

Is onEntityInitialized not called from a data grid, or is there another reason?  Is there somewhere else I could register the message, or do I need to update the records manually using an EntitySchemaQuery?

Darian Lewis,

Depends on the moment when you need to run the method. Anyway you still don't explain the task so it's not possible to help you. Please investigate the parents of the detail schema and debug all methods. This way you'll find the one that matches your needs. 

Eugene Podkovka,

Very well, then, in more detail:

We have a labQuote object, which contains a Price List column.  The page for quotes contains a detail showing a data grid of OpportunityProductInterest objects, these being the products on the quote.

Both the price and discount values of each product vary based on the price list of the parent quote; these values are calculated by a method of the OpportunityProductPageV2 object that is called when a Product is selected from the lookup in the data grid.  This part works fine.

What I wish to do is have these values recalculated if the user changes the Price List value of an open Quote, ideally immediately so that the user can see the effect of their changes.  Is it possible to do this through a method of the OpportunityProductPageV2 schema (i.e. the detail object), or is it necessary to make the changes from the quote (i.e. the parent object) manually using an EntitySchemaQuery?

Darian Lewis,

I recommend to create a web service that calculates the needed value for a single record. Additionally the service should be able to update a group of records using a server side EntitySchemaQuery. On the OpportunityProductPageV2 I recommend calling the service and setting up the value on a callback. This way you'll be able to update the product price in run time on the opportunity product page. 

If you need to update a group of records, then you call the same service and then call the reloadDetail (basepagev2) method on the service callback. 

Thank you.

Show all comments

Hi

I'm looking for an method that when triggered, all data is already loaded to the page.

I uses the "onEntityInitialized" and noticed that it is triggered before I have data so I can't do much with it.

Documentation suggest using the "init" or "render" methods but the only examples are not for a replacing client module.

I tried the "init" and "render" with "Hello World!" alert that never appeared.

My question is, is there a method that is triggered after the data is present and thus can be manipulated via JavaScript code ?

Thanks

 

Like 0

Like

3 comments

 

Everything works fine for me, you need to place your code after calling the base method

Post ypu code after this.callParent(arguments);

onEntityInitialized: function() {
	this.callParent(arguments);
	//you code
},
You can also use the method initTabs, called after "onEntityInitialized" trigger

Hello.

The onEntityInitialized method should work well as it is mentioned by Grigoriy. Looking at your message, maybe you want to use the onchange method instead?

https://community.bpmonline.com/questions/onchange-event

Best regards,

Matt

 

Thanks Grigoriy and Matt for your answers.

I think the problem is that when you go to the page from the mini page, the initialization method work in a different manner so to work around the problem I canceled the mini page for now

Show all comments