How do I delete a column from an Edit Page? We have sections with unused or accidentally added columns that we want to clean up and not have visible in Edit Page

Like 0

Like

1 comments

Hello Jeremy, 

 

The column can be deleted directly from the Section Wizard. 



If you have different data on UI and in Section Wizard, for example the column is visible on UI on the page but not available in Section Wizard (or vice versa), you'd need to check the value of the "Current package" system setting and set it to Custom, such issue may occur due to incorrect dependencies of your packages.

The "Custom" package is the very last package in the hierarchy, it "contains the functionality" of all other packages, so the mentioned issue should not occur once it's set as current package.



If the issue persists despite the provided recommendations, please contact the support team at support@creatio.com so we could proceed with investigation.



Best regards,

Anastasiia

Show all comments

Hi,

 

I would like to add a hyperlink (titled "Details" below) in edit page of a record. When clicking the hyperlink it should redirect to another page in a new tab.

Right now clicking "Details" the page opens in new tab. My issue is that along with the required page, a new tab opens at https://{sitename}/0/Nui/ViewModule.aspx as well. Thus 2 new tabs are opened when I click on the link now.

Below is what I have (Today's agenda is not a detail; it's a control group):

Below is my code:

methods:{

onDashboardDetailsButtonClick:function(){

                let url = ;

                window.open(url, '_blank');

            }

},

diff: /**SCHEMA_DIFF*/[

            {

                "operation": "insert",

                "name": "DashboardDetails",

                "values": {

                    "layout": {

                        "colSpan": 7,

                        "rowSpan": 1,

                        "column": 7,

                        "row": 2,

                    },

                    "itemType":Terrasoft.ViewItemType.HYPERLINK,

                    "enabled": true,

                    "caption":"Details",

                    "click": {"bindTo": "onDashboardDetailsButtonClick"},

                },

                "propertyName": "items",

                "index": 2

            }

]

Can you please tell me what I'm doing wrong and how to resolve this?

Like 0

Like

4 comments
Best reply

Hello Nirupama,

 

