Hi All,

 

Is there any way to configure the comboboxes inside the Grid in a similar way we configure the ones in a page?

 

I'd like to be able to configure these 2 properties:

  • "showValueAsLink" 
  • "isAddAllowed"
     
  • Thanks!
     
Like 0

Like

1 comments

Hello,
 

Thank you for your question. To provide a more detailed analysis, could you please clarify the following:
 

  1. 1. We need screenshots of the specific functionality you require.
  2. 2. Please specify whether this functionality is needed in the Freedom UI or the Classic UI.
     

Your cooperation will help us assist you more effectively.
 

Thank you!

Show all comments

Hi;
I would like to add link to Entity page (Using lookup field) in auto generated page but i want  this item be a read only one

Is it possible?
 

Regards
Tomek

Like 0

Like

3 comments

Hello,

 

Could you please describe what exactly your business idea is in more detail, provide a screenshot with example where and how you want to set this up?

Mira Dmitruk,

Hi;
I create such page

the claim request field is link to entity page

byt i can change it I would like it to be readonly

Regards Tomek

Tomasz Branicki,

I believe the only way to accomplish this is to use a preconfigured page instead of autogenerated. 

Ryan

Show all comments

I know the Modified By field shows the last to modify a case.

I'm trying to find out how I can track users who may have modified a case multiple times.

 

If User A modifies a case, the User B modifies the same case, I want to be able to track (either exporting to excel or in a graph/dashboard) and record that User A did modify that case, even if User B was the last to do so.

 

Is this possible? Every combination I can come up with seems to only track the last to modify a case.

Like 0

Like

4 comments

You can set logging up on the object (and specific columns) under 'change log' although I am not sure how easy it is to export from there. Alternatively you could create a detail/section linked to Case (Case Audit) and have a business process that writes specific changes (like modified by) when a record is modified.

Hi Jason,

To track multiple modifications by different users in the "Case" section, enable the change log and add all the columns you need to monitor for modifications.

Rob Watson,

Thank you, I'm working with the logging now.

Goparna Nasina,

Thank you, working with the logging now.

Show all comments

Добрий день. Намагаюсь зробити БП для створення нового Ліда з вхідного повідомлення на електронну адресу, але не можу зрозуміти до якої умови я маю причепитись в об'єкті Email повідомлення? 

Like 0

Like

2 comments

Добрий день!

Ви можете створити бізнес-процес для створення нового ліда на основі тригера — створення нового запису в об'єкті "Emil повідомлення".
 

Ви можете зчитати дані з пов'язаної з ним "Активності", щоб отримати відповідну інформацію, таку як тема, пов'язаний контакт/обліковий запис (якщо такий є), і включити це в процес створення ліда як параметр.

Класичним випадком було б перевіряти, чи є у темі повідомлення ключові слова для створення ліда.

На зображеннях нижче я надав приклади того, як буде виглядати такий тригер.

How to select activity subject

Email trigger

Дякуємо!

 

Andrii Kurta,

Добрий день. Дякую. Необхідний лист через Активність Кому отримую. Далі питання, як я з нього отримаю Тему листа - Хочу зробити її назвою Ліда наприклад. Контакт, хто надіслав створити контакт з його данними.

Потім вичитую дані з листа

 

Show all comments

Hi Team, 
I want to style my dropdown which has element code : "Usrcodedropdowncode" 
Can you please provide your inputs to achieve this?
Thank you, 
Asif

Like 0

Like

1 comments
Best reply

Hello Asif,

I've found an excellent article by Ryan Farley that explains how to add custom CSS style sheets in Creatio. It may help you to understand how styling works.

P.S. Logic in Classic and FreedomUI is quite the same for this task. 

 

Hello Asif,

I've found an excellent article by Ryan Farley that explains how to add custom CSS style sheets in Creatio. It may help you to understand how styling works.

P.S. Logic in Classic and FreedomUI is quite the same for this task. 

 

Show all comments

Hello,

I'm getting  "The system setting ExchangeListenerURI is not populated" error when I add new email account.
I'm using 8.1.1 version and postgre SQL database.

Thanks,

Asif Shaik

Like 0

Like

1 comments

Hey, everyone. 
I've been on this for a while now, but I can't figure it out. 

 

