There is a requirement in which I have to make printable visible on the basis of data in the connected object. I followed this article https://customerfx.com/article/showing-or-hiding-printables-based-on-a-value-for-the-selected-record-in-creatio/.

 

It is working fine on the combined mode in edit page and only showing printable which is matching with the condition, but the same is not reflecting on the separate mode in edit page and showing the complete list of printable.

 

Is there something which I am missing or any other workaround ?

Methods which I have added on section is :

initQueryColumns: function(esq) {

                                                          this.callParent(arguments);

 

                                                          if (!esq.columns.contains("Id")) {

                                                                        esq.addColumn("Id");

                                                          }

                                           },

 

                                           GetDocumentCollection: function() {

                                                                        var recObj = [];

 

                                                                        var id =  this.get("GridData").get(this.get("ActiveRow")).get("Id");

                                                                        var esq = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "Document" });

                                                                        esq.addColumn("UsrDocumentName.Name");

                                                                        esq.filters.add("UsrTransactions", Terrasoft.createColumnFilterWithParameter(

                                                                                      Terrasoft.ComparisonType.EQUAL, "UsrTransaction", id));

                                                                        esq.getEntityCollection(function(result) {

                                                                                      var response = result.collection;

                                                                                      var hasRecord = (response.collection.length !== 0);

                                                                                      if(hasRecord) {

                                                                                      result.collection.each(function(item) {

                                                                                                    recObj.push(item.get("UsrDocumentName.Name"));

                                                                                      });

                                                                                      }

                                                                        this.set("DocumentCollection",recObj);

                                                                                     

                                                                        }, this);

                                                         

                                           },

                                           initCardPrintForms: function() {

                                                          this.callParent(arguments);

                                                          var printMenuItems = this.get(this.moduleCardPrintFormsCollectionName);

                                                          if (Ext.isEmpty(printMenuItems)) return;

                                                         

                                                          printMenuItems.each(function(item) {

                                                                        item.set("Visible", {bindTo: "getPrintMenuItemVisible"});

                                                          }, this);

                                           },

                                           getPrintMenuItemVisible: function(reportId) {

                                                          if (Ext.isEmpty(this.get("ActiveRow"))) return true;

                                                          var Id = this.get("GridData").get(this.get("ActiveRow")).get("Id"),

                                                                        printMenuItems = this.get(this.moduleCardPrintFormsCollectionName),

                                                                        item = printMenuItems.find(reportId);

                                                          this.GetDocumentCollection();

                                                          if (Ext.isEmpty(item)) return;

                                                          var ReportName = item.get("Caption");

                                                          var DocCollection = this.get("DocumentCollection");

                                                          if(DocCollection === undefined){

                                                                        return false;

                                                          }

                                                          else{

                                                                        if(DocCollection.includes(ReportName)){return true;}

                                                                        else{return false;}

                                                                                     

                                                          }

                            

                                           }

Methods which I have added on edit page is :

                                                         GetDocumentCollection: function() {

                                          

                                                                        var recObj = [];

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

                                                                        var esq = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "Document" });

                                                                        esq.addColumn("UsrDocumentName.Name");

                                                                        esq.filters.add("UsrTransactions", Terrasoft.createColumnFilterWithParameter(

                                                                                      Terrasoft.ComparisonType.EQUAL, "UsrTransaction", id));

                                                                        esq.getEntityCollection(function(result) {

                                                                                      var response = result.collection;

                                                                                      var hasRecord = (response.collection.length !== 0);

                                                                                      if(hasRecord) {

                                                                                      result.collection.each(function(item) {

                                                                                                    recObj.push(item.get("UsrDocumentName.Name"));

                                                                                      });

                                                                                      }

 

                                                                        this.set("DocumentCollection",recObj);

 

                                                                        }, this);

                                                         

                                           },

                                           initCardPrintForms: function() {

                                                          this.callParent(arguments);

 

                                                          var printMenuItems = this.get(this.moduleCardPrintFormsCollectionName);

                                                          if (Ext.isEmpty(printMenuItems)) return;

 

                                                          printMenuItems.each(function(item) {

                                                                        item.set("Visible", {bindTo: "getPrintMenuItemVisible"});

                                                          }, this);

                                           },

                                                                                      getPrintMenuItemVisible: function(reportId) {

                                                          //this.GetDocumentCollection();

                                                          var Id = this.get("Id"),

                                                                        printMenuItems = this.get(this.moduleCardPrintFormsCollectionName),

                                                                        item = printMenuItems.find(reportId);

                                                          if (Ext.isEmpty(item)) return;

                                                          this.GetDocumentCollection();

                                                          var ReportName = item.get("Caption");

                                                          var DocCollection = this.get("DocumentCollection");

                                                          if(DocCollection === undefined){

                                                                        return false;

                                                          }

                                                          else{

                                                                        if(DocCollection.includes(ReportName)){return true;}

                                                                        else{return false;}

                                                                                     

                                                          }

                            

                                           }

