Hey Everyone, 

 

I would like the user to be able to add multiple notes that are time stamped, within the opportunities modules. 

 

It's actually the functionality of the "feed" that I am after. But I don't want each feed post/note to be shared + It would be good to change the placeholder text to something rather than 'What are you working on".

 

Would it be possible to change this just for one module? With/without dev help.

 

Thanks all. 

Like 1

Like

1 comments

Hi Mark,

 

To change the "What are you working on message" you need to create a replacing module for the "SocialFeed" module (for example with the code below):

 define("SocialFeed", [], function() {
		return {
			methods: {
			}
		};
	});

and then find the WritePostHint localizable string and modify its value. After the new schema is saved and the page refreshed you will get a new message (but please note that it will be done for all feed containers in all pages). If you need this change to be applied only to one section feed then the logic of the "SocialMessageEdit" element's "placeholder" property should be modified (in the same "SocialFeed" module).

 

As for different feed posts visibility and sharing: it's a better approach to use feed channels instead of posting into some record feed in case you need to not display every single feed post in the record. The feed itself was designed to leave comments on the workflow or tag someone in the record. Or you can try enabling record permissions for the "SocialMessage" object (that stands for feed messages) and create some business process that automatically distributes access rights based on some conditions.

 

Best regards,

Oscar

Show all comments

Hi,

 

Can some one help me,

 

I am using this tutorial for making section grid editable: https://community.creatio.com/articles/editable-grid-section#comment-81…

 

And I have two errors and it doesn't work.

 

My errors are: 

-Heading for label "DataGrid" not found.

-Unable to find column by configuration: "{"className":"Terrasoft.ConfigurationGrid","generateControlsConfig":{"bindTo":"generatActiveRowControlsConfig"},"changeRow":{"bindTo":"changeRow"},"unSelectRow":{"bindTo":"unSelectRow"},"onGridClick":{"bindTo":"onGridClick"},"initActiveRowKeyMap":{"bindTo":"initActiveRowKeyMap"},"activeRowAction":{"bindTo":"onActiveRowAction"},"multiSelect":{"bindTo":"MultiSelect"},"name":"DataGrid"}" .

Like 0

Like

2 comments

Can you post the complete code? Won't be able to see what might be wrong without that.

Ryan

Hi Marko,

 

Please check my reply in the original article, this should help.

 

Best regards,

Oscar

Show all comments

Hi Team,

 

I have configured one business process for creating one notification as soon as a lookup value in a section changes. I have referred the article: https://community.creatio.com/questions/create-notification-communication-center.

 

The issue that I'm facing is not getting any count alert for the new notification received although the notification is present in the notification center info section. The alert for the new notifications count is only visible if the user is already logged in to the system.

 

 

Kindly help.

 

Thanks,

Sarika

Like 0

Like

6 comments

Hello Sarika, 

 

Could you please check if the checkbox "Run following elements in the background" is cleared for the start signal of this business process?

 

If not, please clear it, save the changes and relogin to the system. 

Let us know if the issue persists despite the provided recommendation.

 

Best regards,

Anastasiia

Hi Anastasiia, 

 

I followed your recommendation but the issue is still the same. Please suggest me what to do

Hi team,

 

Please suggest me a solution for this.

 

Thanks

Hi Sarika,

 

I am reaching out to see if you were to resolve the issue. We have a similar problem with our instance as well. 

 

Thanks

Hi Nirupama,

 

I removed the 'message is need to send' parameter from the add notification element and was able to get the notifications successfully.

 

Hope this helps in your case as well.

 

Best Regards,

Sarika

Sarika Sharma,

Thank you for your response. Really appreciate it!

Just a follow up question - did removing that parameter have any impact on the notification getting sent? Were you able to find out what it is used for?

Show all comments

Hi Community,

 

We are trying to integrate the Zadarma Widget with Creatio. Our main objective is to load this widget every time we press the "Phone" button (marked with red square in the following image).

In order to achieve this, we need to call the necessary dependencies, so it's possible to execute the "zadarmaWidgetFn" function, as you can see on the next image.

require.config({
	paths: {
		loader_phone_lib: '//my.zadarma.com/webphoneWebRTCWidget/v8/js/loader-phone-lib.js?sub_v=62',
		loader_phone_fn: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/loader-phone-fn.js?sub_v=62"
	},
});
 
