Hi!

after making any modification in contact schema page, it does not save change. The gif "loading" and nothing else happens.

This kind of problem began to me when I created a new type of page for a type of contact.

I send you a video as example: https://cl.ly/d6b2dbb6b7ce

I receive next error: Unable to cast object of type 'Terrasoft.Core.SchemaManagerItem`1[Terrasoft.Core.ClientUnitSchema]' to type 'Terrasoft.Core.ISchemaManagerItem`1[Terrasoft.Core.Entities.EntitySchema]'.

Any idea where can be the problem?

Waiting for your help, thanks a lot!

Like 0

Like

2 comments

Dear Sarauzo,

Such issue can happen because of many reasons. It is not possible to determine which one in this particular case, therefore, please send us an email to support@bpmonline.com and we will be happy to help you!

Regards,

Anastasia

Anastasia Botezat,

Thanks Anastasia

Show all comments

Hi!

I need emails in contact history will have by default access to some users, but I cannot identify the object to be managed to grant access by default.

In the screen you can see how I have configurec access to email object, but it does not work: https://cl.ly/90ce74590592

Can anyone help me to identify the object?

Thanks a lot in advance!

Like 0

Like

1 comments

Hi,

Since emails may contain personal data its access rights are set up in different way. First of all the [Email] detail is not displayed for contacts who have the “Employee” value specified in the [Type] field. For all other contacts user can see emails if he has access to the mailbox and this can be set up in mailbox settings: http://prntscr.com/o2d47j

Best regards,

Angela

Show all comments

Hi!

I cannot activate approval in customer module. I click on the selection and later go to save and it begins loading, but never finish: https://cl.ly/078b889983ba

Any idea ot what could be the problem?

Thanks in advance!

Like 0

Like

1 comments

Hi!

Have you checked errors in the console? They might store some additional information about this issue. 

Show all comments

Hi, community.

I have a quick question about the change log... If I try to enter the change log I get the following screen:

 

Currently, this product has only sales team licenses distributed... Must we have an enterprise level license to access this section?

 

Thank you!

Like 0

Like

1 comments

Dear Juan,

No licenses are required for this functionality however you need to set it up first https://prnt.sc/nigqfu Here is the example - https://prnt.sc/nigsc2 Here you can see that I've added the account object and chose the Name column that will be logged for any changes. Once the object and columns are added, refresh the page, go to the record and modify it. As the result you will be able to see the changes https://prnt.sc/nigsg0 

More details are here https://academy.bpmonline.com/documents/administration/7-13/setup-log-action-change-log-section

Best regards,

Dean 

 

Show all comments

Hi, community.

We have a client that wants to run bpmonline on older machines and with a low power internet connection... We have noticed that performance suffers particularly when running processes, both from a section (using the run process button) or triggered by a change in stage (using green buttons). A process that normally takes a few seconds can take up to 5 minutes....

Do any of you have experience implementing projects on older hardware and/or low power connections? Is there a minimum requirement for either of these? Do you have any tips for this?

Thank you!

Like 0

Like

2 comments

Dear Juan,

Here are server-side requirements that machine needs to have from hardware and software point of view. Also minimum client-side system requirements can be found here

Best regards,

Oscar

Thank you for your reply, Oscar!

Show all comments

When trying to call a web service from the BPM'Online platform, the process throws the following error: 

we assume that the error is due to the immense size of the JSON that we try to read from the external web service, so that the response would exceed the processing capacity limits of the webservice module of the bpm'online tool.

Our consulate is, if there is a way to increase the data processing limit of the bpm'online web service module in terms of reading the JSON delivered by the external web service.

We estimate that approximately 6 GB of RAM is needed to process the desired volume of data.

Like 0

Like

2 comments

It doesn't seem to be a memory issue. Bpm'online provides up to around 8 GB RAM in critical moments and 4 GB by default. Anyway, If the application consumes more than around 8 GB RAM, IIS restarts it automatically. If you need more resources, please contact your account manager and the limits will be increased. 

