Hello,

 

I'm trying to install the "GlbOpenPopupWindowUserTask" package on a local machine which is installed on my client's server but it shows the error I attached.

Anyone, can help me understand why I can't install it?

 

Thank you!

 

Kind regards,

Andreia

File attachments
Like 0

Like

1 comments

Hi Andreia,

 

The log file contains no errors. Could you please check the application logs and specify the errors?

Show all comments

Hi,

I have installed the BPM'online word plugin and the tab appears in word application, but on connect the printable appears empty and the printable items don't appear, also any fake data in username and pwd are accepted 

Like 0

Like

1 comments

Hello Ali, 

 

Please contact us at support@creatio.com with a detailed description of the issue, as we'll need more details and what is more important access to your instance where the issue occurs in order to proceed with investigation and provide you with a solution. 

 

We'll be waiting for your email. 

Thank you in advance!



Best regards,

Anastasiia

Show all comments

Two issues re. using pre-configured pages.

 

I enabled debug mode using the browser console.  I then pressed Ctrl-F5 (cache reload) on an open process designer page, and tried to load the setup area of a pre-configured page element in the right hand panel.  It wouldn't load, the cursor just hung loading.  I then disabled debug mode and pressed Ctrl-F5 in the process designer window again.  The setup area of the pre-configured page element then loaded fine.

 

More problematic was the following while adding a button to run a process that opened a pre-configured page.  Using the debugger to step through a function that called the process with 'ProcessModuleUtilities', the configuration of the process call itself having a callback function for when the process had finished.  The debugger reported that the callback function was being called before the process had run and pre-configured page closed, not after.

define("ContactPageV2", ["ProcessModuleUtilities", "MaskHelper"], function(ProcessModuleUtilities, MaskHelper) {
	return {
		entitySchemaName: "Contact",
		attributes: {},
		modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,
		methods: {
			onProcessCallbackTestButtonClick: function () {
				debugger;
				const config = {
				    sysProcessName: "UsrPreconfiguredPage",
				    callback: function() {
				    	debugger;
				        Terrasoft.showInformation("The process has completed.");
				        MaskHelper.HideBodyMask();
				    },
				    scope: this
				};
				ProcessModuleUtilities.executeProcess(config);
			}
		},
		dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/,
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "insert",
				"name": "ProcessCallbackTestButton",
				"values": {
					"itemType": 5,
					"caption": "Process Callback Test",
					"style": "blue",
					"click": {
						"bindTo": "onProcessCallbackTestButtonClick"
					}
				},
				"parentName": "LeftContainer",
				"propertyName": "items",
				"index": 7
			},
			{
				"operation": "merge",
				"name": "JobTabContainer",
				"values": {
					"order": 2
				}
			},
			{
				"operation": "merge",
				"name": "HistoryTab",
				"values": {
					"order": 5
				}
			},
			{
				"operation": "merge",
				"name": "NotesAndFilesTab",
				"values": {
					"order": 6
				}
			},
			{
				"operation": "merge",
				"name": "ESNTab",
				"values": {
					"order": 7
				}
			}
		]/**SCHEMA_DIFF*/
	};
});

 

Like 0

Like

3 comments

Text book technique to implement the second of these issues would probably be using messages as outlined How to Refresh a Page from a Process in Creatio (formerly bpm’online) | Customer FX.

Hello Gareth,

 

And have you received any error message when trying to open the pre-configured page in the "Debug" mode? This can point to the reason for the issue.

 

Best regards,

Oscar

Oscar Dylan,

I didn't think to look, apols...

core-base.js:711 
 
       user: *********/5ef2a5b8-b3de-4790-90fa-d2ae501290bf
 file: https://**********.creatio.com/0/core/hash/ng-core/src/polyfills-es5.js?hash=0076eaccde25431d9d2d73f8f01c29c5
 line: 1
 column: 16730
 message: Uncaught Terrasoft.ItemNotFoundException: Property useBackgroundMode is not defined in class Terrasoft.manager.ClientUnitSchemaParameter 
 date: Wed May 25 2022 16:10:27 GMT+0100 (British Summer Time)
 stack: undefined