Terrasoft.ViewItemType.HYPERLINK item type also has an addtional property "href" and if it's not filled in by default it's automatically filled in with the base application url (https://somesite.creatio.com). You can also see it when hovering the mouse to the link or copy the link adddress from this element. As a result when you click on the item your custom URL is opened and additionally the default URL of the website.

 

If it's possible you should try setting your custom URL to the "href" property like:

getCustomURL: function() {
				return "https://www.wikipedia.org/";
			}
...
{
                "operation": "insert",
                "name": "DashboardDetails",
                "values": {
                    "layout": {
                        "colSpan": 7,
                        "rowSpan": 1,
                        "column": 7,
                        "row": 2,
                    },
                    "itemType":Terrasoft.ViewItemType.HYPERLINK,
                    "enabled": true,
                    "caption":"Details",
					"href": {"bindTo": "getCustomURL"}
                },
                "propertyName": "items",
 
                "index": 2
            },

 

Hello Nirupama,

 

Terrasoft.ViewItemType.HYPERLINK item type also has an addtional property "href" and if it's not filled in by default it's automatically filled in with the base application url (https://somesite.creatio.com). You can also see it when hovering the mouse to the link or copy the link adddress from this element. As a result when you click on the item your custom URL is opened and additionally the default URL of the website.

 

If it's possible you should try setting your custom URL to the "href" property like:

getCustomURL: function() {
				return "https://www.wikipedia.org/";
			}
...
{
                "operation": "insert",
                "name": "DashboardDetails",
                "values": {
                    "layout": {
                        "colSpan": 7,
                        "rowSpan": 1,
                        "column": 7,
                        "row": 2,
                    },
                    "itemType":Terrasoft.ViewItemType.HYPERLINK,
                    "enabled": true,
                    "caption":"Details",
					"href": {"bindTo": "getCustomURL"}
                },
                "propertyName": "items",
 
                "index": 2
            },

 

Thanks, Oscar! That works!

 

As a follow up, is there a way to make the integer value in the above screenshot a hyperlink, so that instead of providing a separate link like "Details", they can on the value and that redirects them to the details page?

Nirupama Mohan Latha,

 

As for the integer field - I am not sure, but you can try converting it into a string column and add the logic as was described here.

Thank you!

Show all comments

Hi community,

How may I hide the close button in the auto-generated page?

We use the Sales Enterprise Cloud edition.

 

Thank you!

Like 0

Like

1 comments
Best reply

Hello Andrew!



It's possible to hide "Close" button by applying custom CSS style to the AutoGeneratedPageV2 schema. You will need to find the correct selector for "Close" button in AutoGeneratedPageV2.

This article describes how to add custom CSS: https://community.creatio.com/articles/how-add-or-edit-css-style



Best regards,

Yuliya Gritsenko

Hello Andrew!



It's possible to hide "Close" button by applying custom CSS style to the AutoGeneratedPageV2 schema. You will need to find the correct selector for "Close" button in AutoGeneratedPageV2.

This article describes how to add custom CSS: https://community.creatio.com/articles/how-add-or-edit-css-style



Best regards,

Yuliya Gritsenko

Show all comments

Hello!



We have such a situation that numbers of notifications in CTI panel appears, but no notification is shown here. Or quantity of notifications differs from red number shown. And this situation is for many users.



How can be resolve this issue?



Thank you!



Like 0

Like

1 comments

Hello Vladimir,

 

Based on the shared information, I can assume that the issue may relate to the Visa object.

You may have a record in the SysModuleVisa table (this table stores the Visa's configuration) which refers to a schema that does not exist.

Due to this fact, that there is a reference to a scheme that does not exist, we cannot count the number of Visas. Therefore, the notification counter does not work.

You can find the mentioned record using this script:

select smv.* from SysSchema ss

right join 

SysModuleVisa smv on smv.VisaSchemaUId=ss.[UId]

where ss.id is null

 

If the solution provided above doesn't solve your issue, please contact the Creatio support team via support@creatio.com, so we could proceed with investigation.

 

Best regards,

Anastasiia

Show all comments

Hello Community,

I have created a button in a MiniPage which via the ProcessModuleUtilities executes a business proccess.

 

This business process has simple logic, its reponsible for opening a preconfigured page.

 

I want that when clicking the button, the preconfigured page is opened in a new Browser Window

How can that be achieved

Sasori

Like 0

Like

5 comments

Hello Sasori,

 

There is no option to achieve the task required in your case unfortunately even using NetworkUtilities or message sending from the server to the client. I've registered this as a suggestion to our core R&D team so they could add this feature in the next application releases. Thank you for helping us in making the application better!

Hello Oleg,

Thank you for you quick reply.

 

As a workaround for the solution of this businnes need can be the answer to this community post that i have created

https://community.creatio.com/questions/open-city-edit-page-new-browser…

I have managed to open the CityPageV2 in a new tab

 

openNewTab: function () {
				var requestUrl = ["http://localhost:9004/0/Nui/ViewModule.aspx#CardModuleV2/CityPageV2/edit/"]
				 window.open(requestUrl, '_blank');
			}

But my last problem is that i want to open the page in ADDMode not EditMode. Shpuld i modify the requestURL ?

Sasori Oshigaki,

 

this is what I was talking about - there is no way to open a preconfigured page inside the process since it has no particular link, it's a business process page. When you add a new record to the city pay attention to the link in the browser and you will see that it's not changed.

Oleg Drobina,

When i click new from the Modal Window

I am redirected to the CityPage in ADD mode

If I mimic this behaviour from that custom button that I have Created, and place it in a new Browser Window, I can achieve my business need. 

I know that the responsible method is getSelectionControlsConfig in LookupPageViewGenerator schema.

But can you provide with a similar example ? Or a workaround to achieve my business need ?

If you still think that there no way of doing this, i will interrupt my research.

Your help is much appreciated Oleg.

Thank you

Oleg Drobina,

I managed to solve the business need via a workaround. Thank you 

Show all comments

Hello Creatio Community,

When clicking a button, we want to be directed on the City Edit page on a new broswer window, having the possiblity to add e new City.

How can this be achieved ?

Sasori

Like 0

Like

4 comments
Best reply

Hello Sasori,

 

This cannot be achieved in the current application version since there is no direct link to call on creating a new record (we can only pass the URL to the window.open). A new record is created via the addRecord method that in the final steps call the openCardInChain method that passes the operation: ConfigurationEnums.CardStateV2.ADD. This cannot be done with opening the new window. But I will create a suggestion for our R&D team to add this funcitonality in one of the future releases. Thank you for helping us in making the app better! 

Hello Sasori,

 

This cannot be achieved in the current application version since there is no direct link to call on creating a new record (we can only pass the URL to the window.open). A new record is created via the addRecord method that in the final steps call the openCardInChain method that passes the operation: ConfigurationEnums.CardStateV2.ADD. This cannot be done with opening the new window. But I will create a suggestion for our R&D team to add this funcitonality in one of the future releases. Thank you for helping us in making the app better! 

Thank you Oleg !

hello there, is this functionnality available now with the new version release ? thanks a lot, Olivia

Capdevielle Olivia,

 

Hello,

 

This suggestion I registered is in the "Accepted" status so we expect this feature to be added in the app. Once it's developed and implemented we will notify about it in the Release notes of the version.

Show all comments

Hi community,

 

I read the article (https://community.creatio.com/questions/add-action-detail) in Creatio community and added a button in the action menu of our order product detail.

But the visibility seems not working. May you help me to adjust the code below? What I

need is to show the button when some detail records are selected, and hide the button otherwise.

 

                     addToolsButtonMenuItems: function(toolsButtonMenu) {

                             this.callParent(arguments);

                             toolsButtonMenu.addItem(this.getButtonMenuSeparator());

                             toolsButtonMenu.addItem(this.getButtonMenuItem({

                               Caption: this.get("Resources.Strings.UsrBtnBatchUpdate"),

                               Click: {"bindTo": "OnButonClick"},

                               Visible: {"bindTo": "IsSelectRecord"}

                             }));

                     },

 

Thanks a lot!

Like 0

Like

2 comments
Best reply

Hi Andrew,

 

Please use the following approach:

methods: {
				addToolsButtonMenuItems: function(toolsButtonMenu) {
					this.callParent(arguments);
					toolsButtonMenu.addItem(this.getButtonMenuSeparator());
					toolsButtonMenu.addItem(this.getButtonMenuItem({
						Caption: {"bindTo": "Resources.Strings.CustomButton"},
						Click: {"bindTo": "onButonClick"},
						Visible: {"bindTo": "getCustomButtonVisible"},
					}));
				},
				getCustomButtonVisible: function() {
					return this.isSingleSelected();
				},
				onButonClick: function() {
					console.log("Clicked!");
				}
			},

there is no IsSelectRecord base attribute that will make the button visible or invisible, thus there are basic methods to make "Edit" or "Copy" buttons enabled\disabled so I've used the logic behind them as an example to make the custom button visible.

Hi Andrew,

 

Please use the following approach:

methods: {
				addToolsButtonMenuItems: function(toolsButtonMenu) {
					this.callParent(arguments);
					toolsButtonMenu.addItem(this.getButtonMenuSeparator());
					toolsButtonMenu.addItem(this.getButtonMenuItem({
						Caption: {"bindTo": "Resources.Strings.CustomButton"},
						Click: {"bindTo": "onButonClick"},
						Visible: {"bindTo": "getCustomButtonVisible"},
					}));
				},
				getCustomButtonVisible: function() {
					return this.isSingleSelected();
				},
				onButonClick: function() {
					console.log("Clicked!");
				}
			},

there is no IsSelectRecord base attribute that will make the button visible or invisible, thus there are basic methods to make "Edit" or "Copy" buttons enabled\disabled so I've used the logic behind them as an example to make the custom button visible.

Oleg Drobina,

Thank you for your guid!. It works for a single detail record selected, like the behavior of "Edit" or "Copy".

What I want is the like the behavior of "Delete", and I found the solution in the academy.

In summary, I just adjusted the code below to approach the behavior like "Delete" action.

 

getCustomButtonVisible: function() {

    var selectedRows = this.get("SelectedRows");

    return selectedRows ? (selectedRows.length > 0) : false;

},

 

Thank you!

Show all comments

Hello Creatio community

Here is the Scenario

1- Open Account Mini Page

2- Open Modal Window of City/Click New

3- City Edit Page will open in background, meanwhile the AccountMiniPage is still open

 Is it possible that when doing step 2,  the City Edit page appears , and that after adding a city and clicking Save, we are redirected to the MiniPage ?

Kind regards

Sasori

 

Like 0

Like

1 comments

Hello,

 

Thank you for your report.

As for now, the lookups on the mini pages could be only as a dropdown list.

We have already registered the bug for our R&D team to fix this functionality in further releases. I will assign your case to this project in order to increase its priority.

Show all comments

Hi Team,

 

We have a scenario to display only few products when the add (+) icon is clicked in the Product detail of Order section. When the add record is clicked a product catalogue is displayed.



Required Filter Scenario:

All the products that belong to a particular price list alone should be shown in the product catalogue list along with additional columns in the Product Price table is also taken into consideration for the filter.

 

Only Products that match the below conditions should be displayed in the list,

  1. Particular Price List.
  2. Particular column value in Product Price (Custom Column ex: UsrProductGrade).
  3. Particular column value in Product Price (Custom Column ex: UsrIsActive).

 

Required Default Value in UOM Lookup:

When the product catalogue page is opened the UOM (Unit of Measure) field should be set with a particular lookup value by default available in that lookup & set to locked (not editable).

 

Filter out/Remove/Hide all product's base prices in the product catalogue

Don't want any base price in the product price and not needed to show this record in the product catalogue.

 

Below is the setup for the above case:

Step 1: Filter applied in ProductSelectionSchema (Not Working)

 

getProductInBasePriceListEsq: function(basePriceList) {
			var basePriceListProductEsq = this.getBaseESQ("Product");
 
			var customPriceList = Terrasoft.SysSettings.cachedSettings.UsrcustomPriceList;
 
			var productPricePrefix = "[ProductPrice:Product:Id].";
			basePriceListProductEsq.rowCount = 40;
			var productGrade = this.sandbox.publish("productGradeMessage", null, "productFilterGradeMessage");
 
			basePriceListProductEsq.addColumn("Price", "ProductPrice");
			basePriceListProductEsq.addColumn(productPricePrefix + "Price", "Price");
			basePriceListProductEsq.addColumn(productPricePrefix + "Currency", "Currency");
			basePriceListProductEsq.addColumn(productPricePrefix + "Tax", "Tax");
			basePriceListProductEsq.addColumn(productPricePrefix + "Tax.Percent", "DiscountTax");
			basePriceListProductEsq.addColumn(productPricePrefix + "PriceList", "PriceList");
			basePriceListProductEsq.addColumn(productPricePrefix + "UsrProductGrade", "UsrProductGrade");
			basePriceListProductEsq.addColumn(productPricePrefix + "UsrIsActive", "UsrIsActive");
 
			//Additional Filters for Grade and Active product
			basePriceListProductEsq.filters.addItem(this.Terrasoft.createColumnFilterWithParameter(
				this.Terrasoft.ComparisonType.EQUAL, productPricePrefix + "PriceList.Id", customPriceList));	
			basePriceListProductEsq.filters.addItem(this.Terrasoft.createColumnFilterWithParameter(
				this.Terrasoft.ComparisonType.EQUAL, productPricePrefix + "UsrProductGrade", productGrade.value));
			basePriceListProductEsq.filters.addItem(this.Terrasoft.createColumnFilterWithParameter(
				this.Terrasoft.ComparisonType.EQUAL, productPricePrefix + "UsrIsActive", true));
 
			this.applyAdditionalFilters(basePriceListProductEsq);
			this.initializePageableOptions(basePriceListProductEsq);
			basePriceListProductEsq.filters.addItem(
				this.Terrasoft.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.EQUAL,
					"IsArchive", false));
			return basePriceListProductEsq;
		},

 

Step 2:  Made the value "Base" inactive from pricelist lookup (still all the products base price list is shown).



 

None of the filters applied is working. Instead, it shows the products that are matched with new pricelist value in the pricelist lookup for other products which doesn't has new value it takes the base price list and displays.



Any insight on this would be highly appreciated!

 

 

BR,

Bhoobalan Palanivelu.

Like 0

Like

8 comments

Hello Bhoobalan,

 

Maybe it's much easier to modify the logic of the onGridDataLoaded method in the ProductSelectionSchema module and modify the final gridData collection that will be displayed? When the grid data is loaded in the context of execution of this method you can check all records loaded to this selection page one by one and check whether they have the needed price list (and if so leave it in the grid data, othewise remove this record from grid data) and also you can apply modifications to such records (like setting the default unit of measure). Because creating custom ESQ that is asynchronous can result in inconsistent behavior and also to errors when loading the grid.

Oleg Drobina,

 

It would be of great help if you could assist with a simple sample for this case in the Product selection schema.



And how to set a default value for a Unit Of Measure field and make it locked?



BR,

BBhoobalan Palanivelu.

Bhoobalan Palanivelu,

 

to lock the "Unit Of Measure" column you need to override the getEditableColumns method in the ProductSelectionSchema module. For example like in the example below:

getEditableColumns: function() {
				let parentColumns = this.callParent(arguments);
				if (this.Terrasoft.isCurrentUserSsp()) {
					parentColumns = this.Terrasoft.without(parentColumns, "Price");
				}
				parentColumns = this.Terrasoft.without(parentColumns, "Unit");
				return parentColumns;
			},

As a result you won't be able to modify the Unit Of Measure" column.

 

As for settings the removing some results from the grid: for example I have two products in the selection window: one has the price of 900 and another one has the price of 100. I want to remove the product with the price that is less or equal 100. To do so we override the onGridDataLoaded method in the following manner:

onGridDataLoaded: function(response) {
				if (!response.success || response.queryResults.length === 0) {
					return;
				}
				var dataCollection = this.Ext.create("Terrasoft.Collection");
				this.prepareResponseCollection(dataCollection, response);
				var lastValue = null;
				var gridData = this.getGridData();
				var canLoadData = false;
				for (var i=0; i < dataCollection.getItems().length; i++) {
					var price = dataCollection.getItems()[i].values.Price;
					if (price <= 100) {
						dataCollection.removeByIndex(i);
					}
				}
				if (dataCollection.getCount()) {
					var lastItemIndex = dataCollection.getCount() - 1;
					var lastItem = dataCollection.getByIndex(lastItemIndex);
					var products = gridData.collection.filterBy(
						function(res) {
							var resId = res.get("RealRecordId");
							return resId === lastItem.get("RealRecordId");
						}
					);
					if ((products.length <= 0)) {
						lastValue = lastItem.get("Name");
						canLoadData = true;
					}
				}
				this.set("sortColumnLastValue", lastValue);
				if (canLoadData) {
					gridData.loadAll(dataCollection);
				}
				this._updateGridCaptionContainerVisibility();
				this.set("GridData", gridData);
			},

the main body of the method is a basic body and the customization here goes at:

for (var i=0; i < dataCollection.getItems().length; i++) {
					var price = dataCollection.getItems()[i].values.Price;
					if (price <= 100) {
						dataCollection.removeByIndex(i);
					}
				}

where we prepare received data collection for further basic processing. So you can test this approach on your side.

Oleg Drobina,



Appreciate the detailed response!



How shall we set some particular/specific value as the default value to this Unit Of Measure (UOM) lookup field?



We have locked it in getEditableColumns() and how does the logic go by to set a default value?



Best Regards,

Bhoobalan Palanivelu.

Bhoobalan Palanivelu,

 

this is the custmization inside the onGridDataLoaded method, but additionally to the previous removal of records we will need to set the value for the "Unit of measure" column for each record after the unnecessary records are removed from the dataCollection.

Oleg Drobina,



Thanks for the response!



Still, the filter remains not to work even with the logic of removing values from the collection in OnGridDataLoaded().

 

The code gets executed but still, the products with 0 prices are shown in the Grid. please find the below references.

 

Logic es executing:

 

All records are again loaded into the Grid 

 

 

BR,

Bhoobalan Palanivelu.

Bhoobalan Palanivelu,

 

I've checked and indeed it happens in case there are two records with the price = 0 that are located one after another in the dataCollection (for example the 0 item has 0 price and the 1st item has 0 price). It happens because the logic removes an item with the 0 index (i=0), as a result an item with the 1 index is moved to the 0 index (because the original item with 0 index was deleted) and since we are in a cycle the code goes to check the item with the 1 index and skips that item that moved to the 0 index.

 

Perhaps this dataCollection should be processed in terms of a separate collection and then this custom collection should be placed into the dataCollection.

Oleg Drobina,



Yes, Now we were able to remove all the products where "Price = 0".



Also, how to make a filter to the grid products?

Unable to set the Default Value for the UOM field.



BR,

Bhoobalan Palanivelu.

Show all comments

Hi Team,

 

We are creating workspace for each role from the organisation structure and adding the role in the user group of the workspace. In the same way, when we create a workspace only for the manager in the topmost role in the hierarchy of the Organizationa structure and when we try to login as the manager.

 

All the workspaces created for the roles below the manger in the structure also is viewed by the manager. Is there a way, were we can make the workspace created only for the manager viewed by the manager and the rest of the workspace hidden/not shown to the manager.

 

Thanks in advance!

Regards,

Mayan

Like 0

Like

1 comments

Hello,

 

The manager has all the rights given to his employees. They cannot be removed.

 

For more information on delegating rights:

Delegate permissions

Object operation permissions

Show all comments