I'm trying to configure a modal lookup window by following Example 2 in this academy page https://academy.creatio.com/documents/technic-sdk/7-15/creating-detail-selection-lookup and everything works as described, but I cannot figure out how to add a default sort to the modal lookup window - are there some parameters which can be added to the config object passed to the this.openLookup method call?

 

While on that subject, are there any other potential parameters which can be added to this config object which might be useful for other tasks?

Like 0

Like

1 comments

Dear Harvey, 



There is no description for all parameters of the lookup config. The possible way is to check the existing openLookup calls. 

Sorting can be specified in sortedColumns parameter. 

You can find the example in method selectPeriod in the ForecastTab. 

Collection of columns with sorting parameters is passed to it this way: 

var config = {

    entitySchemaName: "Contact",

    multiSelect: false,

    columns: ["Name", "Account.Name"],

    sortedColumns: [{

        name: "Account.Name",

        orderPosition: 0,

        orderDirection: this.Terrasoft.core.enums.OrderDirection.ASC

    }]

};

this.openLookup(config, this.lookupCallback, this);



Kind regards, 

Roman

Show all comments

Hi 

 

I want to create a query on a Section Schema in the same way I do it normally on a Page Schema.

 

On a Page Schema It usually starts with getting the current record ID like this:

 

var recordID = this.get("Id");

 

But when I do the same on the Section Schema I get an undefined value to my recordID variable.

 

Does some one know how to fix this issue ?

 

 

Like 1

Like

3 comments

Since the Section Schema is a list, you cannot get the Id by simply using:

this.get("Id")

Instead you must use the following to first get the currently active row:

this.getActiveRow().get("Id")

 

Harvey Adcock,

It works! thank you so much Harvey.

Harvey Adcock,

 

Hi. I am having issues of the same kind. I want the text value of one of my record's text-values. I have tried all of these and I'm not getting the result I want.

 

This worked on the Page metod:

var path= this.get("MyString"); 

 

Any of these does not work in the Section metod:

var activeRow = this.get("ActiveRow");
var path = this.get("GridData").get(activeRow).get("MyString").value;
var path = this.get(activeRow).get("MyString").value;
var path = this.get("MyString").value;

I also tried all of them with/or without the .value

Show all comments

I have 2 environments of Creatio CRM full bundle.

I have created my package in environment 1 which has version 7.16.0. I have committed to SVN server. 

Now I have another environment environment 2 in which I want to install package from SVN repository but it has downgraded version 7.15.4.

 

The package has all custom objects. All the objects have very simple connections and it only depends on ProductCore package.

 

I want to know if it is possible to install this package to another Env 2 which has a downgraded version.

Like 0

Like

2 comments

Dear Ramnath, 



We recommend to transfer packages between environments deployed on the same version of Creatio in order to avoid unexpected issues after or during the process. 

You can follow this update guide where updating process is described:

https://academy.creatio.com/documents/update-guide



Please update your second website to the same version as the first one before transferring any packages between them. 



Kind regards,

Roman

Hi Roman,

These both environments are demo environments. 

It is not possible to upgrade.

Show all comments

For instance, I have a column Account.UsrFlagTemp.

I don't need it anymore and I want to delete it.

But I want to search through all the processes to find out if any process still uses it.

Is there a way to do it automatically?

This is the cloud version.

Like 0

Like

1 comments

Hello Yuriy,

 

We do not recommend to delete columns in general, if you do not need this column you can set its usage mode to "none". If any process in your system reads all columns from the Account object this process will stop working after the column is removed even if the column itself is not used. 



This is why it is better to change usage mode in the column setup in the configuration. 

 

Best regards,

Angela

Show all comments

Hi Creatio Community!

We are looking for an add on for capturing MSM texts with our customers. We don't need to send out Mass Text messages. We would just like to be able to easily log the text messages as an activity in Creatio. I have looked through some add ons already and you have to pay per message. Is there an easier way to do this? Or what add ons have you used?

Like 0

Like

1 comments

Hello,

Here is the SMS extension that usually used for sending single SMS messages:

https://marketplace.creatio.com/app/infobip-connector

It also has the option to record the sending instances on the activity detail.

 

Regards,

Dean

Show all comments

I have read this article regarding adding multiple value to a detail.

Link - https://academy.creatio.com/documents/technic-sdk/7-15/adding-multiple-records-detail

 

 