It seems like the issue is related to a wrong JSON format. However, since the JSON is huge you'll not be able to debug it. In this case I recommend to create your own web service according to the article by the link below. 

https://academy.bpmonline.com/documents/technic-sdk/7-13/how-create-cus…

This way in case of the exception message you'll be able to create your own logging or debug the service on a local copy of the application. 

Please be aware of the fact that during the integration process that consumes almost all available RAM users might face performance issues. 

Thank you very much for the reply; it was indeed an error of the JSON that was being called, since it contained Null fields that did not correspond.

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

Hi

I'm trying to do something quit simple but it is not working.

On the event of changing the Account in the LEad section, I want to set the PrimaryContact of the Account as a owner of a lead.

My code is like this:

 

onAccountChanged: function() {

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

                    

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

                    rootSchemaName: "Lead"

                    });

                                       esq.addColumn("QualifiedAccount.PrimaryContact.Id", "SalesContact");

                    esq.getEntity(recordId, function(result) {

    if (!result.success) {

        // error processing/logging, for example

        this.showInformationDialog("Data query error");

        return;

    }

    

    this.set("Owner", "SalesContact");

   }, this);

 

When I check the value I got in "SalesContact" I can see the Id, but it won't update the lookup.

What am I missing here ?

 

Like 0

Like

8 comments

It's 

this.set("Owner",result.entity.get("SalesContact"));

Dear Oren,

It is more simple to create a business process that will change owner of Lead on changing of Account in this lead record. So the process will be triggered when the record in "Leads" section is modified and modification is expected in "Account" field. After that you need to read data from this account that was set for lead record. You need primary contact value. And after that you need to use "Modify data" element that will set owner of this lead as value of primary contact taken from "Read data" element. The only minus of this method is that it will be triggered only after saving of lead record. Also you can try the way Jerome has suggested.

Best regards,

Oscar

Jerome BERGES,

Hi Jerome

Thanks for your reply but it's not working.

I checked and the result of: result.entity.get("SalesContact") returns the Id of the record as a string. 

Maybe it has to do with the value I put in the "SalesContact", in this line?:

esq.addColumn("QualifiedAccount.PrimaryContact.Id", "SalesContact");

Maybe I need diferent data type than: QualifiedAccount.PrimaryContact.Id ?

 

 

Oscar Dylan,

Thanks Oscar

A business process can easily work but I need more elegant solution on the client side.

Oren Diga,

In order for the lookup to display the object you've set, it needs to be an object that contains both a value (the ID) and a displayValue (the text Name). 

Modify your esq to retrieve both the QualifiedAccount.PrimaryContact.Id as well as the QualifiedAccount.PrimaryContact.Name. Then, set it in the lookup like this: 

this.set("Owner", {value: result.entity.get("SalesContactId"), displayValue: result.entity.get("SalesContactName")});

 

Ryan Farley,

It's working !!!!

Thanks a lot

Ryan Farley,



How do we set Guid.Empty value to a lookup or remove the lookup data value in a record in server-side scripting?



Say., Owner is a lookup - Filled with a value as "Creatio Account"

There is a custom logic that runs and needs to update this Owner lookup to empty. How to set a Guid.Empty to a lookup?



BR,

Bhoobalan Palanivelu.

Bhoobalan Palanivelu,

You can use the Update class:

var update = new Update(UserConnection, "Contact")
        			.Set("OwnerId", Column.Parameter(null, "Guid"))
        			.Where ("Name").IsEqual(Column.Parameter("Name2"));
    		var cnt = update.Execute();

 

Show all comments

Hi

 

Usually I use the Handler method when I want to update field value depending on another field value when it changes.

 

For example:

dependencies: [

columns: ["Amount", "PaymentAmount"], 

methodName: "Calculate"    

 

The function "Calculate" will be triggered when columns "Amount" or "PaymentAmount" are changed.

 

My question is, how can I trigger a function when a change uccur on a detail, for example in the Products Details.

How can I activate the "Calculate" function when a change was made in the detail, for example, in the quantity of products?

 

Thanks,

Like 0

Like

2 comments

You can send a message via sandbox from the detail to the edit page to trigger the function. On the detail, override the onSaved function and send the message. On the edit page subscribe to the message and call your Calculate function. 

On the detail page:

messages: {
    "MyMessage": {
        mode: Terrasoft.MessageMode.BROADCAST,
        direction: Terrasoft.MessageDirectionType.PUBLISH
    }
},
methods: {
    onSaved: function(response, config) {
        this.sandbox.publish("MyMessage", null, [this.sandbox.id]);
        this.callParent(arguments);
    }
}

On the edit page with the Calculate message:

messages: {
    "MyMessage": {
        mode: Terrasoft.MessageMode.BROADCAST,
        direction: Terrasoft.MessageDirectionType.SUBSCRIBE
    }
},
methods: {
    init: function() {
        this.callParent(arguments);
 
        this.sandbox.subscribe("MyMessage", function(arg) {
            this.Calculate();
        }, this, [this.sandbox.id]);
    }
}

Ryan

Ryan Farley,

Thanks a lot Ryan !

Show all comments

Hi all,

We have a custom section, which contains a contact field (label = Member): http://prntscr.com/luc7de

In the list view, this contact is clickable (clicking the contact name will redirect user to the contact page itself)

Now we want to make this field not clickable for specific user role. They are allowed to see the contact name, but thay are not allowed to click to the contact page where all info can be seen.

I tried this in the 'UsrReservations1Section'-page behind the 'onEntityInitialized'-method:

$("a").each(function() {

    var linkId = $(this).attr("id");

    var href = $(this).attr("href");

    var n = href.indexOf("ContactPage");

    if (n > 0) {

        document.getElementById(linkId).style.cursor = "default";

        document.getElementById(linkId).style.pointerEvents = "none";

        document.getElementById(linkId).style.color = "black";

    }

});

But this does not work...

Any ideas or advice would be appreciated!

Kind regards,

Vincent

Like 0

Like

3 comments

Hello Vincent,



Here is an example how to disable "Account" filed on Contact section.



Best regards,

Alex

define("ContactSectionV2", ["GridUtilitiesV2"], function(GridUtilities) {
	return {
		entitySchemaName: "Contact",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
		methods: {
			prepareResponseCollection: function(collection) {
				this.callParent(arguments);
				collection.each(this.removeLink, this);
			},
 
			removeLink: function(item) {
				var AccountId = item.values.Account.value;
				if(AccountId != undefined) { 
					item.customStyle = {"pointerEvents": "none"} 
				}
 
			}
		}
	};
});

 

Hi Alex,

 

Thank you for the feedback.

I slightly modified your code, since it would only be applicable for one specific user:

            prepareResponseCollectionItem: function(collection) {

                this.callParent(arguments);

                var currentUser = Terrasoft.SysValue.CURRENT_USER.value;

                if (currentUser === "ff64c809-3ff0-4d10-b096-a9c351db37cb") {

                    collection.each(this.removeLink, this);

                }

            },

            removeLink: function(item) {

                var MemberId = item.values.UsrMember.value;

                if(MemberId !== undefined) { 

                    item.customStyle = {"pointerEvents": "none"};

                }

            }

But I am getting following error in the console: http://prntscr.com/lvylzy

--> message: TypeError: n.each is not a function

Any idea what went wrong?

 

Kind regards,

Vincent

Vincent Tahon,

Unfortunately, it`s hard to say what exactly goes wrong. You should debug your code via devtools. At first you should check where exception is raising. Then check the value and type of "n" variable.

Basically, It seems that "each" function doesn`t exist in "n" object.



How to debug client code:

https://academy.bpmonline.com/documents/technic-sdk/7-13/client-code-de…

Best regards,

Alex

 

Show all comments