First off all, if you're just accessing the local install via localhost, you can turn on a development certificate in the bindings for the website in IIS

 

However, if you're accessing it via some name from outside of the server itself, like devserver.mydomain.com, then you can get a free certificate from LetsEncrypt.org. There is a tool you can get from https://CertifyTheWeb.com (that uses LetsEncrypt.org) that you can use to easily add the cert (and keep it renewed) in IIS

 

Ryan

Ryan Farley, thanks. I added IIS Express Development Certificate as you said, but I take not trusted certificate

Nataliia,

 

You'll need to also install the certificate in the Trusted Root Certification Authorities store for the local computer and for the user. 

 

To make it clear, I've recorded a video showing the complete steps here: https://share.customerfx.com/kpuLJxNw - I've also written up the complete steps on my website here https://customerfx.com/article/how-to-run-a-local-development-creatio-i…

 

Hope this helps.

 

Ryan

Ryan Farley, very good instruction, but...

No, It didn`t help( . I reset iis too, clear cash but nothing help (. I see "not secure".

Hello Nataliia,

Repair IIS or try to reinstall IIS from official website.

 

Nataliia,

 

try to repair internet information services (iis) manager or Reinstall it from official website

Show all comments

Hi 

 

I made a Multi Select lookup as described in this article using ConfigurationEnums:

https://academy.creatio.com/documents/technic-sdk/7-16/creating-detail-selection-lookup

It can be also done using LookupMultiAddMixin as described on this article:

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

 

Theses two articles lead to the same result in different ways.

 

In both methods, selected records are filtered out from the selection.

 

My question is how to make the chosen records be shown on the lookup as checked, if they were already chosen.

 

I can cancel the filter but when doing so, chosen records are displayed as not chosen. The check box remain empty.

 

Did anybody succeeded in doing so ?

Like 0

Like

1 comments

Dear Oren,

 

In order to implement the required functionality please debug the “BaseManyToManyGridDetail” and “LookupPage” schemas. Please feel free to use the “IsDebug” mode for it. Please find more information about it in the article by the link below:

 

https://academy.creatio.com/documents/technic-sdk/7-16/isdebug-mode

 

Best regards,

Norton

Show all comments

Hello all,

After I selected Object to inherit access permissions I clicked publish and I got the error: Internal failure occurred while running MSBuild. Has my change been published or more likely it did not? Will this affect my package?

Regards

Like 0

Like

3 comments

Hi Yania,

 

You are using the trial PostgreSQL build and we need to reproduce the same behavior on our end so to tell you the exact reason. Can you please specify for which object have you enabled access rights inheritance and also which object was chosen to inherit access rights from?

 

Thank you in advance!

 

Best regards,

Oscar

Hello Oscar,

I was using Studio demo site where I created a custom section and a details page that belonged to that section. The detail had to inherit permissions from the section. I tried it again today and I got a different error: Errors occurred while compiling configuration. See logs for more details. Then I removed the "inheritance access permissions from" option and while attempting to publish, then I got same error as before regarding MSBuild. I cant publish now because I keep getting the first error "Errors occurred while compiling configuration. See logs for more details". 

Yania,

Hello Yania,

 

Please email us at support@creatio.com and provide us with the link to the app and with access to it and we will take a look at the issue more deeply. We've also enabled logging for PSQL applications and now we should be able to determine the root cause of the problem, but we need to reproduce the error on our end.

 

Thank you!

 

Best regards,

Oscar

Show all comments

Hi;

I create the edit page which contain editable detail on it

When i run this page from section or from process i can edit this detail

when i run it from another edit page by the link in noneditable detail i cant edit it there is no add button and when i enter the detail the data disapear.

 

Regards

Tomek

Like 0

Like

1 comments

Usually, when the data is disappearing, I have had the wrong columns set in the Detail setup in the Page Wizard. If the detail is looking for the wrong columns in the two sections, the link between them is broken. and it will create the records but not show them. It is hard to know without more information. 

Show all comments

Hi;

My wait for timer element last extreamly long

I set wait for timer for 30 secont it takes almost 3 days

any ideas.

Details in attached file

Regards

Tomek

 

File attachments
Like 0

Like

1 comments

Hi Tomek,

 

Seems that you have a huge number of processes that use the timer element and that's why the scheduler can't process some of them in time and also I can see that the next time the timer got started is in the morning after several days. Please apply these two recommendations and there shouldn't be any problems with the timer in the future:

 

1) Please find the "threadCount" parameter in the root Web.config file of the application and change the value of this parameter from 5 (default) to 10 and check the result after that. We do not have a formula so to count the needed value of this parameter and if it won't help you need to try to change the value to 15 and check the timer after that.

 

2) The fact that the timer job was executed in the morning  can tell us that your application goes to the "idle" mode at night (Idle Timeout in IIS). 

 

If this is a cloud-based application please email us at support@creatio.com and ask us to disable the "idle" mode for your app and also modify the value of the "threadCount" parameter. If this is an on-site application please apply needed changes to the root web.config file and disable IIS timeout in the IIS settings.

 

Best regards,

Oscar

Show all comments

I am searching for any article or guidance to add an confirmation message when user tries to change status in a section record, the system first asks user via confirmation message(pop up). The pop message should state whether if you are sure to change state or not with Yes or No option.

I only that there will be use of localizable strings in object schema but how it all adds up to create a pop message.

can anyone help in this matter?

Thank you

Like 0

Like

8 comments
Best reply

I do have this article describing how to show various prompts in Creatio via code, like confirmation dialogs etc.

https://customerfx.com/article/displaying-information-confirmation-and-error-dialogs-in-bpmonline/

 

Is that what you're after?

Ryan

I do have this article describing how to show various prompts in Creatio via code, like confirmation dialogs etc.

https://customerfx.com/article/displaying-information-confirmation-and-error-dialogs-in-bpmonline/

 

Is that what you're after?

Ryan

Hello Ryan,

 

Yes, I am looking for the exact thing. Currently I want to add a Prompting for Choices confirmation dialog written in your article to a section after change in status. 

 

Can you please tell me if any of Creatio CRM section have this in-built (confirmation message) so that I can find the code to understand how to bind functionality or process to the YES or NO button?

 

Thank you

Hello Ramnath Sharma,

 

Current versions of the Creatio CRM don't have such kind of ready in-built pop-up confirmation.

On the other hand you can try to use the methods which were provided by Ryan Farley:

 

https://customerfx.com/article/displaying-information-confirmation-and-…

 

Also in articles below you will be able to find information about other kinds pop-up windows (with input fields, buttons, etc.):

 

https://academy.creatio.com/documents/technic-sdk/7-15/adding-pop-summa…

 

https://academy.creatio.com/documents/technic-sdk/7-15/creating-pop-sum…

 

https://academy.creatio.com/documents/technic-sdk/7-15/creating-pop-sum…

 

https://academy.creatio.com/documents/technic-sdk/7-15/adding-pop-hints

 

You can also analyse the the any minipage code and create a custom page that would open upon your preferred conditions.

 

Best regards,

Roman

RAMNATH SHARMA,

 

Yes, you can use that code in a section, page, or anywhere in Creatio. To do a Yes/No prompt, you'd add code like this (from the article I posted)

Terrasoft.showConfirmation("Would you like to do the thing?", function(result) { 
    if (result === Terrasoft.MessageBoxButtons.YES.returnCode) {
        // the user selected "yes" - do something here if needed
    }
    else {
        // the user selected "no" - do something here if needed
    }
}, ["yes", "no"], this);

To show this confirmation after the user changes the Status field, you'd need to wire up a change event for that column, I describe how to do that here: https://customerfx.com/article/triggering-an-event-when-a-field-is-changed-on-a-page-in-bpmonline/

 

Inside the method that fires when the Status column is changed, you'd place the code above, and could then react as needed.

 

Hope this helps,

Ryan

Thank you Roman and Ryan.

 I will follow the suggested articles to implement pop up confirmation.

Ryan Farley,

Is it possible to send these informational / confirmation messages from business processes (Script tasks, maybe) ?

Ryan Farley,

Hi,

I want to use this code, but not sure where to add the code to?

Is that in a script task of a process?

Thanks

Chani Karel,

The code listed above and in the linked article are for client-side code (code that would exist on a page). It is possible to send a message from a process that would get received on a page, but that does require some programming on both sides (a script task in a process and also modifying code on a page, or somewhere in the client to receive the message from the process and display the prompt - however, there's no way to get the result of the prompt back to the process so it can proceed according to the value selected). This article explains how to send a message from a process to be received in the client https://customerfx.com/article/sending-a-message-from-server-side-c-to-…

Ryan

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

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<InternalUsrForCustomObjectList> 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<string>("PassedJSONString");
	if (!String.IsNullOrEmpty(passedValue))
	{
		UsrForCustomObject testCustObj = System.Text.Json.JsonSerializer.Deserialize<UsrForCustomObject>(passedValue);
		Set<string>("ParsedVersion", testCustObj.version);
		Set<string>("ParsedNombre", testCustObj.nombre);
		Set<string>("ParsedFecha", testCustObj.serie[0].fecha);
		Set<decimal>("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<UsrCustomerImportItems> 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