But I do not understand these variable values. The opportunity and contact are the sections that are already created in the system. I want to know what values should I put in custom detail schema.

 

Details of Objects (every object is custom) -

  1. Client section with a detail of Partners
  2. Partners detail is made from Partner section

I want to change the Partner detail in Client to add multiple records. But I do not understand what should be the values of rootEntitySchemaName, rootColumnName, relatedEntitySchemaName, relatedColumnName.

 

Can anyone please help in this matter?

 

Thanks 

Ram

Like 0

Like

4 comments
Best reply

Hello Ramnath,

 

rootEntitySchemaName is the name of the parent object. This is likely the object for the page where the detail is located, so if the detail is on the Account page, this would be Account

 

rootColumnName is the name of the column on the detail object that relates it to the parent object. In the example of being on the Account page, this would be the name of the column on the detail object that is the account lookup, such as UsrAccount

 

relatedEntitySchemaName is the name of the object you're looking up to add to the detail. So, if the lookup is looking up contacts, this would be Contact

 

relatedColumnName is the name of the column on the detail object that the result from the lookup is stored in. So in the example of looking up contacts, this would be a contact lookup on the detail object, such as UsrContact.

 

Maybe this article will help? https://customerfx.com/article/adding-to-a-detail-from-a-lookup-in-crea…

 

Ryan

Hello Ramnath,

 

rootEntitySchemaName is the name of the parent object. This is likely the object for the page where the detail is located, so if the detail is on the Account page, this would be Account

 

rootColumnName is the name of the column on the detail object that relates it to the parent object. In the example of being on the Account page, this would be the name of the column on the detail object that is the account lookup, such as UsrAccount

 

relatedEntitySchemaName is the name of the object you're looking up to add to the detail. So, if the lookup is looking up contacts, this would be Contact

 

relatedColumnName is the name of the column on the detail object that the result from the lookup is stored in. So in the example of looking up contacts, this would be a contact lookup on the detail object, such as UsrContact.

 

Maybe this article will help? https://customerfx.com/article/adding-to-a-detail-from-a-lookup-in-crea…

 

Ryan

Ryan,

 

Thanks for helping me out.

 

Please guide me in this situation more.

Overview of whole scenario

I created a custom detail in a custom section.  I have created a Section Contacts (neither base object nor replacing object, It is custom made) and Clients Section. Clients section has a detail Contacts. The detail's object name is the Contacts section.

 

Section Page - UsrClients

Detail object - UsrContacts (has lookup of UsrClient for connecting record to UsrClients with other inherited columns present in UsrContacts)

 

Now the name will be

rootEntitySchemaName - UsrClients (section page object name)

rootColumnName - UsrClient  (the referencing lookup present in UsrContacts)

relatedEntitySchemaName - UsrContacts (Section page from where records will be read)

relatedColumnName - UsrContact (lookup present in detail)

 

Now the problem is how can I create a lookup pointing to the same object on which detail is build.

Lookup points to UsrContacts and detail is also created on UsrContacts.

 

RAMNATH SHARMA,

 

The detail should be a separate object. Like in the example on the academy, OpportunityContact object on which the detail is built on contains Opportunity and Contact columns. In your case, you would need to create a separate object for the detail that would contain UsrClients and UscrContacts columns, and build the detail on this object. 

Dennis Hudson,

 

Yes, you are right. I have created a new object with 2 looks fields to add this functionality. And it works.

Thanks

Show all comments

Creatio CRM has the feature of exporting data by filtering some records. Then we can export the data using the export to excel option.

However, for customers(end user) it may be confusing to apply multiple filters.

 

In this case lets suppose I only want to apply filter to only 2 fields.

So I want to create a process which will ask user to input values for those 2 filters. After that process will automatically generate a excel file which have all the records filtered according to the 2 filters input values.

 

Is this possible to do so?

I tried to create process but how to export data I can not figure out.

 

Like 0

Like

4 comments

Hello Ramnath,

 

It is better to use a standard scenario of specifying the filter and exporting records using the "Export to excel" action in the section. If you could create a script-task that could trigger the "ReportService" service and "GetExportToExcelKey" method inside this service based on the filtering parameters than this process could be executed. But we have no examples of this logic implementations so you need to look through the "GetExportToExcelKey" method and test it on your side.

 

Best regards,