define("CtiPanel", ["ServiceHelper", "loader_phone_lib", "loader_phone_fn"], function(ServiceHelper) {
	return {
		messages: {},
		mixins: {},
		attributes: {},
		methods: {
			callPhoneNumber: function (){
				var number = this.get("PhoneNumber");
				window.console.log(number);
 
				var sipValue = "SIP";
 
				var payload = {
					sip: sipValue
				};
 
				ServiceHelper.callService("ImdZadarmaWebHookService", "ZadarmaWebRTCKey", function(response) {
					var result = JSON.parse(response.ZadarmaWebRTCKeyResult);
					window.console.log(result.key);
					zadarmaWidgetFn(result.key, 'SIP', 'square', 'en', true, "{left:'10px',top:'5px'}");
				}, payload, this);
			}
		},
		diff: []
	};
});

However, we are getting the following error while loading these dependencies, because one of the files "loader_phone_lib" (https://my.zadarma.com/webphoneWebRTCWidget/v8/js/loader-phone-lib.js?s…) has other dependencies that are called through tags.

We would like to know, how can we load these dependencies, that are inside the "loader_phone_lib" file, without getting this error?

 

Thanks in Advance.

 

Best Regards,

Pedro Pinheiro

Like 3

Like

4 comments

Hi Pedro,

 

According to https://requirejs.org/docs/errors.html#mismatch there should be the anonymous define() method inside the script HTML tag in one of the dependencies that are loaded. So to fix the error you need to check all the steps described in the requirejs.org document.

 

Best regards,

Oscar

Hi Oscar,

 

Thank you for the response.

 

Yes, some of the scripts have the anonymous define() method inside, so by following the documentation you provided, I removed the dependencies from the "loader_phone_lib" script and added them using the code bellow:

....
require.config({
	paths: {
		zadarmaSocket: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/socket.io",
		zadarmaDetectWebRTC: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/detectWebRTC.min",
		zadarmaJssip: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/jssip.min",
		zadarmaMd5: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/md5.min",
		zadarmaWidgetAPI: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/widget-api.min.js?sub_v=62",
		zadarmaWidget: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/widget.min.js?sub_v=62",
		loader_phone_fn: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/loader-phone-fn.js?sub_v=62"
	}
});
 
define("CtiPanel", ["ServiceHelper", "zadarmaSocket", "zadarmaDetectWebRTC", "zadarmaJssip", "zadarmaMd5", "zadarmaWidgetAPI", "zadarmaWidget", "loader_phone_fn"], function(ServiceHelper) {
	return {
		messages: {},
		mixins: {},
		attributes: {},
		methods: {
			callPhoneNumber: function (){
				var number = this.get("PhoneNumber");
				window.console.log(number);
 
				var sipValue = "SIP";
 
				var payload = {
					sip: sipValue
				};
 
				ServiceHelper.callService("ImdZadarmaWebHookService", "ZadarmaWebRTCKey", function(response) {
					var result = JSON.parse(response.ZadarmaWebRTCKeyResult);
					window.console.log(result.key);
					zadarmaWidgetFn(result.key, 'SIP', 'square', 'en', true, "{left:'10px',top:'5px'}");
				}, payload, this);
			}
		},
		diff: []
	};
});

This piece of code manage to "fix" the previous error. However, I'm getting a new error, which is related to the Socket.Io (zadarmaSocket), as you can see on the next image:

I think this error is caused by the fact that one of the dependencies cannot reach specific functions/vars from other dependencies. I've tried to use the "shim" attribute, in order to create a sequence for loading the dependencies and it didn't work.

 

Thanks in Advance.

 

Best Regards,

Pedro Pinheiro

 

Pedro Pinheiro,

 

Hello,

 

The new code returns another error message on my side, but it happens since there is no ImdZadarmaWebHookService service and ZadarmaWebRTCKey method in my app. Can you please also share the code of this part?

 

Thank you!

 

Best regards,

Oscar

Hello Oscar Dylan,

 

The ZadarmaWebRTCKey method is responsible for requesting the WebRTC key from a specific "Client Key", "Client Secret" and SIP Number. I use this key to start the communication between the widget and Zadarma.

 

ImdZadarmaWebHookService.cs

 /* The custom namespace. */
namespace Terrasoft.Configuration.ImdZadarmaWebHookServiceNamespace
{
    using System;
    using System.ServiceModel;
    using System.ServiceModel.Web;
    using System.ServiceModel.Activation;
    using Terrasoft.Core;
    using Terrasoft.Web.Common;
    using Terrasoft.Core.Entities; 
	using System.Web;
	using System.Collections.Generic;
	using Terrasoft.Configuration.ImdZadarmaAPI;
	using System.Net.Http;
 
    [ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    public class ImdZadarmaWebHookService: BaseService
    {
        [OperationContract]
       	[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
		public string ZadarmaWebRTCKey(string sip){
 
            //ZadarmaApi is a class that contains all the methods to work with Zadarma API
			var zadarma = new ZadarmaApi("KEY", "SECRET");
 
 
			SortedDictionary<string, string> parameters = new SortedDictionary<string, string>();			
			parameters.Add("sip", sip);
 
            var response = zadarma.Call("/v1/webrtc/get_key/", parameters, HttpMethod.Get);
            string str = (string) response.Content.ReadAsStringAsync().Result;
            return str;
		}
    }   
}

The code for ZadarmaApi class can be found here:

https://github.com/zadarma/user-api-cs-v1/blob/master/ZadarmaAPI/ZadarmaApi.cs

 

Best Regards,

Pedro Pinheiro

Show all comments

Hi community,

 

In my UAT environment, I revoked a user's system administrator permission by removing him from the "system administrators" role.

The user continues to have the same system administrator permission.

I have tried clear the redis cache, but the problem persists.

 

 

Like 0

Like

2 comments

Hi Stefano,

 

I had a similar problem, in case the problem was that the was not sys admin but was manager of a user with sysadmin role.

And being a manager you inherit the roles and the users you are managing.

 

hope it helps,

Luis

Luis Tinoco Azevedo,

thank you Luis for your suggestion

Show all comments

Hello community,

 

I am using perform task inside section cases. The task updates the entity stage. After the stage is updated from the task I want to catch this event and reload the entity from the client side. I tried using the following approach but nothing happens

"Stage": {
				dependencies: [
					{
						columns: ["Stage"],
						methodName: "onChangeStage"
					}
				]
			}

The below script is called only when the stage is updated directly from the client side and not from a task or a business process. Is there a way to catch this event from the client side?

Like 0

Like

1 comments
Best reply

Since the automatic changing of a stage happens outside of the context of a page, you won't receive any events from the change on the page itself. 

The only option is to either use a process, entity subprocess or entity event listener class (and starts with a signal of case modified in stage field) and if it's changed to the appropriate stage you send a signal to the client. You can see how to send a message from the server (such as from a process) to the client here: https://customerfx.com/article/sending-a-message-from-server-side-c-to-…

You'll add code to the page to listen for this message and then reloadEntity to refresh the page. 

BTW, if you want to use an entity event listener class instead of a process, I've outlined how to do that here https://customerfx.com/article/adding-code-to-listen-for-entity-events-… although using a process is quick and easy.

Ryan

Since the automatic changing of a stage happens outside of the context of a page, you won't receive any events from the change on the page itself. 

The only option is to either use a process, entity subprocess or entity event listener class (and starts with a signal of case modified in stage field) and if it's changed to the appropriate stage you send a signal to the client. You can see how to send a message from the server (such as from a process) to the client here: https://customerfx.com/article/sending-a-message-from-server-side-c-to-…

You'll add code to the page to listen for this message and then reloadEntity to refresh the page. 

BTW, if you want to use an entity event listener class instead of a process, I've outlined how to do that here https://customerfx.com/article/adding-code-to-listen-for-entity-events-… although using a process is quick and easy.

Ryan

Show all comments

Hello Creatio community !

I would like to call the Creatio Webservice ..../0/rest/FinAppSpecService/InheritSpecificationsForFinApp  which automatically populates the Product Terms in Application, inside a Business Process. I can not call it in a c# class because the the constructor of FinAppSpecService class does not accept UserConnection as e parameter. Which is the proper way to solve this problem ?

Like 1

Like

11 comments
Best reply

Hello Petrika,

 

It's possible if you create a webservice record where the POST method complete address will be {siteURL}/0/rest/FinAppSpecService/InheritSpecificationsForFinApp and in the request parameters specify the following header parameters:

 

BPMCSRF

ForceUseSession (default value set to true)

Connection (default value set to true)

 

and the following cookies parameters:

 

BPMSESSIONID

UserName

BPMLOADER

BPMCSRF

.ASPXAUTH

 

in the webservice settings (since the FinAppSpecService service is not anonymous). The most difficult part here is setting cookies parameters. I could only recommend the following scenario here:

 

1) Create a separate authentication service webservice request (to {siteURL}/ServiceModel/AuthService.svc/Login)

2) Specify UserName and UserPassword request body parameters:

3) Add the Set-Cookie response header parameter:

4) Validate the response by performing a test call. It should return the Set-Cookie header that will be then used in the process:

5) Create a separate business process and configure it to run once per hour or once per half a day (depending on the value of the "UserSessionTimeout" system setting). The set-Cookie response header should be parsed to extract values for the

 

BPMSESSIONID

UserName

BPMLOADER

BPMCSRF

.ASPXAUTH

 

headers. It can be done by means of the script-task. Extracted values should be set as values for the system settings created separately (one per each header).

 

6) In your process where you need to call the FinAppSpecService in the "Call webservice" element set the values for the cookie parameters as values from the system settings from step 5. And also specify the value for the BPMCSRF header parameter.

 

7) Add all other request body parameters and call the service.

 

This approach should work since we simulate the Postman call of the same service, but set cookie parameters and header parameters via the separate business process and system settings.

 

Best regards,

Oscar

Hello Petrika,

 

It's possible if you create a webservice record where the POST method complete address will be {siteURL}/0/rest/FinAppSpecService/InheritSpecificationsForFinApp and in the request parameters specify the following header parameters:

 

BPMCSRF

ForceUseSession (default value set to true)

Connection (default value set to true)

 

and the following cookies parameters:

 

BPMSESSIONID

UserName

BPMLOADER

BPMCSRF

.ASPXAUTH

 