Like 0

Like

1 comments

Hello,



In order to filter printables in edit mode, both in your page and section replacing schemas, you need to replace a method preparePrintFormsMenuCollection. Inside this method, you should leave base method as is (the code before and after comments below), and only change the code between the comments to create the logic that fits your business needs:

 

preparePrintFormsMenuCollection: function(printForms) {
    printForms.eachKey(function (key, item) {
        if (!item.get("Caption")) {
            item.set("Caption", item.get("NonLocalizedCaption"));
        }
        item.set("Tag", key);
        if (item.get("TypeColumnValue")) {
            item.set("Visible", { bindTo: "getPrintMenuItemVisible" });
        }
        //Here is your logic for filtering of printables
        /*************************************************************************/
        /* YOUR CODE, for example 
        var currentState = this.get("State");
        var currentStateDisplayValue = currentState.displayValue;
        var currentStateDisplayValueToLower = currentStateDisplayValue?.toLowerCase();
        var isStateEmpty = Ext.isEmpty(currentState);
        if (!isStateEmpty && currentStateDisplayValue && item.get("Caption").includes(currentStateDisplayValueToLower)) {
        item.set("Visible", true);
        }
        else {
        item.set("Visible", false);
        }
        */
        /*************************************************************************/
    }, this);
}

 

Show all comments

Hello,

 

I want to prevent users from deleting details once the status is not DRAFT anymore.

So, I'm thinking to remove the all of the buttons.

Does anyone know how to do this?

 

Thank you.

Like 1

Like

2 comments

Dear David,

 

This can be achieved by code implementation or by business rule.

 

For the business rule, you can turn on Object permissions for this object. Then the business process will be triggered by changing the record for example, and it will be removing right for editing and deleting this record.

 

Hope this helps.

 

Have a great day!

Dear Alina,

 

I notice about this method. 

Actually, I want to keep this method as a last resort.

 

Thank you for your reply.

 

Show all comments

Hi community,

 

I have this requirement where the client must be able to move one or more records from one detail to another through a business process. Following the steps shown in the image below:

 

1. The user must select one or more records from the "Product on Invoice" detail.

 

2. Next, the user executes the business process using the "Add" button. The process must receive the ids of the selected records.

 

3. Finally, all the selected records should then be added to the "Products in the Correction Invoice".

 

 

How can I achieve this requirement on the new Freedom UI?

 

If you need more information, feel free to ask.

 

Thanks in advance.

 

Best Regards,

Pedro Pinheiro

 

 

Like 2

Like

1 comments

Dear Pedro,

 

To execute this idea, you can do the following:

 

1) You can add the element that depends on user's choice in the "User's Action":

 

 

You can add an "Auto-generated/Pre-configured page" asking the user for an Id for example.

 

2) To achieve this, you can add the action on the button to start the business process in the page designer:

 

 

 

For the transfer, you can read the data from both objects, then use the modify data element.

 

You can read more about business process capabilities in the following article tree: https://academy.creatio.com/docs/8.x/no-code-customization/category/bus…

 

Have a great day!

Show all comments

Hi,

is there any way for clients to fill Creatio mini pages remotely by sending the link to access the mini page, fill data and save directly to the database ?

Like 1

Like

1 comments

Hello,



There is no such option. As a workaround, it could be achieved by additional development (for example API integration).

Show all comments

Hello all,

 

Is there a way that I can control what data Creatio binds automatically when I make saves in the section wizard? I'm trying to make edits to an application and Creatio keeps incorrectly binding a section to a workplace not included in that application meaning I have to always remove the binding before doing test installs, otherwise the install fails.

Like 1

Like

5 comments

Hi Kevin,



There is no such option for now.

 

But we've registered it in our R&D team backlog for consideration and implementation in future application releases.

 

Thank you for helping us to improve our product. 

 

Hello,

 

I recommend checking the academy article on Automatic data binding to find more details on how this functionality works. 

Mira Dmitruk,

This link doesn't work.



And I would like to vote for making this functionality optional. We don't transfer Workplaces and binding to our customers - they used to organize workplaces by themselves, so deleting automatic binding is extra headache for us



Kind regards,

Vladimir

Vladimir Sokolov,

 

We are sending you the instructions once again: https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platfor…. As you were informed earlier, there is currently no way to control what data Creatio binds automatically when making saves in the section wizard.



However, we have registered this idea to our R&D team backlog for consideration and implementation in future application releases.

 

Any updates on this? Creatio automatically adding dependencies and bindings without asking makes building applications extremely difficult.

Show all comments

Hi , 



By default in freedom, when adding a new task,  the whole list of categories appear, and do not filter on the "task" type. Eg: I see both "call" with type "call" & "task" appear. 

 

 





Thanks, 



Damien

Like 0

Like

1 comments

Dear Damien,

 

Thank you for your question!

 

You can achieve this behaviour by creating the following business rule for the mini page:

 

 