This error appears when debug mode is both true and false.

 

The sequence to reproduce the (alleged) bug that I am using is, 1) Set debug mode true in the browser console with 'Terrasoft.SysSettings.postPersonalSysSettingsValue("IsDebug", true);', I am doing this  pressing F12 in a Contacts section record, 2) Return to the process designer and press Ctrl-F5 to reload the cache, 3) click on the pre-configured page element.

 

I am using Edge browser and have tested this in an incognito window.

Show all comments

Hi community,

is it possible to hide the register link in SSP login page ?

 

Like 1

Like

3 comments

+1 for this

Hello Stefano,

 

If user self-registration is not required, you can remove the “Register” button from the portal login page:



change the ShowPortalSelfRegistrationLink parameter in the Web.config file to:

 

<add key="UseStaticFileContent" value="false" />



Best regards,

Bogdan

Bogdan,

thank you bogdan

So, if my instance is on  cloud I have to open a case for the support 

Show all comments

I'm optimising a query attempting to use a filter with 'Terrasoft.ComparisonType.EXISTS', I'm guessing at the syntax and it isn't working.  If anyone could point out where I'm going wrong here:

...
const subFilter = Terrasoft.createFilterGroup();
subFilter.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "UsrRefundItem", true));
const esqSecondFilter = Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EXISTS, subFilter);
esq.filters.add("esqSecondFilter", esqSecondFilter);
...

Thanks,

 

Like 0

Like

8 comments

Hello Gareth,

 

Terrasoft.ComparisonType.EXISTS is not used in the client-side system logic anymore since it was replaced with the createExistsFilter function. So you need to use it instead of EXISTS comparison type.

 

Best regards,

Oscar

Oscar Dylan,

I have tried the following but it is returning more than one record:

const caseId = this.get("MasterRecordId");
const esq = this.Ext.create(Terrasoft.EntitySchemaQuery, {
	rootSchemaName: "UsrItemInOrder"
});
esq.addAggregationSchemaColumn("Id", Terrasoft.AggregationType.COUNT, "RefundCount", Terrasoft.AggregationEvalType.ALL);
const esqFirstFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "UsrCase", caseId);
esq.filters.addItem(esqFirstFilter);
var subFilter = Terrasoft.createFilterGroup();
subFilter.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "UsrRefundItem", true));
const esqSecondFilter = Terrasoft.createExistsFilter("Id", subFilter);
...

I am not filtering with a subquery here, just on the one table.

Gareth Osler,

Hi Gareth. Here is a sample of how to get a count (this gets a count of all accounts with a type of "Customer", however, to just get a count of the entire table you'd just omit the filter):

var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
    rootSchemaName: "Account"
});
esq.addAggregationSchemaColumn("Id", Terrasoft.AggregationType.COUNT, "AccountCount");
esq.filters.add(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Type.Name", "Customer"));
esq.getEntityCollection(function(result) {
    console.log("Total customers", result.collection.first().get("AccountCount"));
});

With an exists sub-filter like in your code, it would look like this:

// get a count of all accounts with a "UsrClientSystem" record that has a system type of "Creatio"
var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
    rootSchemaName: "Account"
});
esq.addAggregationSchemaColumn("Id", Terrasoft.AggregationType.COUNT, "AccountCount");
 
var subFilter = Terrasoft.createFilterGroup();
subFilter.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "UsrSystemType.Name", "Creatio"));
esq.filters.addItem(Terrasoft.createExistsFilter("[UsrClientSystem:UsrAccount].Id", subFilter));
 
esq.getEntityCollection(function(result) {
    console.log("Total accounts with Creatio system", result.collection.first().get("AccountCount"));
}, this);

Ryan

Ryan Farley, Thank you for the reply.  I am querying with an exists filter on the same table as the esq query, the esq query is on table UsrItemInOerder, for an exist filter of there exists a record with a UsrRefundItem column value of true.  What would the column path be for a createExistsFilter() call in that situation?