in the webservice settings (since the FinAppSpecService service is not anonymous). The most difficult part here is setting cookies parameters. I could only recommend the following scenario here:

 

1) Create a separate authentication service webservice request (to {siteURL}/ServiceModel/AuthService.svc/Login)

2) Specify UserName and UserPassword request body parameters:

3) Add the Set-Cookie response header parameter:

4) Validate the response by performing a test call. It should return the Set-Cookie header that will be then used in the process:

5) Create a separate business process and configure it to run once per hour or once per half a day (depending on the value of the "UserSessionTimeout" system setting). The set-Cookie response header should be parsed to extract values for the

 

BPMSESSIONID

UserName

BPMLOADER

BPMCSRF

.ASPXAUTH

 

headers. It can be done by means of the script-task. Extracted values should be set as values for the system settings created separately (one per each header).

 

6) In your process where you need to call the FinAppSpecService in the "Call webservice" element set the values for the cookie parameters as values from the system settings from step 5. And also specify the value for the BPMCSRF header parameter.

 

7) Add all other request body parameters and call the service.

 

This approach should work since we simulate the Postman call of the same service, but set cookie parameters and header parameters via the separate business process and system settings.

 

Best regards,

Oscar

Thank you very much for you response Oscar. It was very helpful.

Is there any article or example in the academy regarding point 5, parsing set-Cookie response header to extract values (inside a script task) ?

Petrika,

 

This is the task that should be covered by the C# code, using substring method for example. It's something as if you had a task to substring the "test" word from the "Hello test wordl!" string. Please find the way using the topics as the following:

 

https://stackoverflow.com/questions/9505400/extract-part-of-a-string-be…

 

Please also notice that the cookies values length is always constant and all of them start with the cookie name and the "=" character and end with the ";" symbol. This shouldn't be a difficult task.

 

Once string parts are extracted you can set them as parameter values (here is the Academy article that may be useful) and use these parameters in formulas to set parameter values to correspondent system settings.

 

Best regards,

Oscar

Oscar Dylan,

BPMSESSIONID is generated in the set-Cookie response header, because it seems that it's not found there ? I managed to extract everything else as required

Petrika,

 

Sorry, made a little mistake. BPMSESSIONID cookie is not returned as a response to the /AuthService.svc/Login call, but as a result of the first call to any other working endpoint like /0/odata/Account after authentication. Just try it in Postman and check the response headers in the next request that goes after AuthService request.

 

Best regards,

Oscar

Oscar ,