We have also created a task to implement this behaviour out-of-the-box.

 

Thank you for making Creatio better!

 

King regards,

Alina

Show all comments

Hello,



I was working on richtextbox and follow a post from customerfx on how to add one. Everything is working fine aside from when adding photos to richtext box.



I get an error:





and here was my diff codes:

 

			{
				"operation": "insert",
				"name": "STRING058fcc3b-20b0-4264-9dad-964e360f5012V2",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 3,
						"layoutName": "VehicleDescriptionsTabLabelGridLayout81318709"
					},
					"bindTo": "TCOverview",
					"enabled": true,
					"contentType": Terrasoft.ContentType.RICH_TEXT,
					"labelConfig": {
						"visible": false
					},
					"controlConfig": {
						"imageLoaded": {
							"bindTo": "insertImagesToNotes"
						},
						"images": {
							"bindTo": "NotesImagesCollection"
						}
					}
				},
				"parentName": "VehicleDescriptionsTabLabelGridLayout81318709",
				"propertyName": "items",
				"index": 0
			},



TCOverview's data type in Case schema is RichTextBox.



Any thoughts?

Like 0

Like

7 comments

RichTextBox is a different field type - that's for Freedom UI rich text fields. For classic pages, typically an unlimited text field is used. Not sure if that is the cause of your issue or not (probably not since it works other than for images), but maybe something to try changing.

Also, what type of page is this on? Is this a section's edit page or some other kind of page (like a detail page)? The collections for the images aren't added on detail pages so there's other items to add to the page as well as a mixin IIRC.

Ryan



It's on Case Edit Page.



I will try the unlimited text field as you suggest.



Also, I tried testing the Note's RichTextBox and it was not working.

We highly recommend that you upgrade to version 8.0.4. In this case, you will be able to display the Rich text column in the object builder. Then you can display the column added in the object using the wizard on the Classic UI page.

Artem Smyrnov,



I'm in 8.1.0.6716.

I made a video to show an extended problem I notice.



Explaination: https://www.awesomescreenshot.com/video/22860805?key=4352d87ffb94df03fb39f305284347fb

Solem Khan Abdusalam,

I have seen that issue where the image gets added to both rich text controls. That is an issue when there are more than one rich text on the same tab - it won't happen if you split them up onto different tabs. The problem is that they are all sharing the same collection for the images. I was able to work around this by duplicating all the page items such as the collection NotesImagesCollection and the related functions such as the insertImagesToNotes function, however it was a bit of work - far easier to just separate them onto separate tabs to avoid the issue.

Ryan

Ryan Farley,

 

NotesImagesCollection and insertImagesToNotes are both page items of BaseEditPage is that what you mean?

Show all comments

Greetings,



I have a campaign currently active (IMAGE 1) with an email tied to the campaign (IMAGE 2). As you can see, the run time for the campaign is 11:00 AM, while the email delivery time range is set from 11:00 AM - 12:00 PM.



IMAGE 1:





IMAGE 2:







Supposing I wanted to change the Email Delivery Time Range to 1:00 PM - 2:00 PM. Am I correct in assuming that the campaign will run itself at 11:00 AM, and the actual email would start sending at 1:00 PM? Thanks in advance.



Lucas

Like 0

Like

1 comments
Best reply

Hello, 

Thank you for your question. 

Yes, you're right, if the company is scheduled for 11:00 pm, it will start at 11, and the mailing will start at 1:00 pm. 

Hello, 

Thank you for your question. 

Yes, you're right, if the company is scheduled for 11:00 pm, it will start at 11, and the mailing will start at 1:00 pm. 

Show all comments

Greetings,



We have a bulk email that we would like to launch. The tricky part is that the recipient list will be coming from a third party via an excel spreadsheet. Thus, there are two questions:



1) Could we upload this excel spreadsheet via the data import option (below):



 

2) Are there any measures needed to prevent the uploaded contacts from being added as a duplicate record?



Thanks in advance for any assistance.



Lucas

Like 0

Like

1 comments
Best reply

Hello,

 

Unfortunately, due to the basic logic of our application, it is impossible to import emails direct to the audience tab. It is related to the active contact licenses.



Unfortunately, we cannot provide advice on the implementation of improvements that affect the recalculation of licenses for active contacts. Also, we do not support solutions that are designed to bypass the licensing system.

Hello,

 

Unfortunately, due to the basic logic of our application, it is impossible to import emails direct to the audience tab. It is related to the active contact licenses.



Unfortunately, we cannot provide advice on the implementation of improvements that affect the recalculation of licenses for active contacts. Also, we do not support solutions that are designed to bypass the licensing system.

Show all comments

Hi Creatio community,



I'm unable to set up responses based on emails that are delivered/ not delivered and as a result I'm unable to transfer participants based on their email interaction conditionally. Is there something that I'm doing incorrectly? it seems to work on the trial versions of Creatio (The production site I've got is 8.0.10).



Thank you!





Like 0

Like

0 comments
Show all comments