I want to add a field validation in freedom ui, like, it's a date field then i want to impose a condition if date selected by the user is backdate then don't allow the record to be saved.(Freedom UI)

Like 0

Like

4 comments

Hey,
So for example if you have a date field as dateofPM and you want to prevent the user to choose a date, which is before the date of the CreatedOn of the record 
Below is a Example of the code:
 

Hope this helps.

 

thanks but i want it in freedom ui, so where to write this js code

Ryan Farley,

Thanks Ryan, I tried this, but it didn't work, I will share my code here of this approach meanwhile I tried applying validation popup using handler, if you can suggest me any handler/function which will prevent saving the record if the control passes to this handler? this is my handler code:

 

 

Show all comments

I want to confirm that this logic is setup correctly. We want to send an email every three months on the 17th to remind our customers of a specific benefit. The logic is already in place from an audience standpoint.


The timer element in the campaign setup is slightly confusing. Based on this logic below: 

Will the email launch at 8:00 AM beginning on July 17th and then recur on the 17th every 3 months? The delivery timeframe parameter of the email is from 8:00-9:00 AM. Thanks in advance.

Best,

Lucas
 

Like 0

Like

0 comments
Show all comments

Dear..

We've reviewed Creatio's documentation and noticed it exclusively supports HTTPS. Does Creatio Mobile Application development also support the HTTP protocol? Additionally, could you please provide information on the following:
1. Compatibility of Creatio Mobile?
2. Is a separate APK build necessary for developing the mobile application?
3. Does the web application used by the mobile app require a separate APK?

Like 1

Like

5 comments

Good day, 

The answers to some of your questions, are as follows:

Does Creatio Mobile Application development also support the HTTP protocol?
HTTP is supported for the debug mode only when testing the application locally.
For a production environment, you would require HTTPS.

Is a separate APK build necessary for developing the mobile application?

Yes, a separate APK build is necessary for developing the mobile application.

Please be so kind as to elaborate more on the other questions of yours:
1. Compatibility of Creatio Mobile?
What information do you require on the compatibility for Creatio Mobile?
3. Does the web application used by the mobile app require a separate APK?

Please elaborate on this question further.

@Thank you Nikita for your reply.

Yes, a separate APK build is necessary for developing the mobile application--> How to build the apk ,could you please share us a documents and links.
We are following the below document to develop the mobile application in Creatio.

 

https://academy.creatio.com/docs/8.x/creatio-apps/creatio-basics/mobile…

Hello again,

Would it be possible for you to clarify what you mean by building the apk? 

If we are speaking of a Creatio mobile application, the application itself is available for download on various devices and requires no development to start using out of the box.

Nikita Kudin,

Thank you. Could you please share us a document and links recent one related to mobile.
Question : Workbasket/work queue concept is there in Creatio mobile application?

Nikita Kudin,

Could you please help us to achieve the functionality to display the cases that are assigned to the current user who logged into the mobile application. Instead of displaying the cases assigned to all users. 

We are able to achieve this functionality in web application but unable to achieve the same in mobile application. 

Show all comments

Is HTTP protocol supports the building of Creatio Mobile Application? I have gone through the documentation i could see it supports only HTTPS. 
Here are some questions could you please provide some information
1.Creatio Mobile Comparability?
2.For building Mobile Application is required to have a separate APK build?
3.The web application which is used by the mobile app does it need Separate APK?

Like 0

Like

1 comments

Hello,

 

HTTP protocol supports the building of the Creatio Mobile Application, mainly for debugging purposes. For production, however, the HTTPS protocol is required. 

 

Right now, we can provide an answer to the question 2:

Yes, it is required to have a separate APK build.

 

As for the other two questions, kindly specify the details so we can provide you with a more accurate answer.

Show all comments

Hello!

I'm trying to make an integration with a digital signature call "Firmamex" and I trying to use the code that they provide in their SDK in a business process but i have error messages that dont let me publish the script task. 

This are the errors 

 

And this is the source code of the process. I already try to put a return true; at the end of the script task but stills send me the error. 

 

I hope you can help me.

 

namespace Terrasoft.Core.Process
{
 