When i make a request from postman to another web-service the BPMSessionId is generated, I tested it.

Are you suggesting that i put the BPMSESSIONID as a reponse parameter to the InheritSpecificationsForFinApp, not as a request parameter ?

If i understand correctly.

 

Petrika,

If you're calling a configuration service, there's no need to actually use it as a service. It's simply a C# class that you can use directly.

For example, something like this: 

var svc = new Terrasoft.Configuration.FinAppSpecService();
svc.InheritSpecificationsForFinApp()

Depending on how the configuration service is implemented, you might need to also pass a UserConnection to it, which means you'd need to modify the service to allow this to be passed in.

You had mentioned: "I can not call it in a c# class because the the constructor of FinAppSpecService class does not accept UserConnection as e parameter. Which is the proper way to solve this problem?"

Why not just add two constructors to the class? One that is the default constructor and one that accepts a UserConnection? In the class you could add a method that either returns your private UserConnection variable (passed in by code consuming the class directly) or the one from the session (or BaseService) if being used as a service. I do it this way often and it is far more easy to consume the class directly than to call as a service when it's not needed to be used as a service (not to mention the extra overhead of using it as a service rather than consuming it directly)

Ryan

Ryan Farley,

 

FinAppSpecService() class constructor doesnt allow UserConnection as an argument. I can not modify the FinAppSpecService class because its part of the configuration. 

 

Ryan Farley,

Are you suggesting that i copy the 

FinAppSpecService  class to my package and make proper modifications to it ?

Petrika,

I was assuming this was your class, that you could modify, not a configuration one that was uneditable by you. 

I assume that FinAppSpecService inherits BaseService? If so, it has a UserConnection property that is protected (that does have a setter) as well as a protected constructor that accepts a UserConnection. Since they are protected you should be able to access them if your class is derived from it. 

it might work to just make a new class that inherits from the FinAppSpecService that allows a UserConnection to be passed? I've not tried that but it might work - just to throw out some ideas.

Something like this: 

public class UsrFinAppSpecServiceWrapper : FinAppSpecService
{
    public void SetUserConnection(UserConnection)
    {
        this.UserConnection = UserConnection;
    }
}

Then to use it:

var svc = new Terrasoft.Configuration.UsrFinAppSpecServiceWrapper();
svc.SetUserConnection(UserConnection);
svc.InheritSpecificationsForFinApp();

Again, I've not tested/tried that before, but I would assume something like this could work? If it does, still far easier route than calling it as a service IMO.

Ryan

Ryan Farley,

Ryan the response i get from the back-end 

is the same as the reponse i get from the front-end 

Still When i call this web-service from the back-end my goal isnt achieved. As you can see the detail of product terms isnt automaticalluy generated

Dont know if am missing something here

Thank you Petrika

Show all comments

Hi Community,

 

We have two different status in a section. One on the section UI (Reservation Status) and other one is DCM status. Our requirement here is, when the DCM status changes it will also change the Reservation Status.

 

To achieve this we have added one attribute and method on the page schema.

Attribute:

attributes: {
	"UsrMarketingPlansStatus": {
		dependencies: [{
			columns: ["UsrMarketingPlansStatus"], //field to trigger change event for
			methodName: "changeHeaderUserStatusBasedOnDCM" //method to execute
		}]
	},
},

Method:

methods: {
			changeHeaderUserStatusBasedOnDCM: function(){
				var DCMStatus = this.get("UsrMarketingPlansStatus").displayValue;
				console.log("DCMStatus: ", DCMStatus);
				if (DCMStatus === "Business Owner Review 1" || DCMStatus === "Business Owner Review 2" || DCMStatus === "Business Owner Review 3"){
					this.set("UsrReservationStatus", {value: "b438b32a-9f74-47fc-9266-69b148a50c21", displayValue: "Submitted"});
				}
				else if (DCMStatus === "Cancelled"){
					this.set("UsrReservationStatus", {value: "164d071e-180d-467b-bfc8-18e3818f4698", displayValue: "Cancelled"});
				}
 
				else if (DCMStatus === "Closed"){
					this.set("UsrReservationStatus", {value: "e6296483-82c1-4ecf-a2af-049fa376438e", displayValue: "Closed"});
					this.set("UsrUserStatus", {value: "6566728f-4157-4bf1-9f8d-61f043181379", displayValue: "Completed"});
				}
 
				else if (DCMStatus === "On Hold"){
					this.set("UsrReservationStatus", {value: "bcc1fc18-05c0-469a-a4bc-d65366c16cf1", displayValue: "More Info Required"});
				}
				else{
					this.set("UsrReservationStatus", {value: this.get("UsrReservationStatus").value, displayValue: this.get("UsrReservationStatus").displayValue});
				}
			},
}