I've got this workflow from my print, and it has the following function: 

  • Get the information from a newly created entry on the object "Class"
  • Reading the information from "Class level" (it has the quantity of classes said level needs and what's the starting "Class number" that it must have),
  • Create "classroom" entries based on the "starting date" (it's a property from "Class") and "days of the week with time" (I've made it so that my object "Class" had a boolean for each day and a "time" for each day too ).

 

Does anyone knows how to construct a "Scripted task" (I belive that it is the ONLY way I can make it work) to do that? 

 

 

Business process:

 

Class table information, regarding how I've constructed the Day of the week + hour;

Like 0

Like

2 comments

Hello,

 

There is no need to use a script task here. A simple sub-process call with mass creation of records using the "Add data" element will also work as expected. 

 

If you want to use the code:

https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platform/back-end-development/data-operations-back-end/orm/examples/manage-the-database-entities

 

See example 6

EntitySchema contactSchema = UserConnection.EntitySchemaManager.GetInstanceByName("Contact");
Entity contactEntity = contactSchema.CreateEntity(UserConnection);
contactEntity.SetDefColumnValues();
contactEntity.SetColumnValue("Name", "User01");
contactEntity.Save();
 

 

The things to change here are the entity name and the column values (and column names).

Hey, Kalymbet! 
Many thanks for the response. 
I'll try it and come back here later today to coment! 

Show all comments

Hi. 

 

I'm trying to deploy de Identity Service to be able to use the external Outh 2.0 authorization and im using the docker deploy option but when i run the container, i got the error "It was not possible to connect to the redis server(s). Error connecting right now."

 

I also tried to  modify the redis connectio string with my value in the ConnectionString.config file of my main creatio application but dosen't work.

 

I was following this documentation https://academy.creatio.com/docs/8.x/setup-and-administration/on-site-deployment/deployment-additional-setup/identity-service/set-up-the-identity-service-instruction#title-2002-6

 

the documentation for docker deploy dont show anything about redis.

 

Would apprecite your help. 

Like 0

Like

1 comments

Hello!

 

For Identity service, is there no need to use Redis. Please remove any mention of Redis in the Identity service setup.

Show all comments

I added virtual Detail and after filling the object it displays all records. On not Virtual details recoreds are displayed with amount of 10 and after clicking "Show More" it shows another 10. Bassicaly I want the same  logic for my Virtual Detail. I tried to set "RowCount" to 10 but it did not work.

Is it possible to add record limitation as it works in  not virtual detail with rowcount 10

 define("UsrFinancialAccountsVirtualDetail", ['ContactPageV2' ], function(ContactPageV2) {
	return {
		entitySchemaName: "UsrFinancialAccountsVirtualObject",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[
			{
                "operation": "insert",
                "name": "LoadGridButton",
                "parentName": "Detail",
                "propertyName": "tools",
                "values": {
                    "itemType": Terrasoft.ViewItemType.BUTTON,
                    "caption": {"bindTo": "Resources.Strings.LoadGridButtonCaption"},
                    "click": {"bindTo": "onLoadGridButtonClick"},
                    "style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT
                },
 
			},
 
		]/**SCHEMA_DIFF*/,
		attributes: {
			IsGridEmpty: {
                    dataValueType: this.Terrasoft.DataValueType.BOOLEAN,
                    value: true
			}
		},
		methods: {
     		sortColumn: this.Terrasoft.emptyFn,
            loadGridData: this.Terrasoft.emptyFn,
			      getRowCount: function() {
					return 10;
				  },
 
            init: function() {
                this.callParent(arguments);
                this.set("IsGridEmpty", true);
                this.set("IsGridDataLoaded", true);
 
            },
			onLoadGridButtonClick: function() {
				var _branchVirtualObject = this;
				this.set("MaskId", Terrasoft.Mask.show({timeout: 0}));
				var baseSecret = Terrasoft.SysSettings.cachedSettings.baseSecret;
    			var baseUrl = Terrasoft.SysSettings.cachedSettings.baseUrl;
 
				jQuery.ajax({
                        type: "GET",
 
                        url: `**************************************`,
                        headers: {
                            "Content-Type": "application/json",
                            "Accept-Language": "ru-RU"
                        },
                        dataType: "json",
                        success: function(getAccountsResponse) {
							if(getAccountsResponse.status.code == 1 && getAccountsResponse.data.accounts){
								let accountsData = getAccountsResponse.data.accounts
								 _branchVirtualObject.parseDataToDetail(accountsData)
								 _branchVirtualObject.showInformationDialog(getAccountsResponse.status.message)
								Terrasoft.Mask.hide(_branchVirtualObject.get("MaskId"));							
 
							}else{
								_branchVirtualObject.fallbackOnError(getAccountsResponse.status.message)
								Terrasoft.Mask.hide(_branchVirtualObject.get("MaskId"));
							}										
                        },
                        error: function(getCardsResponse) {
                           Terrasoft.Mask.hide(_branchVirtualObject.get("MaskId"));
							_branchVirtualObject.fallbackOnError("Error")   						
                        },                      
                    });				
			},
				fallbackOnError: function(message, response) {
				this.hideBodyMask();
				this.showInformationDialog(message, null, { style: Terrasoft.MessageBoxStyles.RED });
				console.log(message);
			},
			parseDataToDetail:function(cardsData){				 
				var data =[];				
				cardsData.map(x => {
					const tempObj = {
						UsrAccountId: x.accountId,
						UsrIndex: x.index,
						UsrBalance: x.balance,
						UsrStatus: x.status,
						UsrCurrency: x.currency,
						UsrType: x.type,
						UsrBankAccountNumber: x.UsrBankAccountNumber,						
					}	;					
					data.push(tempObj)
				})				
				var newCollection = Ext.create("Terrasoft.Collection");
				Terrasoft.each(data, function(item, key) {
					var model = Ext.create("Terrasoft.BaseViewModel", {
						rowConfig: {
							UsrId: {
								columnPath: "UsrId",
								dataValueType: Terrasoft.DataValueType.GUID
							},					
							UsrAccountId: {
								columnPath: "UsrAccountId",
								dataValueType: Terrasoft.DataValueType.TEXT
							},
							UsrIndex: {
								columnPath: "UsrIndex",
								dataValueType: Terrasoft.DataValueType.GUID
							},
							UsrBalance: {
								columnPath: "UsrBalance",
								dataValueType: Terrasoft.DataValueType.TEXT
							},
							UsrStatus: {
								columnPath: "UsrStatus",
								dataValueType: Terrasoft.DataValueType.TEXT
							},	
							UsrCurrency: {
								columnPath: "UsrCurrency",
								dataValueType: Terrasoft.DataValueType.TEXT
							},
							UsrType: {
								columnPath: "UsrType",
								dataValueType: Terrasoft.DataValueType.TEXT
							},
							UsrBankAccountNumber: {
								columnPath: "UsrBankAccountNumber",
								dataValueType: Terrasoft.DataValueType.BOOLEAN
							},
 
 
 
						},
						values: {
							UsrId: Terrasoft.generateGUID(),
							UsrAccountId: item.UsrAccountId,
							UsrIndex: item.UsrIndex,
							UsrBalance: item.UsrBalance,
							UsrStatus: item.UsrStatus,
							UsrCurrency: item.UsrCurrency,
							UsrType: item.UsrType,
							UsrBankAccountNumber: item.UsrBankAccountNumber,
						}
					}, this);
					newCollection.add(model.get("Id"), model);
				});
				var response = {
					collection: newCollection,
					success: true,
					errorInfo: undefined,
				};
 
				this.set("IsGridLoading", false);
                 this.set("IsGridDataLoaded", true);
				 this.set("IsGridEmpty", false);
				this.set("IsDetailCollapsed", false);
				this.set("RowCount", 10);
				this.updateLoadedGridData(response, this.onGridDataLoaded, this);
 
 
			},
 
		}
 
	};
}); 
Like 0

Like

2 comments

You can use my code as an example to implement your logic:

define("UsrSchema27d9d5e6Detail", [], function() {
	return {
		entitySchemaName: "UsrTestDetail",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[
			{
                "operation": "insert",
                "name": "LoadGridButton",
                "parentName": "Detail",
                "propertyName": "tools",
                "values": {
                    "itemType": Terrasoft.ViewItemType.BUTTON,
                    "caption": {"bindTo": "Resources.Strings.LoadGridButtonCaption"},
                    "click": {"bindTo": "onLoadGridButtonClick"},
					"enabled": {"bindTo": "isLoadGridButtonEnabled"},
                    "style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT
                }
			},
			{
                "operation": "insert",
                "name": "LoadNextRecords",
                "parentName": "Detail",
                "propertyName": "tools",
                "values": {
                    "itemType": Terrasoft.ViewItemType.BUTTON,
                    "caption": {"bindTo": "Resources.Strings.LoadNextRecords"},
                    "click": {"bindTo": "onLoadNextRecordsButtonClick"},
					"enabled": {"bindTo": "isLoadNextRecordsButtonEnabled"},
                    "style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT
                }
			},
			{
                "operation": "insert",
                "name": "ClearGridData",
                "parentName": "Detail",
                "propertyName": "tools",
                "values": {
                    "itemType": Terrasoft.ViewItemType.BUTTON,
                    "caption": {"bindTo": "Resources.Strings.ClearGridData"},
                    "click": {"bindTo": "onClearGridDataButtonClick"},
					"enabled": {"bindTo": "isClearGridDataButtonEnabled"},
                    "style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT
                }
			}
		]/**SCHEMA_DIFF*/,
		attributes: {
 
			IsGridEmpty: {
                    dataValueType: this.Terrasoft.DataValueType.BOOLEAN,
                    value: true
			},
 
			NumberOfClicks: {
				dataValueType: this.Terrasoft.DataValueType.INTEGER,
				value: 0
			},
 
			NumberOfRecordsToDisplay: {
				dataValueType: this.Terrasoft.DataValueType.INTEGER,
				value: 10
			},
 
			CanLoadGridData: {
				dataValueType: this.Terrasoft.DataValueType.BOOLEAN,
				value: true
			},
 
			ObjectsCollection: {
				dataValueType: this.Terrasoft.DataValueType.COLLECTION,
				value: [
					{
						UsrName: "1111",
						UsrIntColumn: 1
					},
					{
						UsrName: "Test2",
						UsrIntColumn: 24
					},
					{
						UsrName: "Test3",
						UsrIntColumn: 34
					},
					{
						UsrName: "Test4",
						UsrIntColumn: 44
					},
					{
						UsrName: "Test5",
						UsrIntColumn: 54
					},
					{
						UsrName: "Test6",
						UsrIntColumn: 64
					},
					{
						UsrName: "Test7",
						UsrIntColumn: 74
					},
					{
						UsrName: "Test8",
						UsrIntColumn: 84
					},
					{
						UsrName: "Test9",
						UsrIntColumn: 94
					},
					{
						UsrName: "Test10",
						UsrIntColumn: 104
					},
					{
						UsrName: "Test11",
						UsrIntColumn: 114
					},
					{
						UsrName: "Test12",
						UsrIntColumn: 124
					},
					{
						UsrName: "Test13",
						UsrIntColumn: 124
					},
					{
						UsrName: "Test14",
						UsrIntColumn: 124
					},
					{
						UsrName: "Test15",
						UsrIntColumn: 124
					},
					{
						UsrName: "Test16",
						UsrIntColumn: 124
					},
					{
						UsrName: "Test17",
						UsrIntColumn: 124
					}
				]
			}
		},
		methods: {
 
			isClearGridDataButtonEnabled: function() {
				var numberOfClicks = this.get("NumberOfClicks");
				var canLoadMoreData = this.get("CanLoadGridData");
				return numberOfClicks != 0 && !canLoadMoreData;
			},
 
			isLoadGridButtonEnabled: function() {
				var numberOfClicks = this.get("NumberOfClicks");
				var canLoadMoreData = this.get("CanLoadGridData");
				return numberOfClicks == 0;
			},
 
			isLoadNextRecordsButtonEnabled: function() {
				var numberOfClicks = this.get("NumberOfClicks");
				var canLoadMoreData = this.get("CanLoadGridData");
				return numberOfClicks != 0 && canLoadMoreData;
			},
 
			processObjectsCollection: function(collection, numberOfRecordsToLoad, skipRecordsNumber) {
				var newCollection = Ext.create("Terrasoft.Collection");
				Terrasoft.each(collection, function(item, key) {
					if (key < numberOfRecordsToLoad && key >= skipRecordsNumber) {
						var model = Ext.create("Terrasoft.BaseViewModel", {
						rowConfig: {
							Id: {
								columnPath: "Id",
								dataValueType: Terrasoft.DataValueType.GUID
							},
							UsrName: {
								columnPath: "UsrName",
								dataValueType: Terrasoft.DataValueType.TEXT
							},
							UsrIntColumn: {
								columnPath: "UsrIntColumn",
								dataValueType: Terrasoft.DataValueType.INTEGER
							}
						},
						values: {
							Id: Terrasoft.generateGUID(),
							UsrName: item.UsrName,
							UsrIntColumn: item.UsrIntColumn,
						}
					}, this);
						newCollection.add(model.get("Id"), model);
					}
				});
				return newCollection;
			},
 
			processNumberOfClicks: function() {
				var numberOfClicks = this.get("NumberOfClicks");
				var numberOfRecordsToDisplay = this.get("NumberOfRecordsToDisplay");
				var numberOfRecordsToLoad = (numberOfClicks + 1) * numberOfRecordsToDisplay;
				var numberOfRecordsToSkip = numberOfClicks * numberOfRecordsToDisplay;
				this.set("NumberOfClicks", numberOfClicks + 1);
				var result = {
					NumberOfRecordsToLoad: numberOfRecordsToLoad,
					NumberOfRecordsToSkip: numberOfRecordsToSkip
				};
				return result;
			},
 
			processDataLoadRequest: function() {
				var offsetFetchValue = this.processNumberOfClicks();
				var numberOfRecordsToLoad = offsetFetchValue.NumberOfRecordsToLoad;
				var skipRecordsNumber = offsetFetchValue.NumberOfRecordsToSkip;
				var object = this.get("ObjectsCollection");
				var processedCollection = this.processObjectsCollection(object, numberOfRecordsToLoad, skipRecordsNumber);
				var processedCollectionLength = processedCollection?.length;
				var response = {
					collection: processedCollection,
					success: true,
					errorInfo: undefined
				};
				this.updateLoadedGridData(response, this.onGridDataLoaded, this);
				return processedCollectionLength != 10;
			},
 
			onClearGridDataButtonClick: function() {
				const gridData = this.getGridData();
				gridData.clear();
				this.set("NumberOfClicks", 0);
				this.set("CanLoadGridData", true);
			},
 
			onLoadGridButtonClick: function() {
				this.processDataLoadRequest();
				this.set("CanLoadMoreData", false);
			},
 
			onLoadNextRecordsButtonClick: function() {
				var result = this.processDataLoadRequest();
				if (result) {
					this.set("CanLoadGridData", false);
				}
			}
		}
	};
});

The code is simple to read, and everything should be clear. The number of records to load per LoadNextRecords button click is controlled in the NumberOfRecordsToDisplay attribute. The idea was to add 3 buttons:

 

1) LoadGridButton performs the initial data load. Becomes disabled once it's clicked.