    using Newtonsoft.Json;
    using SignmageSDK;
    using SignmageSDKCore;
    using System;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    using System.Drawing;
    using System.Globalization;
    using System.Text;
    using System.Web;
    using Terrasoft.Common;
    using Terrasoft.Configuration;
    using Terrasoft.Core;
    using Terrasoft.Core.Configuration;
    using Terrasoft.Core.DB;
    using Terrasoft.Core.Entities;
    using Terrasoft.Core.Process;
    using Terrasoft.Core.Process.Configuration;
 
    #region Class: UsrfirmamexMethodsWrapper
 
    /// <exclude/>
    public class UsrfirmamexMethodsWrapper : ProcessModel
    {
 
        public UsrfirmamexMethodsWrapper(Process process)
            : base(process) {
            AddScriptTaskMethod("ScriptTask1Execute", ScriptTask1Execute);
        }
 
        #region Methods: Private
 
        private bool ScriptTask1Execute(ProcessExecutingContext context) {
            }
            public class Flow
                {
                    SignmageSDK.FirmamexServices signmageServices;
                    String base64;
                    String name;
 
                    public Flow(SignmageSDK.FirmamexServices signmageServices, String base64, String name)
                    {
                        this.signmageServices = signmageServices;
                        this.base64 = base64;
                        this.name = name;
                    }
 
                    public String request()
                    {
                        B64_doc b64_doc = new B64_doc { name = name, data = base64 };
 
                        JObject flujoEjemplo = JObject.FromObject(new
                        {
                            b64_doc = b64_doc,
                            stickers = new object[] {
                                new {
                                    authority = "SAT",
                                    stickerType = "line",
                                    dataType = "rfc",
                                    data = "ARCX9012226P8",
                                    imageType = "hash",
                                    email = "jhon@gmail.com",
                                    page = "0",
                                    rect = new Rect { lx = 226.45f, ly = 355.25f, tx = 397.75f, ty = 413.85f }
                                }
                            },
                            workflow = new object[] {
                                new {
                                    data = "ARCX9012226P8"
                                }
                            },
                            app2 = true
                        });
 
                        String flujoParams = flujoEjemplo.ToString(Formatting.None);
                        return signmageServices.request(flujoParams);
                    }
                }
            };
        }
 
        #endregion
 
    }
 
    #endregion
 
}
Like 0

Like

1 comments

Hello Laura,
Thank you for your question.

I have some updates regarding you issue. 

First of all, indeed the generated code contains errors in lines 88 and 92 due to #endregion directives are being set in the wrong place.
1

Secondly, if you have a script task in your business process you might want to return a bool value inside it because the body of the script task if actually a body of a generated method (in your case ScriptTask1Execute).


Thirdly, it is impossible from my side to verify implementation of third-party code so i am unable to state that the code you provided will work. 

Lastly, if you have multiple versions of your business process that contain compilation errors, it is recommended to either correct them in all versions or delete them in the Configuration section of your application.

Show all comments

Creatio Community,

 

Is it possible to add to the Creatio Login Page the show password icon you get on some other logon windows/pages (like the one from Windows Security. See Attached.) 

Thanks,

Jose

 

Like 0

Like

1 comments
Best reply

Hello,

It is possible to show a password icon on your site. To do this, you must add and enable the feature: "UsePasswordIconForTextEdit" on the feature page.

More information about this page can be found in this article on the Creatio Academy:
https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platform/platform-customization/interface-control-tools/existing-feature/overview#title-3459-7

Hello,

It is possible to show a password icon on your site. To do this, you must add and enable the feature: "UsePasswordIconForTextEdit" on the feature page.

More information about this page can be found in this article on the Creatio Academy:
https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platform/platform-customization/interface-control-tools/existing-feature/overview#title-3459-7

Show all comments

Hi, 

 

var esqCount = new EntitySchemaQuery(userConnection.EntitySchemaManager, "Project"); esqCount.AddAllSchemaColumns(); 

esqCount.UseAdminRights = false; 

esqCount.RowCount = 0; // No limit

var totalRecords = esqCount.GetEntityCollection(userConnection).Count;

 

totalRecords value is always coming as 0 but there are 22460 records present in the Project object.

 

Can anyone please help where I am making mistake?

 

Thanks.

Like 0