The issue here is, when the user manually changes the DCM status, the Reservation status is getting changed automatically. But when the DCM status changes automatically (after activity completion/approval on DCM stage), the Reservation status is not changing automatically.

Need a suggestion how we can resolve the issue (Not via Business process).

 

Thanks,

Sourav Kumar Samal

Like 0

Like

1 comments
Best reply

Since the automatic changing of the DCM status happens outside of the context of the page, you won't receive any event in the page code for this. The only options are to either use a process or an entity-level subprocess/event. 

Ryan

Since the automatic changing of the DCM status happens outside of the context of the page, you won't receive any event in the page code for this. The only options are to either use a process or an entity-level subprocess/event. 

Ryan

Show all comments

We are trying to use https://marketplace.creatio.com/app/advanced-list-setup-creatio to setup different folders with different columns.  The use case is that users will want to see certain columns and also filter by multiple pre-defined columns/options as they plan which accounts to target for the day.  After applying a filter to the folder, the columns change.  Am I missing something in how to actually save the columns?

 

 

Like 0

Like

3 comments

Hi, Melanie!

I am not sure I understand the issue. Could you send us more details about it? Specifically, please tell us the expected result and provide us with steps to replicate the issue.



Also, you might want to review the short add-on instructions to ensure it is set up correctly and you are not experiencing the intended behavior.



The add-on lets you set up different columns for different folders.



To do this:



1. Select a folder (folder must contain at least one filter).

2. Click the "Set up filter for the folder" button.

 



3. Click the "Select fields to display" button and set up the custom columns.



4. Save the folder settings.

 

 

As a result, if you select the folder, you will see the custom column configuration. If you select a different folder, you will see the standard column configuration

Yevhen Vorobiov,

Hello,

We have followed the instructions for setup.  The use case is that users will want to see certain columns and also filter by multiple pre-defined columns/options as they plan which accounts to target for the day.

The expected behavior is that they could adjust the filters on the folder, select apply, and have the columns remain in the folder.

 

Expected behavior in your example: from the Test folder change Type = Our company to Type = Competitor (or any other type), select apply and have the columns remain that are set for the Test folder.

 

Instead what we are seeing is that the columns revert back to the default columns whenever the filter is modified.

 

Please advise how we can do this.

Melanie Forrest,

Hello Melanie!



Thank you for the information. I understand the issue now.



The add-on does not support dynamic changes to folders. As such, you have to click "Save" after applying changes to folder filters. As a result, you will see the custom list.

Show all comments

Hello

I would like to build a business process parameter of type "Collection of records".

- The user is asked to choose an object in a lookup ( attachment file)

- This file is added to the collection (that is where I struggle)

- The user is asked if he want to add more object to the list.

- ... 

- The user validate and the list is used in a subprocess to process the choosen files

 

Many thanks if you can give me a hint on how to do that.   

Like 0

Like

3 comments

Dear Antoine, 

It's impossible to implement using basic application logic.

During single business process execution, it is possible only to upload files to a single object at once.

Hello, thank you for your answer.

I am not trying to upload multiple files.

I just want to ba able to add object references to an object collection parameter.

Let's say it like this:

- When you read Data from Creatio, if using filter others than ID, you get a collection of object. Which is stored into a "collection" variable.

-Now I have a collection, let say I read another object of the same type with anoter filter, I want to add that object to the above existing collection. How can I do that?

 

 

Thank you 

 

The code should look something like this:

// create collection/list or get from param
var list = new CompositeObjectList<CompositeObject>();
 
// create item and add to collection/list
var item = new CompositeObject();
item["SomeProperty"] = "Some value";
item["SomeOtherProperty"] = "Some value, etc";
list.Add(item);
 
// now set list in param
Set<CompositeObjectList<CompositeObject>>("MyCollectionParamName", list);

See https://customerfx.com/article/working-with-collection-parameters-in-a-…

Ryan 

Show all comments