Gareth Osler,

I'm not 100% sure I follow. So you want to know if there's a UsrItemInOrder record for the parent Order that has a value of true for the UsrRefundItem column? If that's the case, you can just simplify the query (no need for the exists sub filter):

var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
    rootSchemaName: "UsrItemInOrder"
});
// get a count of items with a refund
esq.addAggregationSchemaColumn("Id", Terrasoft.AggregationType.COUNT, "RefundCount");
// for all UsrItemInOrder rows for the parent Order
esq.filters.add(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Order", this.get("MasterRecordId"));
// add filter for refund items only
esq.filters.add(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "UsrRefundItem", true);
// get result, this will return 1 row with a count of refund items in RefundCount column
esq.getEntityCollection(function(result) {
    var hasRefunds = (result.collection.first().get("RefundCount") &gt; 0);
});

Ryan

Ryan Farley,

That is essentially what I have done.  But could that query be optimized with an exists query, it is being run on a database with circa 1.5 million records.

 

Gareth Osler,

What I was trying to do is illustrated in SQL terms in this stackexchange question,

SELECT TOP (1) id 
  FROM dbo.table
  WHERE price IS NULL
    AND category = 'hardware';

which I am arriving at the conclusion is not possible with a Creatio ESQ query.  The solution counting the records matching the case Id and 'UsrRefundItem'

flag true conditions is probably the fastest otherwise.

Gareth Osler,

The only way to do a "top" or "limit" that I know of via ESQ is like this:

var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
	rootSchemaName: "UsrEntity"
});
// get only first row in results
esq.rowCount = 1;
esq.addColumn("Id");
// add any filters
esq.getEntityCollection(function(response) {
	// only one row returned
}, this);

To be honest, I've never ran profiler to see if rowCount=X actually does translate to TOP X or LIMIT X, but I assume it does. However, I think the previous method of getting the count would be a more efficient way. The ESQ I posted earlier is the equivalent of:

select count(Id) as RefundCount from UsrItemInOrder where OrderId = 'SOMEID' and UsrRefundItem = 1

Ryan

Show all comments

What is the easiest way to call a method defined in the client module source code of one detail from the client module source code of another detail?  The details are in different tabs.

Like 0

Like

1 comments

You can do this using the sandbox. See https://academy.creatio.com/docs/developer/front_end_development/sandbo…

Basically, if detail1 needs to call a function defined in detail2, in detail1 you'd define a message with mode PTP and direction PUBLISH. In detail2, you'd define the same message with mode PTP and direction SUBSCRIBE. Detail1 would publish the message via the sandbox when it wants to invoke the function in the other detail. Then in detail2, when the message is received, it would execute the function. 

Hope this helps get you started. Here's a sample from an older post of sending messages between details: https://community.creatio.com/articles/implementing-messages-sandbox-de…

Ryan

Show all comments

I am developing an application using a Creatio trial (before implementing on the development server).  I have saved the application as a package, and have imported back into another Creatio trial.  Everything works fine.

 

The problem I have is I am not able to edit the JavaScript I have developed in the package's replacing client modules.  When I view the client module from the Configuration page, I can see the JavaScript that I have developed, but when I try to edit the JavaScript from the section wizard, there is only a 'define' function with empty sections, not the JavaScript that I developed.

 

Is it possible to continue developing client module JavaScript from one trial of Creatio to another?

 

Thanks in advance,

Like 0

Like

1 comments

Dear Gareth, 



The logic behind this behavior is that when any changes comes in the package they should not be directly changed since packages can be distributed by third-party publishers. 

Only way to change functionality installed is to re-define the code or add new methods within the new replacing module in your custom packages. 



Kind regards,

Roman

 

Show all comments

Hi team,

in portal section page is missing the switch advanced mode feature,

how can I enable it ?

 

Like 0

Like

2 comments

Hello Stefano,

 