Like

4 comments

You can use something like this: 

var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Project");
var countCol = esq.AddColumn(esq.CreateAggregationFunction(AggregationTypeStrict.Count, "Id")).Name;
 
// add any filters if needed
 
var entityCollection = esq.GetEntityCollection(UserConnection);
var entity = entityCollection[0];
 
var count = entity.GetTypedColumnValue&lt;int&gt;(countCol);

You need to add a column that creates an aggregate function (count). Then, when you get the results from GetEntityCollection you'll get the first item in the results to get the Count value.

Ryan

Hello,
Thank you for your question.

This line of code is the source of your concern: 

esqCount.RowCount = 0;

RowCount is a property which is responsible for the number of readable elements from your query.

Also note that UseAdminRights is a flag that determines whether access rights will be checked for performing CRUD operations with the database. When UseAdminRights is set to false, the rights check is disabled, and operations are performed without considering access rights.

Hope this helps.

Ryan Farley,

Thanks for answering , I am having hard time to fix this piece of code please see if you can help me -

var selectQuery = new Select(userConnection)
                           .Column("Project", "Id").As("ProjectRecordId")
                           .Column("Project", "UsrProjectID").As("ProjectId")
                           .Column("Project", "Name").As("ProjectName")
                           .Column("Project", "UsrProjectDescription").As("ProjectDescription")
                           .Column("UsrEntitlements", "UsrNumber").As("Entitlements")
                           .Column("ServicePact", "Number").As("ServiceContract")
                           .Column("Project", "CreatedOn").As("CreatedOn")
                           .Column("Contact", "Email").As("CreatedByEmail")
                           .Column("Project", "ModifiedOn").As("ModifiedOn")
                           .Column("Contact", "Email").As("ModifiedByEmail")
                           .From("Project")
                           .Join(JoinType.LeftOuter, "UsrEntitlements").On("Project", "UsrEntitlementsId").IsEqual("UsrEntitlements", "Id")
                           .Join(JoinType.LeftOuter, "ServicePact").On("Project", "UsrServiceContractId").IsEqual("ServicePact", "Id")
                           .Join(JoinType.LeftOuter, "Contact").On("Project", "CreatedById").IsEqual("Contact", "Id")
                           .Join(JoinType.LeftOuter, "Contact").On("Project", "ModifiedById").IsEqual("Contact", "Id")
                            as Select;

Screenshot - 

And the error I am getting is - Error: 42712: table name "Contact" specified more than once.

 

Thanks.

AS,

You're joining to the Contact table twice, but not aliasing them (which means they are both named "Contact")

Change the contact joins to include As

.Join(JoinType.LeftOuter, "Contact").As("CreatedContact").On("Project", "CreatedById").IsEqual("Contact", "Id")
.Join(JoinType.LeftOuter, "Contact").As("ModifiedContact").On("Project", "ModifiedById").IsEqual("Contact", "Id")

Then use them using that alias: 

 .Column("ModifiedContact", "Email").As("ModifiedByEmail")

Also, as an FYI, you can change those joins like this, which I think reads better and less wordy:

.LeftOuterJoin("Contact").As("CreatedContact").On("Project", "CreatedById").IsEqual("Contact", "Id")
.LeftOuterJoin("Contact").As("ModifiedContact").On("Project", "ModifiedById").IsEqual("Contact", "Id")

Ryan

Show all comments

I need to be able to read the name of the current user in a business process so I can insert it in a comment section (not as the GUID).

 

I was thinking I could look up contact (or user) where the ID equals the system variable current user but that doesn't work. 

Like 0

Like

2 comments

