I have a detail that can have long texts, as shown on the picture:

Is it possible to make the long text collapsible, so that it is shown only when user click's it intentionally? If not, do you have other ideas about how to present this data?

Like 0

Like

2 comments

Hello Carlos!



Unfortunately, we have no out-of-the-box functionality that you required. You can achieve it only via development.



The idea is to create custom css that will hide long text and js method that will show it when you clicked on a row. FYI: method that triggers when you click on a row is called "onActiveRowAction". I attached useful links that might help you below.



Work with row selection :https://community.bpmonline.com/articles/add-button-active-row-detail



Custom css: 

https://community.bpmonline.com/questions/how-add-custom-style-control-…

https://academy.bpmonline.com/documents/technic-sdk/7-12/advanced-setti…



Best regards,

Alex

Alex_Tim,

Thank you, it should work.

EDIT: I think I managed to do that with only CSS. I added this rule to my detail:

 

#UsrCommunicationDetailDetailControlGroup > div > div.grid-listed-row:not(.grid-row-selected) div {
	white-space: nowrap;
	text-overflow: ellipsis;
	overflow: hidden;
}

 

Show all comments

In my Lookup it must show only those contacts who have Specific role.

Example:

Contact-1 , Contact-2 are present

Contact-1 Have Role-1 and contact-2 will have Role-2

Lookup must show only Contacts with Role-1 . 

If not possible Can we have workaround for this .

 

In my Example it will show all contacts who are system users.

for these i want to filter collection based on role.

I tried this Please let me know the changes needed.

"lookupListConfig": {

                    // Array of filters used for the query that forms the lookup field data.

                    "filters": [

                        function() {

                            var filterGroup = Ext.create("Terrasoft.FilterGroup");

                            // Adding the "IsUser" filter to the resulting filters collection.

                            // The filter provides for the selection of all records in the Contact core schema

                            // to which the Id column from the SysAdminUnit schema is connected, for which

                            // Id is not equal to null.

                            filterGroup.add("IsUser",

                                Terrasoft.createColumnIsNotNullFilter("[SysAdminUnit:Contact].Id"));

                                                        // Adding the "IsActive" filter to the resultant filters collection.

                            // The filter provides for the selection of all records from the core schema.

                            // Contact to which the Id column from the SysAdminUnit schema, for which

                            // Active=true, is connected.

                            filterGroup.add("IsActive",

                                Terrasoft.createColumnFilterWithParameter(

                                    Terrasoft.ComparisonType.EQUAL,

                                    "[SysAdminUnit:Contact].Active",

                                    true));

                            return filterGroup;

                        }

                    ]

                }

            }

Like 0

Like

1 comments

Dear Sushma,

In order to check whether a contact has particular role you need to create a query to the SysAdminUnitInRole table. Basically setting up the filter to check whether current user has the needed role in SysAdminUnitInRole table.

Please modify your filter settings to read from correct table. Also, please see the article below, which describes how to create queries to the database. (particularly Definition of root schema. Creation of paths to columns against root schema. Examples.)

https://academy.bpmonline.com/documents/technic-sdk/7-13/use-entitysche…

Regards,

Anastasia

Show all comments

Hi Community,

Good Day

How can I  dynamically Hide/Unhide options under Print button based on some conditions (example based on value of some lookup field).

 

 

Like 1

Like

5 comments

Dear Fulgen,

In order to achieve such task you need to add custom code customization. Please see the instruction below, hope you will find it helpful. The realization should be added to the page schema.

1. Bind options' visibility on the virtual attribute. Set it to false by default:

"setFieldVisibility": {
    dataValueType: Terrasoft.DataValueType.BOOLEAN,
    type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
    value: false
}  

2. In onEntityInitialized method call your custom method, which will be setting the attribute value to true or false based on filed value:

onEntityInitialized: function() {
  this.callParent(arguments);
  this.setOptionsVisibility();
}

3. Add custom method to check the value of the filed on the page and set visibility based on it.

In order to change dynamically, please add another attribute on the page, where based on the particular field change the method is triggered and changing the visibility:

"OnLookUpChange":{
    "dependencies":[
        {
           "columns":["UsrLookup1"],
           "methodName":"setOptionsVisibility"
        }
      ]
}

Regards,

Anastasia

 

 

Fulgen,

There is a marketplace solution that might do what you're after: https://marketplace.bpmonline.com/app/printable-forms-filtering-bpmonli…

Anastasia Botezat,

Hi Anastasia, Thanks for your answer.



Now I can already handle event based on the value of lookup thru:

"OnLookUpChange":{
    "dependencies":[
        {
           "columns":["UsrLookup1"],
           "methodName":"setOptionsVisibility"
        }
      ]
}