Basic functionality doesn't include the ability to apply filter conditions based on the connected objects  for the portal user directly in the section, therefore the advanced filter option is not available for such user there.

As a workaround you may use a dynamic folder and set the needed filter conditions for it. 

Also, we already have a query registered for our responsible R&D team to implement this functionality for portal users in the upcoming versions of the application. I will assign your case to this project in order to increase its priority.

Thank you!

Best regards,

Anastasiia

Anastasiia Zhuravel,

thank you Anastasiia

Show all comments

Is it possible to disable or remove the comment button/icon on Agent Desktop feed posts or prevent comments using permissions or a system setting?

Like 0

Like

6 comments

Hello Gareth,

 

Could you please elaborate on the task you are trying to achieve?

Additionally, could you please provide screenshots of the section you want to change?

 

Thank you,

Artem.

Artem,

 

The task I have been asked to do is to prevent users from adding comments to posts on the feed of the Agent Desktop.  Is it possible to remove or disable the comment button (see image)?  Thanks,

 

Gareth Osler,

One quick and easy way is to just hide the comments button with CSS. Add css to the agent desktop page - See https://customerfx.com/article/adding-custom-css-style-sheets-in-bpmonl…

Then add this CSS to hide the comments button:

#OperatorSingleWindowPageContainer [data-item-marker="SocialFeedContainer"] [data-item-marker="Comments"] {
    display: none;
}

Ryan

OperatorSingleWindowPage Agent desktop page already has CSS defined, namely OperatorSingleWindowCSS Agent desktop: CSS styles, which cannot be edited.

 

So I created another CSS file UsrOperatorSingleWindowCSS2 and put the CSS to hide comments in it.

 

The Agent desktop page isn't a normal section, it's not possible to open the section wizard, so I created a Replacing view model as follows:

Unsurprisingly the above did not work!  

 

Any suggestions would be appreciated.

 

Thanks,

Gareth Osler,

It does not appear as though you've created the replacing client view correctly. The code you shared shows "UsrClientUnit_fdb86f8", not "OperatorSingleWindowPage". This needs to change to match the view model being replaced. 

Ryan

Thanks for pointing out the mistake (you shouldn't have had to!).

 

For reference of anyone travelling down this road in the future the CSS/LESS to remove both comments and likes:

#OperatorSingleWindowPageContainer [data-item-marker="SocialFeedContainer"] [data-item-marker="Comments"] {
    display: none;
}
#OperatorSingleWindowPageContainer [data-item-marker="SocialFeedContainer"] [data-item-marker="UsersWhoLikeItButton"] {
    display: none;
}
#OperatorSingleWindowPageContainer [data-item-marker="SocialFeedContainer"] [data-item-marker="Like"] {
    display: none;
}

 

Show all comments

We are running out of space for buttons in the usual places.  We have removed the icons in the communications panel at the top of the Actions Dashboard (see this article).  Is there any way to add buttons back in?

I have tried adding a button setting 'parentName' to "CaseSectionActionsDashboardMainContainerContainer" without success.

Thanks,

Like 0

Like

3 comments

Please clarify your task: do you need to return the buttons that were removed from the Actions Dashboard or do you need to add some new buttons there? Maybe you could share some image of what it should look like?

Oscar Dylan,

We need to add some new buttons.  We have removed the facebook, telegram, message and other buttons (which are actually tabs I think) from the Actions Dashboard, is it at all possible though to put a 'Terrasoft.ViewItemType.BUTTON' in their place?

Gareth Osler,

 

It's not possible exactly in the tabs (you are right, Email, Call, Activity etc. on the actions dashobard are tabs), but there are elements like ActualDcmSchemaInformationButton button and PlaybookButton button that are inserted to the RightHeaderActionContainer element of the SectionActionsDashboard and you can use those as an example. Additionally to it, if you ran out of space on the page you can always add additional buttons to the "Actions" button (override the getActions method on the edit page schema) and call the logic needed from these buttons.

Show all comments