You must first create a param in your process with Type=Unique Identifier and set the param value to [#System variable.Current user contact#]

Then you can use that param when reading from Contact

Ryan

Great, thanks Ryan. 

 

Show all comments

Hello, I would like to get assistance on how to implement the "Account Addresses" detail within contacts section, inside activities for the mobile app. When you view a contact in the mobile app and see their addresses in the "Account addresses" detail you can click the address and it will open the native maps app on your phone so you can get directions. 

 

How do I set this up within the activities section of the mobile app so that if I put in a location, it can be a clickable field similar to Contacts section?

 

Also, is there a way to pull in the contact's address to the activity that can be clicked to open the maps app?

 

Thank you,

 

Eric

Like 2

Like

1 comments

Hello Eric,
Thank you for your question.

Yes, it is possible. For the example, in Configuration menu i added an object (UsrActivityAddress) with a parent object - BaseAddress and a column UsrActivity with data source - Activity, which links UsrActivityAddress with Activity. 

Then go to Mobile application wizard. Here i created a custom workplace and added Activity section to the workplace. In page setup:


Save and go to Configuration. There search you need to search for the name of the detail that mobile wizard provides for the detail on the page you just added. For this search for MobileActivityRecordPageSettings[plus the name of workplace you are adding activity with address to]. In my case it was UsrMobileActivityRecordPageSettingsUsrTestMobile. After that scroll down and find items which represent fields that you added to mobile section page wizard. The name of the detail looks might look like this "UsrSchema302ae53eDetailEmbeddedDetail". Copy the value and go to the top of file.

Then you need to add viewConfigDiff:1
Here you delete those details fields from you mobile page layout and you merge AddressPreview component. If the column name was Address in viewConfigDiff it becomes [name of your detail in mobile wizard]_ItemLayout_[column name]. 

Also note, that this component is not described on the Academy and designed for internal usage thus in not recommended for public usage in current version.

Hope this helps
 

Show all comments

Hello,

I'm trying to add a button to contact page details (Contacts_FormPage), I'm currently using Creatio on cloud version 8.1.3.6734 with Freedom UI
I followed these steps:

  1. Navigated to Settings > Advanced Settings
  2. Created a new package, and added ProductCore dependency
  3. Created a Replacing view model with the code name ContactPageV2
  4. Added the code:
  5. define("ContactPageV2", [], function() {
       console.log("ContactPageV2 module loaded");
       return {
           methods: {
               onGenerateLinkClick: function() {
                   console.log("Generate Link button clicked");
               }
           },
           diff: [
               {
                   "operation": "insert",
                   "name": "GenerateLinkButton",
                   "parentName": "ActionButtonsContainer",
                   "propertyName": "items",
                   "values": {
                       "itemType": Terrasoft.ViewItemType.BUTTON,
                       "caption": "Generate Link",
                       "click": {"bindTo": "onGenerateLinkClick"}
                   }
               }
           ]
       };
    });
  6. After saving, I compiled the package
  7. Emptied the cache of the browser, but nothing is showing not even the console log "ContactPageV2 module loaded"

 

Please help as I'm not sure what I'm doing wrong or what steps am I missing (I'm a newbie to this platform).
Thank you in advance.

Like 0

Like

2 comments
Best reply

Creatio has two types of pages, Freedom UI pages and classic pages. They are completely separate/different pages. The ContactPageV2 is the classic page, not the Freedom UI page which is Contacts_FormPage

To add the button that executes your code on the Freedom UI page:

  1. Go to the contact page, click the small gear on the top right corner of the page to edit
  2. Save it to make a copy in your package (see the Side Note at end of article here to force the save to go into your package, if needed)
  3. Add a button to the page where you want it
  4. Open the code for the page (clicking one of the icons at the top right of the page designer)
  5. Add the request handler for the button (the code that will execute when clicked) following steps here: https://customerfx.com/article/adding-a-button-to-execute-custom-code-o…

Ryan

Creatio has two types of pages, Freedom UI pages and classic pages. They are completely separate/different pages. The ContactPageV2 is the classic page, not the Freedom UI page which is Contacts_FormPage

To add the button that executes your code on the Freedom UI page:

  1. Go to the contact page, click the small gear on the top right corner of the page to edit
  2. Save it to make a copy in your package (see the Side Note at end of article here to force the save to go into your package, if needed)
  3. Add a button to the page where you want it
  4. Open the code for the page (clicking one of the icons at the top right of the page designer)
  5. Add the request handler for the button (the code that will execute when clicked) following steps here: https://customerfx.com/article/adding-a-button-to-execute-custom-code-o…

Ryan

Thank you! 
I was able to add it following your explanation. 
And yes I need to add it to my custom package since I'm trying to create a connector that can be used by anyone later on.
That was very insightful, thanks again!

Show all comments