But, now how can i get the id of each printables then set it to hidden/unhidden.

try this function to hide/unhide options by Id

 

            preparePrintFormsMenuCollection: function (printForms) {

                this.callParent(arguments);

                debugger;

    //    var stage = this.get("Stage");

        printForms.eachKey(function (key, item) {

            if(key !="c1af36b1-9550-46c4-8a2c-ff6450eed242".toLowerCase())

            {

                item.set("Visible", false);

            }

        }, this);

    }

 

put it in the method property 

Dear Fulgen,

Please use the code, which was provided by Mohamad. This is an overridden basic method for printable collection, which sets properties for button options. In order to check the Id of needed printables, you can right-click on the printable and inspect the item. Its Id will be indicated in the HTML id property.

In case you will have any further question, please let us know.

Regards,

Anastasia

Show all comments

Hi Community,

How can I filter the detail based on the selected look up field. The list in detail will depend on the selected value in the look up so every time the user will change the value of look up the detail list will change also.

 

Thanks

Like 0

Like

2 comments

Dear Fulgen,

Hope you are doing great.

Unfortunately, there are no any basic tools in the system to implement this idea, however there is one solution. You can make up a business processes that will trigger once you modify some lookup data on a page. For instance, once you change the account type to some particular one, the business entity detail will also be changed according to the account type.

Hope this solution will help you. 

Best regards,

Dean 

I can bring Contact's Communication options to Lead's detail by binding Communication options.Contact to Lead.Contact field. Maybe you want similar behavior?

Show all comments

Is it possible to change controls' layout dynamically? Also: is it possible to add controls dynamically?

Like 0

Like

8 comments

Dear Carlos,

Could you please let us know more details on your question? What goal do you want to achieve? Thank you so much beforehand.

Looking forward to your clarification.

Regards,

Dean

I have two fields: object type chosen from a lookup (A) and object type written manually by some user in a text field (B). There should be only one of the fields A and B filled up at one time and I only want to show the one currently filled up. What I tried to do, is this layout and setting the visible property conditionally:

| A | some other field |
 
| B |

What I tried to achieve is:

| A | some other field | 
or
| B | some other field |

What I got:

| A | some other field | 
or
| some other field |
| B |

 

Dear Carlos,

Thank you for the reply. 

You can achieve this result by creating 2 business rules. Here is the example: On the Account page you have two fields 'Also known as' and 'Code' https://prnt.sc/lnngw2. You can create two business rules, the conditions are as follows: https://prnt.sc/lnnixz and https://prnt.sc/lnnjrt

Thus, you create to conditions that say - 'if one field is filled it, another one is not visible'. The results are in the pictures: http://prntscr.com/lnnm7t and http://prntscr.com/lnnkp4

Hope this solution will help you out.

Best regards,

Dean

Dean Parrett,

The problem is not to hide the fields. The problem is that when I hide the field A some other field on the right takes its place. I would like the field B to take place of A.

Carlos Zaldivar Batista,

If only one of the two fields will be displayed at a time, you can edit the page to have both controls occupy the same space (have the same row & column values). Technically, both controls will be in the exact same spot with only one showing at a time.

Ryan

Dear Carlos,

Yoг can also check the following post, it might help you to implement your task: https://community.bpmonline.com/questions/alignment

Ryan Farley,

Thank you, this seems to work. The bad part is that if I save the page using the designer the row and column settings return to the previous state. I'll have to remember to set them up again every time I use it.

Carlos Zaldivar Batista,

That is good to know, I wasn't aware the designer changed that back. I'll have to watch out for that.

Ryan

Show all comments

What is the correct way to perform the query in JSON to obtain the records that start with the letter "Y"?

The next JSON get the columns GivenName, MiddleName and Surname from "Contact":

{
    "RootSchemaName":"Contact",
    "OperationType":0,
    "Columns":{
        "Items":{
            "GivenName":{
                "Expression":{
                    "ExpressionType":0,
                    "ColumnPath":"GivenName"
                }
            },
            "MiddleName":{
                "Expression":{
                    "ExpressionType":0,
                    "ColumnPath":"MiddleName"
                }
            },
            "Surname":{
                "Expression":{
                    "ExpressionType":0,
                    "ColumnPath":"Surname"
                }
            }
        }
    },
    "AllColumns":1
}

And return all que records from "Contact".

When I apply the filter GivenName = Yxyxyx