Oscar

Hey Oscar,

 

I have very less development experience on Creatio Platform so I can't think I can develop scripts right now.

 

Rather I came up with another solution - Dynamic folder with access rights. So user will have access to the dynamic folder where they can filter record according to two fields. But I am unsure if giving them edit access may result in modifying the filter parameters. 

 

For example I want to find all the records that were created in between a period - I can create a dynamic folder with two fields -

(Created on > date_1 and Created on <date_2)

 

But having access to edit dynamic folder, the customer can also modify Created on parameter to modified on. 

RAMNATH SHARMA,

 

They cannot modify the Created On value of the record (since we are discussing the Created On column for records not for the folder itself (by the way they cannot modify Created On for folders as well)).

 

Yes, the client can modify the parameter itself (replace Created On with Modified On), but the client needs to understand that he/she shouldn't do it. By the way the client can create such a filter on their own (the possibility of advanced filters was developed for such proposes). Why there should be a process that should do this? It is easier to do it manually than via a process.

 

Also you can remove edit access rights for all users in the system using the "Change access rights" process element. As a result the client will see the folder, but won't be able to modify it.

 

Best regards,

Oscar

Oscar,

I thought of making the the process of exporting data easily with one click. That's why I wanted to see if it's possible with process.

Show all comments

Hello, I want to invoke a webservice call passing two parameters

 

https://mindicador.cl/api/{tipo_indicador}/{dd-mm-yyyy}

Where {tipo_indicador} is a string like uf, dolar, euro and so on

and {dd-mm-yyyy} is the current date

 

For example if I want to get the value of today euro change rate i need to invoke

https://mindicador.cl/api/euro/09-04-2020

 

But i cannot create methods to every day...how can I specify the value of the parameters when invoke the web service?, in Creatio Webservice object in the process I was working on have no the possibility to specify parameters, how can I did it?

 

Please see at http://prntscr.com/rw4h8u

 

Thanks in advance

 

 

Like 0

Like

2 comments

Dear Julio, 

 

You can specify web service request parameters in the web service section in the method detail: 

https://prnt.sc/rzx19d

https://prnt.sc/rzxcka

After that you would be able to populate them in the web service call element: 

https://prnt.sc/rzx1i9

Thanks Dennis

Show all comments

Hello I'm getting in a process the following string from a webservice and I want to parse it to and object where can I get the elements the json bring to me, for example I get:

{"version":"1.6.0","autor":"mindicador.cl","codigo":"uf","nombre":"Unidad de fomento (UF)","unidad_medida":"Pesos","serie":[{"fecha":"2020-04-09T04:00:00.000Z","valor":28630.63}]}

 

And I need to parse to get:

nombre

fecha

valor

 

How can I did it?

 

Thanks

Like 0

Like

6 comments

Hello, Julio!

 

Please see the article below on working with the web service response:

https://academy.creatio.com/documents/technic-bpms/7-15/call-web-servic…

If you want to do this differently, you can call web service with a standard C# tools using a script task element and process the response body in a script task. Also, for more flexibility, you can call the web serviced is a script task. Here is an article with an example: 

https://stackoverflow.com/questions/3900371/how-can-i-call-a-webservice…

To parse JSON in script task you can use the following article, for example: 

https://www.codementor.io/@andrewbuchan/how-to-parse-json-into-a-c-object-4ui1o0bx8

Dennis Hudson,

Hello Dennis,

 

I don't know if you are still supporting the community forum, however if you are.  The JSON article uses the System.Web.Script namespace.  When I compile a script task using this namespace an error results saying Script not found within System.Web.  Is there are workaround or an alternative?  Thanks,

Gareth Osler,

 

Hello,

 

As an example I've used the string Julio shared above. To deserialize it I've used the following approach:

 

1) Create a source code in configurations. Name it UsrForCustomObject. The content is as follows:

using System.Collections.Generic;
using Terrasoft.Configuration;
 
namespace Terrasoft.Configuration.UsrForCustomObject
{
	public class UsrForCustomObject
    {
        public string version
        { get; set; }
        public string autor
        { get; set; }
        public string codigo
        { get; set; }
        public string nombre
        { get; set; }
        public string unidad_medida 
        { get; set; }
        public List&lt;InternalUsrForCustomObjectList&gt; serie
        { get; set; }
    }
 
