I have created 3 new sections using section wizard and changed name of the UsrName field in all of them because I wanted different names.

But now whenever I publish any new object or compile items, I get this error. Is there any way to sort it out.

I am using demo environment.

Thank you

Like 0

Like

6 comments

Creatio does not like it when the UsrName is changed. You will need to change it back. You can change the title, but you cannot change the Name. You can, however, not use it. If you create a new String, you can change the Displayed Value in the Advanced Settings for the object to the new String you made. This changes the blue links to the new string instead of the UsrName.

 

Reid Burger,

 

Thanks for clarification.

I also would like to know if I can change the Required - At application level to No for UsrName.

RAMNATH SHARMA,

 

It is fine to change properties like required at application level to no. If the field is being used as the display value (like the name field) then having it blank would mean nothing would show in a lookup (if its used as a lookup somewhere). 

 

BTW it's usually a good idea to not rename column or object names and only change the titles once they're created. 

 

Ryan

Ryan Farley,

I changed back the names to UsrName using section wizard (which I later realized shouldn't have changed them back). Then I compiled the current workspace from Advanced settings to see if still any error occurs. 

Here are some screenshots

Now The errors are because I changed back the name to UsrName, it says that the old Name - UsrClaimant don't exist.

I also opened the source code where these errors were pointing to - 

 

 

But I can not edit the source code in Cloud demo instance.

Is there any way to change the source code or any process to correct these source codes?

 

Ramnath

Hi Ramnath,



As Reid mentioned, we do not recommend to change the name after the section being created.



If such an issue appears you can simply generate source code for all objects that are mentioned in compilation errors and compile modified items. If all necessary items were not removed this should fix the issue



Thank you.

Bohdan Zdor,

Thanks. I will definitely try this out.

Show all comments

When one of our contacts becomes unsubscribed, we would like to notify our manager about it.

How is it possible? With a business process? But I couldn't catch the unsubscribed event. Is there another way?

Like 0

Like

1 comments
Best reply

Yuriy,

 

You won't be able to catch the response on the bulk email using the signal process element (since this data is added to the database directly) however you can create a process with the timer that will review the "Response in Email" object and check if a new "Unsubscribe" response was added. You can create a time parameter and use it as a filtration condition (in the "Created On" field). So you can run this process once per hour, read the collection of records in the process (from the "Response in Email" object) and use this data.

Yuriy,

 

You won't be able to catch the response on the bulk email using the signal process element (since this data is added to the database directly) however you can create a process with the timer that will review the "Response in Email" object and check if a new "Unsubscribe" response was added. You can create a time parameter and use it as a filtration condition (in the "Created On" field). So you can run this process once per hour, read the collection of records in the process (from the "Response in Email" object) and use this data.

Show all comments

In order to delete an address on Account page, I need to click Actions first, then press the Delete button.

 

I would like to use a hotkey for this. How could I do it? I've seen this question, but don't know how to adapt it to my needs. Should I modify the code of AccountPageV2 for this? How to get the selected address row?

Or maybe this improvement is already planned in Creatio's next releases?

Like 0

Like

1 comments
Best reply

Hello Yuriy, 



In order to implement the requested functionality please create a replacing module for "AccountAddressDetailV2" and override "onGridDataLoaded" method in it ( It's being called after rendering). 

In this method you can retrieve a detail's grid and get the DOM element from it. You can assign your own handler on it's keydown event whcih will call  "this.deleteRecords()" after pressing the needed button. 



Here is the example for the "Delete" button in "AccountAddressDetailV2":



define("AccountAddressDetailV2", [], function() {

    return {

        entitySchemaName: "AccountAddress",

        diff: /**SCHEMA_DIFF*/ [] /**SCHEMA_DIFF*/,

        methods: {

            onGridDataLoaded: function() {

                this.callParent(arguments);

                var grid = this.getCurrentGrid();

                var wrapEl = grid.getWrapEl();

                wrapEl.on("keydown", this.onKeyDown, this);

            },

            onKeyDown: function(event) {

                if (event.keyCode === event.DELETE) {

                    this.deleteRecords();

                }

            }

        }

    };

});



Kind regards,

Roman 

Hello Yuriy, 



In order to implement the requested functionality please create a replacing module for "AccountAddressDetailV2" and override "onGridDataLoaded" method in it ( It's being called after rendering). 

In this method you can retrieve a detail's grid and get the DOM element from it. You can assign your own handler on it's keydown event whcih will call  "this.deleteRecords()" after pressing the needed button. 



Here is the example for the "Delete" button in "AccountAddressDetailV2":



define("AccountAddressDetailV2", [], function() {

    return {

        entitySchemaName: "AccountAddress",

        diff: /**SCHEMA_DIFF*/ [] /**SCHEMA_DIFF*/,

        methods: {

            onGridDataLoaded: function() {

                this.callParent(arguments);

                var grid = this.getCurrentGrid();

                var wrapEl = grid.getWrapEl();

                wrapEl.on("keydown", this.onKeyDown, this);

            },

            onKeyDown: function(event) {

                if (event.keyCode === event.DELETE) {

                    this.deleteRecords();

                }

            }

        }

    };

});



Kind regards,

Roman 

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

Hi, 

 

Hope someone can help me with replicating OrdersProducts in Quotes Section. I have tried that and while click on + icon products are not displaying.

 

Thank you.

Like 0

Like

7 comments

Dear Sushma,

The logic of the Product detail is implemented in OrderPage so if you page ss inherited from the BaseModulePage base page it will not work. You can investigate order page schema code to copy it to your new section or try the following example (the page should be modified according to the settings of your detail, otherwise it will not work):

define("UsrOrder3Page", ["EntityProductCountMixin"], function() {

    return {

        entitySchemaName: "Order",

        messages: {

            "GetOrderProductSummary": {

                mode: Terrasoft.MessageMode.PTP,

                direction: Terrasoft.MessageDirectionType.SUBSCRIBE

            },

            "UpdateOrderProductSummary": {

                mode: Terrasoft.MessageMode.PTP,

                direction: Terrasoft.MessageDirectionType.PUBLISH

            },

        },

        mixins: {

            EntityProductCountMixin: "Terrasoft.EntityProductCountMixin"

        },

        attributes: {

            "Currency": {

                dataValueType: Terrasoft.DataValueType.ENUM,

                lookupListConfig: {

                    columns: ["Division", "ShortName", "Symbol"]

                }

            },

            "AmountAndCurrency": {

                dependencies: [

                    {

                        columns: ["Amount", "Currency"],

                        methodName: "updateOrderProductSummary"

                    }

                ]

            },

            "IsPaymentAmountLargerThanAmount": {

                dataValueType: this.Terrasoft.DataValueType.BOOLEAN,

                type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,

                value: false,

                dependencies: [

                    {

                        columns: ["PaymentAmount", "Amount"],

                        methodName: "setIsPaymentAmountLargerThanAmount"

                    }

                ]

            }

        },

        modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,

        details: /**SCHEMA_DETAILS*/{

            ProductInProductsTab: {

                schemaName: "OrderProductDetailV2",

                entitySchemaName: "OrderProduct",

                filter: {

                    masterColumn: "Id",

                    detailColumn: "Order"

                },

                subscriber: {methodName: "refreshAmount"},

                defaultValues: {

                    Currency: {masterColumn: "Currency"},

                    CurrencyRate: {masterColumn: "CurrencyRate"}

                }

            }

        }/**SCHEMA_DETAILS*/,

        businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,

        methods: {

            refreshAmount: function() {

                this.updateAmount(function() {

                    this.updateOrderProductSummary();

                }, this);

            },

            subscribeSandboxEvents: function() {

                this.callParent(arguments);

                this.sandbox.subscribe("GetOrderProductSummary", this.getProductSummaryConfig, this,

                    [this.getDetailId("ProductInProductsTab")]);

            },

            updateOrderProductSummary: function() {

                this.sandbox.publish("UpdateOrderProductSummary", null,

                    [this.getDetailId("ProductInProductsTab"), this.getDetailId("ProductInResultsTab")]);

            },

            getProductSummaryConfig: function() {

                var currency = this.get("Currency") || {};

                return {

                    count: this.get("ProductCount"),

                    currency: currency.Symbol,

                    amount: this.get("Amount")

                };

            },

            setIsPaymentAmountLargerThanAmount: function() {

                var paymentAmount = this.get("PaymentAmount");

                var amount = this.get("Amount");

                var isLarger =

                    this.isNotEmpty(paymentAmount) &&

                    this.isNotEmpty(amount) &&

                    (paymentAmount > amount);

                this.set("IsPaymentAmountLargerThanAmount", isLarger);

            },

            onSaved: function() {

                this.callParent(arguments);

                var config = arguments[arguments.length - 1];

                if (config && config.isSilent) {

                    return;

                }

                this.updateAmountAfterSave("ProductInProductsTab",

                    function() {

                        this.updateDetail({detail: "ProductInResultsTab"});

                        this.updateOrderProductSummary();

                    },

                    this

                );

            },

            loadEntity: function(primaryColumnValue, callback, scope) {

                scope = scope || this;

                this.callParent([primaryColumnValue, function() {

                    this.setIsPaymentAmountLargerThanAmount();

                    this.setProductCount(primaryColumnValue, callback, scope);

                }, scope]);

            },

            getProductCountInEntityColumnName: function() {

                return "ProductCount";

            },

            setColumnValues: function(entity) {

                this.callParent(arguments);

                this.updateProductsCount(entity);

            },



            modifyAmountESQ: function(esq) {

                this.mixins.ProductEntryPageUtils.modifyAmountESQ.apply(this, arguments);

                this.addProductsCountColumn(esq);

            },

            updateAmountColumnValues: function(entity) {

                this.mixins.ProductEntryPageUtils.updateAmountColumnValues.apply(this, arguments);

                this.updateProductsCount(entity);

            },

            addProductsCountColumn: function(esq) {

                esq.addAggregationSchemaColumn("[OrderProduct:Order].Id",

                        this.Terrasoft.AggregationType.COUNT, "ProductCount");

            },

            updateProductsCount: function(entity) {

                var countColumn = "ProductCount";

                this.setColumnValue(countColumn, entity.get(countColumn), {preventValidation: true});

            }

        },

        dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/,

        diff: /**SCHEMA_DIFF*/[

            {

                "operation": "insert",

                "name": "ProductInProductsTab",

                "values": {

                    "itemType": 2,

                    "markerValue": "added-detail"

                },

                "parentName": "Tab0686e409TabLabel", //detail placement

                "propertyName": "items",

                "index": 0

            }

        ]/**SCHEMA_DIFF*/

    };

});

Angela Reyes,

Thank you for your help.  I successfully replicated that functionality. But Currency is not updating in ProductsSection when currency is changed in maing page.

sushma,

Can you please specify how it is not updated? Do you mean the currency that is specified in the price list? 

Angela Reyes,

There is multicurrency amount field in Quote page wich is sum of amounts of all products of detail and is not working as expected. when changing currency of amount field in quote page and click on save getting error as shown in attachment.

sushma,

It is hard to find the reason of this error as it is a custom object and there is no information in the pop-up. Try to debug (

https://academy.creatio.com/documents/technic-sdk/7-15/client-code-debugging) the application using developer tools to locate what causes this error. 

when trying to debug when i change 

 "Currency": {

                dataValueType: Terrasoft.DataValueType.ENUM,

                lookupListConfig: {

                    columns: ["Division", "ShortName", "Symbol"]

                }

            },

to  "Currency": {

                dataValueType: Terrasoft.DataValueType.LOOKUP,

                lookupListConfig: {

                    columns: ["Division", "ShortName", "Symbol"]

                }

            },

Error is not coming as it says when updating there is mismatch with datatype of currency. But still detail is not updating when currency is changed and total amount is not updating based on sum of amounts of all products

sushma,

why are you trying to change currency to lookup type? It should remain ENUM

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

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

I need to have the total price with tax (Quebec taxes) but it doesn't work. I can see the tax amount but it's not added to the total amount of the order. 

1. I defined the tax value in "Taxes lookup" (See screenshot)

2. I have Price includes taxes set to have the tax in the total 

3. I defined quebec taxes as default tax in system settings

 

I'm I missing anything ??

Like 0

Like

4 comments

Sanae ADRAR,

 

Hello,

 

Seems that due to your business task you need to disable the system setting. Please disable the system setting, relogin to the system, create new order, add a product there and check the result.

 

Best regards,

Oscar

Oscar Dylan,

Wow it's working !! Thank you Oscar !

Show all comments

Hi Community, 

I have two questions about mobile app usage : 

1. Where can we have access to emails using the mobile app

2. Same question about changing lead or opportunity stages, We don't see them in the mobile app. How can we have the same view of stages in the mobile app as in the web page. 

 

Thank you 

 

Like 0

Like

2 comments

Hello!

 

1) As far as I know, the mobile app is not the best option for working with emails since email app could handle this task much better. You can create a detail from the activity object to view them. If you want to send emails it will be better to use mailbox application.

 

2) To see or edit stages you can add "stage" field to the edit page in the mobile app. If you mean DCM panel then, unfortunately, this functionality is not supported, however, this functionality may be added in the upcoming releases

 

Best regards,

Angela

 

Clear. Thank you !!

Show all comments

Hi everybody,

 

I'm trying to introduce a method that when selecting an element from the grid, it saves the id of an attribute in a variable I created and when I delete that same record it has to start a process.

However, when I run all this pops up this error.

This is the code i implemented in order to achieve this.

Thanks in advance.

 

Best regards,

Pedro Pinheiro

Like 1

Like

2 comments
Best reply

The order of the modules at the top doesn't match/line up. You have this:

define("imdSchema10Detail", ["ConfigurationGrid", "ConfigurationGridGenerator", "ConfigurationGridUtilities", "ProcessModuleUtilities"] function(ProcessModuleUtilities) {

You're actually getting ConfigurationGrid loaded into the ProcessModuleUtilities param since it's the first AMD module listed, which will go into the first param. You need to change the order to this:

define("imdSchema10Detail", ["ProcessModuleUtilities", "ConfigurationGrid", "ConfigurationGridGenerator", "ConfigurationGridUtilities"] function(ProcessModuleUtilities) {

Ryan 

The order of the modules at the top doesn't match/line up. You have this:

define("imdSchema10Detail", ["ConfigurationGrid", "ConfigurationGridGenerator", "ConfigurationGridUtilities", "ProcessModuleUtilities"] function(ProcessModuleUtilities) {

You're actually getting ConfigurationGrid loaded into the ProcessModuleUtilities param since it's the first AMD module listed, which will go into the first param. You need to change the order to this:

define("imdSchema10Detail", ["ProcessModuleUtilities", "ConfigurationGrid", "ConfigurationGridGenerator", "ConfigurationGridUtilities"] function(ProcessModuleUtilities) {

Ryan 

Ryan Farley,

​​​​​​The solution you provided is working. 

 

Thank you.

 

Best regards,

Pedro Pinheiro

Show all comments