{
    "RootSchemaName":"Contact",
    "OperationType":0,
    "Columns":{
        "Items":{
            "GivenName":{
                "Expression":{
                    "ExpressionType":0,
                    "ColumnPath":"GivenName"
                }
            },
            "MiddleName":{
                "Expression":{
                    "ExpressionType":0,
                    "ColumnPath":"MiddleName"
                }
            },
            "Surname":{
                "Expression":{
                    "ExpressionType":0,
                    "ColumnPath":"Surname"
                }
            }
        }
    },
    "AllColumns":1,
    "Filters":{
        "RootSchemaName":"Contact",
        "FilterType":1,
        "ComparisonType":3,
        "LeftExpression":{
            "ExpressionType":0,
            "ColumnPath":"GivenName"
        },
        "RightExpression":{
            "ExpressionType":2,
            "Parameter":{
                "DataValueType":1,
                "Value":"Yxyxyx"
            }
        }
    }
}

Returns all records with the name GivenName equal to "Yxyxyx"

But an error returned when I sent the query GivenName starts with "Y", like this:

{
    "RootSchemaName":"Contact",
    "OperationType":0,
    "Columns":{
        "Items":{
            "GivenName":{
                "Expression":{
                    "ExpressionType":0,
                    "ColumnPath":"GivenName"
                }
            },
            "MiddleName":{
                "Expression":{
                    "ExpressionType":0,
                    "ColumnPath":"MiddleName"
                }
            },
            "Surname":{
                "Expression":{
                    "ExpressionType":0,
                    "ColumnPath":"Surname"
                }
            }
        }
    },
    "AllColumns":1,
    "Filters":{
        "RootSchemaName":"Contact",
        "FilterType":1,
        "ComparisonType":16,
        "LeftExpression":{
            "ExpressionType":0,
            "ColumnPath":"GivenName"
        },
        "RightExpression":{
            "ExpressionType":2,
            "Parameter":{
                "DataValueType":1,
                "Value":"Y"
            }
        }
    }
}

The error return is:

{
    "responseStatus": {
        "ErrorCode": "SqlException",
        "Message": "Incorrect syntax near '@P1'.",
        "Errors": []
    },
    "rowsAffected": -1,
    "nextPrcElReady": false,
    "success": false
}

 

And, How do you filter two or more columns?

Like 0

Like

2 comments

Try changing the ComparisonType from:

"ComparisonType":16

To 

ComparisonType":9

9 = STARTS_WITH (16 = "NOT_EXISTS)

https://academy.bpmonline.com/api/jscoreapi/7.12.0/index.html#!/api/Ter…

Thank you.

It worked

Show all comments

Hi everybody,

I would like to know if there is the possibility to change the "Desktop Agents" section title into something else.

Thank you

Like 0

Like

1 comments

Dear Stefano, 

Unfortunately, the only way to change this using user methods would be to change all records in Translation section with default translation equal to Agent Desktop (http://prntscr.com/lnpvvw)

Best regards,

Dennis

Show all comments

Hi Community,

How can i make my detail editable directly on grid without opening another form to edit it?

Thanks

Like 0

Like

2 comments

Hello,

This article will provide the details you need to make the detail editable in the grid itself. https://academy.bpmonline.com/documents/technic-sdk/7-13/adding-detail-…

Ryan

Thanks Ryan, this example is what I am looking for.

Show all comments

Is it possible to search parts of names in lookup fields? If I have a record named 'XYZ 123' and I search for '123', I get no results.

Like 0

Like

2 comments

Hello.

You can use the '%' symbol in order to search for the records using only parts of words. In your case it would be %123.

From our side, we have registered a suggestion for our R&D team in order to enhance the search functionality in the upcoming releases.

Best regards,

Matt

Matt Watts,

Ok, thanks. I see it works only in the window mode though, not in dropdowns.

Show all comments

Hi,

When I am trying to send request from BPM (http://localhost:82) to external web app (https://localhost:58733) via 'call web service' system action I am getting an error:

"system.net.webexception could not establish secure channel for ssl/tls ---> system.security.authentication.authenticationexception the remote certificate is invalid"

What I am doing wrong? 'Call Web Service' system action should work with SSL/TLS without any problem?

Best regards,

Tom

 

Like 0

Like

2 comments

I've used Call Web Service with SSL without issue. That error is a general .NET error that usually relates to issues with the certificate and likely means one of the following is true:

  • The certificate doesn't match the URL.
  • The certificate is self-signed and not added as a trusted certificate.
  • The certificate is expired.
  • The certificate is signed by a root certificate that's not installed on your machine.

If the cert is ok, and since this is a local install, you can try going to the external URL in IE (on the server where Bpm'online is installed), click the lock icon then "View Certificates", then click the button to "Install Certificate" (be sure you select to install on "Local Machine" and not "Current User"

Tom,

Please use this article to troubleshoot the issue https://blogs.msdn.microsoft.com/friis/2017/10/10/troubleshooting-tls-s… and also Ryan is right. The reason is probably in certificate so that's why you need to check it firstly.

Best regards,

Oscar

Show all comments