2) LoadNextRecords loads the next 10 records from the ObjectsCollection attribute. It becomes disabled once all records are displayed.

3) ClearGridData performs data grid clear, and data loading can start from the beginning. It is enabled only when all records are loaded into the grid.

Oleg Drobina,

Thanks Oleg, it works.

Show all comments

Hi, 
I've been stuck quite sometime on this particular error while installing/configuring Creatio for On-Site development. 
Inside the ConnectionString.config file, I changed a couple of parameters in "db" section to be able to connect MSSQL server via SQL Authentication by replacing Integrated Security=SSPI to User Id and Password. however, to no avail I am still getting this error (Image attached), which i couldn't find mentioned anywhere else in this forum.

Any help would be appreciated. Thanks

ConnectionString.config "db" string:

Like 0

Like

4 comments

Hello,

 

Please specify if you are trying to deploy an existing site's database based on binary files? Or are you deploying a new environment from scratch?

Mira Dmitruk,

Hello,

I'm deploying a new environment from scratch, I have the Creatio binary files (zip) version 8.1.2.3941 included a database file to restore.

Yanuar Adinagoro Vishnu Saputro,

 

Hello!

This error indicates that you are trying to install version 8.1.2 when the Database is still on version 8.1.1. 

Please correct the settings using our documentation: 

https://academy.creatio.com/docs/8.x/setup-and-administration/category/on-site-deployment

Have a nice day! 

Hanna Skalko,

Hello,

I see, I should use the newest database included with version 8.1.2, right? I wasn't aware of that at first. 
Thank you all, it works now.

Show all comments