    public class InternalUsrForCustomObjectList
    {
        public string fecha 
        { get; set; }
        public decimal valor 
        { get; set; }
    }
}

2) Create a business process with the following schema:

The code of the parameters is the same as the name:

2.1) Text (500 characters) parameter - ParsedFecha

2.2) Text (500 characters) parameter - ParsedNombre

2.3) Decimal (0.01) parameter - ParsedValor

2.4) Text (500 characters) parameter - ParsedVersion

2.5) Text (500 characters) parameter - PassedJSONString

 

This is the content of the "Methods" tab:

public void PerformJsonDeserialize()
{
	var passedValue = Get&lt;string&gt;("PassedJSONString");
	if (!String.IsNullOrEmpty(passedValue))
	{
		UsrForCustomObject testCustObj = System.Text.Json.JsonSerializer.Deserialize&lt;UsrForCustomObject&gt;(passedValue);
		Set&lt;string&gt;("ParsedVersion", testCustObj.version);
		Set&lt;string&gt;("ParsedNombre", testCustObj.nombre);
		Set&lt;string&gt;("ParsedFecha", testCustObj.serie[0].fecha);
		Set&lt;decimal&gt;("ParsedValor", testCustObj.serie[0].valor);
	}
}

and we are using Terrasoft.Configuration.UsrForCustomObject.

 

Why it's done so: we need to deserialize the passed string and receive an instance of the UsrForCustomObject class we've declared at step 1 in configurations. Deserialization is performed using System.Text.Json.JsonSerializer.Deserialize method (please note that specifying JsonSerializer.Deserialize method with specifying System.Text.Json as an assembly reference will result in error stating that the system cannot understand whether System.Text.Json.JsonSerializer.Deserialize should be used or Newtonsoft.Json.JsonSerializer.Deserialize should be used, so use the exact approach of method call as in my example above).

 

3) "Input JSON string" auto-generated page is quite simple: it tells the user to input JSON string. It's done for testing purposes, in fact actual JSON string can be passed:

4) In the "Set JSON to parameters" formula we specify the value for the "PassedJSONString" parameter that should be the string we've input in the "Input JSON string" auto-generated page from step 3:

5) In the "Deserialize" script-task we call the "PerformJsonDeserialize" method from the process methods from step 2:

6) In the "Result" auto-generated page we simply show the result of deserialization (values for all parameters from step 2):

 

So as a result here is the screenshot of the process start "Input JSON string" auto-generated page where the value of:

{"version":"1.6.0","autor":"mindicador.cl","codigo":"uf","nombre":"Unidad de fomento (UF)","unidad_medida":"Pesos","serie":[{"fecha":"2020-04-09T04:00:00.000Z","valor":28630.63}]}

is passed:

and here is the screenshot of the "Result" auto-generated page:

Also these parsed values can be converted (to date\time for example) and so on. So please feel free to study this example and implement the same logic on your end.

A quick note for anyone who happens this way in the future.

Step 1) above, the namespace name needs to be different from the class name, e.g.:

using System.Collections.Generic;
using Terrasoft.Configuration;
 
namespace Terrasoft.Configuration.UsrCustomerImportNamespace
{
	public class UsrCustomerImport
    {
        public string accountName { get; set; }
        public List&lt;UsrCustomerImportItems&gt; items { get; set; }
    }
 
    public class UsrCustomerImportItems
    {
        public string contactName { get; set; }
        public string contactType { get; set; }
    }
}

 

By way of an epilogue, while the `System.Text.Json` namespace is available in a trial, for some reason it was not available in the dev environment I was using.  However classes in the `Terrasoft.Common.Json` namespace were available.  I was able to use the `Deserialize<T>(String)` method of the Json class.  (Note at the time of writing the `DeserializeDictionary(String)` method has a bug in it and cannot be used.)

@Oleg, 

 

I followed the steps above but receive the attached upon compilation of the methods within business process? 

Show all comments

Hello,

I am trying to add an image field to a fully user generated section in my custom package. I have it working, but when I make a change to the page using the section wizard, it deletes my edits to the diff and methods areas which added in the functionality for the image. How do I add the image method and diff to the page and keep it while making other edits? I tried to do a replacing page but it says I can't make a replacing page in the same package. Then I tried making another page that doesn't replace the parent and it didn't work. Thank you. 

Like 0

Like

0 comments
Show all comments