Hello, 

any support with runtime error? Can you share your experience?

 

Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.

Details: To enable the details of this specific error message to be viewable on remote machines, please create a tag within a "web.config" configuration file located in the root directory of the current web application. This tag should then have its "mode" attribute set to "Off".

Like 0

Like

1 comments

Hello,

 

Please contact out support team directly at support@creatio.com so we could analyze this issue.

Show all comments

Hello! Does anyone know how to add an iframe to a specific entry in the details?
It’s just that an iframe should appear inside a specific entry below the values. It will appear when a detail entry is active.

Thank you in advance!

Like 0

Like

1 comments

Hello.
In the current version of Creatio, it is not possible to add an iframe directly into a details column. However, you can add a button to a grid detail that opens a modal window containing an iframe. I followed the guidelines from - here.

I added an "Account Detail Test" to the Account section with a "Link" column and a "View Frame" button. When this button is clicked, it sets the detail record field values into session storage. Here is an example of the logic I implemented:1
Code of UsrFrameControl:
1
Code of UsrModalPage:
1
Code of test detail on account page:
2
The main point is to store the link in session storage. To achieve this, I added a "Link" column to the detail. In the FrameControl module, you read this value and set it as the src attribute of the iframe.

Hope this helps!
 

Show all comments

Hi all,

 

Further to the thread below, is it possible to make a button added to the active row of a detail conditional?
Add button into the active row of detail | Community Creatio

I want to make the button enabled on a certain condition but when I add the enabled and visible values to the Diff of the datagrid, I get no result (tried passing "enabled": false to check it wasn't an issue with the CanSplitFlights method)

define("UsrFlightsDetail", ["ProcessModuleUtilities"], function(ProcessModuleUtilities) {
	return {
		entitySchemaName: "UsrFlights",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "merge",
				"name": "DataGrid",
				"parentName": "Detail",
				"propertyName": "items",
				"values": {
					"activeRowActions": [],
					"activeRowAction": {"bindTo": "onActiveRowAction"}
				}
			},
			{
				"operation": "insert",
				"name": "DataGridActiveRowSplitFlights",
				"parentName": "DataGrid",
				"propertyName": "activeRowActions",
				"values": {
					"className": "Terrasoft.Button",
					"style": Terrasoft.controls.ButtonEnums.style.BLUE,
					"caption": "Split flights",
					"tag": "SplitFlights",
					"visible": true,
					"enabled": CanSplitFlights
				}
			}
		]/**SCHEMA_DIFF*/,
		methods: {
            CanSplitFlights: function() {
                var FlightTypeId = this.getActiveRow().get("UsrFlightType");
				var FlightTypeValue =  FlightTypeId  && FlightTypeId.value;
 
				if (FlightTypeValue == '3a0d3b1b-9af5-472a-bac9-e785500ac4e9') {
					return true;
                }
                return false;
            },
			onActiveRowAction: function(SplitFlights) {
				switch (SplitFlights) {
					case "SplitFlights":
						this.onSplitFlights();
						break;
					default:
						break;
				}
			},
			onSplitFlights: function(){
				ProcessModuleUtilities.executeProcess({
					sysProcessName: "UsrSplitFlights",
					parameters: {
						FlightId: this.getActiveRow().get("Id")
					}
				});
			},
Like 1

Like

2 comments
Best reply

I've done some hacky options that sort of worked manipulating the button elements in the dom on row click, but I've never been able to have it work binding an attribute to the visible/enabled of the row buttons and change row by row. That's never worked for me. Instead I typically do a check in the code that executes on click to let the user know if it's not available for the row. I'd love to know if there's some way for this to work, but from experience it doesn't work. 

I've done some hacky options that sort of worked manipulating the button elements in the dom on row click, but I've never been able to have it work binding an attribute to the visible/enabled of the row buttons and change row by row. That's never worked for me. Instead I typically do a check in the code that executes on click to let the user know if it's not available for the row. I'd love to know if there's some way for this to work, but from experience it doesn't work. 

Ryan Farley,

Thanks Ryan. I'll call it quits then and add a check on click.

Honestly, it's more of an aesthetic requirement than a functional one. Ideally I won't offer the user a button that they can't click.

Show all comments

Hello Creatio Community,

I'm creating a script task for email sender using a documentation from creatio team. I followed the provided instructions for creating the script task, but when I published  the script task some errors occured.

Some of the classes and interface cannot be found also the IntegrationApi library cannot be found.

source code below :

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Text;
using Terrasoft.Common;
using Terrasoft.Core;
using Terrasoft.Core.Configuration;
using Terrasoft.Core.DB;
using Terrasoft.Core.Entities;
using Terrasoft.Core.Factories;
using Terrasoft.Core.Process;
using Terrasoft.Core.Process.Configuration;
using Terrasoft.Mail;
using Terrasoft.Mail.Sender;
using IntegrationApi;

    var mailBoxSettingId = Get("SenderMailbox");
    var emailClientFactory = ClassFactory.Get(
    new ConstructorArgument("userConnection", UserConnection));
    
    var emailSender = ClassFactory.Get(
    new ConstructorArgument("emailClientFactory", emailClientFactory),
    new ConstructorArgument("userConnection", UserConnection));
    var entity = UserConnection.EntitySchemaManager.GetInstanceByName("MailboxSyncSettings").CreateEntity(Uif (entity.FetchFromDB("Id", mailBoxSettingId, new List { "SenderEmailAddress" })) {
    var senderEmailAddress = entity.GetTypedColumnValue("SenderEmailAddress");
    var message = new Terrasoft.Mail.Sender.EmailMessage {
    From = senderEmailAddress,
    To = Get("Recipient").Split(';').ToList(),
    // Cc = List{ "first@recepient.co", "second@recepient.co"},
    // Bcc = List{ "first@recepient.co", "second@recepient.co"},
    Subject = Get("Subject"),
    Body = Get("Body"),
    Priority = Terrasoft.Mail.Sender.EmailPriority.Normal
    };
    var attachment = new Terrasoft.Mail.Sender.EmailAttachment {
    Id = Guid.NewGuid(),
    Name = "test.txt",
    Data = Encoding.ASCII.GetBytes("some test text")
    };
    message.Attachments.Add(attachment);
    emailSender.Send(message);
    }
    
    
    return true;


errors in lines :

    var emailClientFactory = ClassFactory.Get(
            var emailSender = ClassFactory.Get(
            var message = new Terrasoft.Mail.Sender.EmailMessage {
            Priority = Terrasoft.Mail.Sender.EmailPriority.Normal
            var attachment = new Terrasoft.Mail.Sender.EmailAttachment {

Documents in this link:
page 14: https://academy.creatio.com/docs/sites/academy_en/files/pdf/node/1474/Sending_emails_.pdf

https://academy.creatio.com/docs/7-18/developer/application_components/…



 

Like 0

Like

2 comments

Hello Alba,
Thanks for your question.

I am glad to assist you however it is hard to understand what causes the error without error messages. Could you please enable tracing for you business process and share the error message? 

This code works fine for me:
1

2

Hope this helps

Alba,

I had the same issue following the same article.

 

Then I decided to do differently. No code is needed :

 

 

By using the element process file you can generate the printable then using the file in the process allows you to add the file generated in the email as attachment, you don't need to store the file in an activity record.

 

Tell me if you need more details.

Show all comments

Hello Creation Community,

I have developed functionality that displays printables based on specific configurations. I have overridden the initCardPrintForms method and other necessary methods. However, I've encountered an issue: this development works correctly only when the page is rendered for the first time.
I need to refresh the list of printables whenever the "Product" field, used as a filter, is updated. Here's the relevant code snippet:

onProductUpdate: function(){
debugger;
this.setFZSelectedApp(this.$PrimaryColumnValue, true, null);
this.initCardPrintForms();
},
Even though the collection of printables updates during debugging, the action buttons, including the print button, do not reflect these changes.
Based on my developments the "Application form report" should be excluded after the product was updated.

Displaying image.png

Like 1

Like

1 comments

Hello,
Look at this discussion, I believe you can find useful information there.

Show all comments

Hi, 

I have a detail that uses an object  that represents structure of database view, the detail is non editable. 

What can I do that on double click of a row to open a page that contains the detail's columns as fields?

Like 0

Like

1 comments

Dear Alba,

 

You can register details based on a database view that will open to editing, the same way you can add a detail based on a regular object.

You can read more about these implementations in the following tree: https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platform/detail-examples

 

Have a great day!

Show all comments

The records of associations in the MailboxFoldersCorrespondence and ActivityFolder tables exist, but when an email arrives, the Activity is not linked to the ActivityFolder, ActivityInFolder is empty. As a result, all emails are not associated with the folder on the mail server in which they are located.

How can I fix it?

 

Like 0

Like

1 comments

Dear Sergey,

 

Could you please provide us with an example and more details of this issue?

 

Thank you in advance!

Show all comments

Hi, all!

Is there any known way how to block update of main phone/email fields while adding new phone/email in Contact's communication options? 

 

I mean these fields are updated when one adds new record to comm options with types "phone" or "email" for Contact records and I would like to prevent such behaviour.

 

Is it possible to do that without writing a code?

Like 0

Like

3 comments

Hello,

 

We recommend you to try out this marketplace addon that allows you to manually mark any communication option as primary, which is not overridden by adding new options to the list:

https://marketplace.creatio.com/app/primary-communication-options-creat…

Mira Dmitruk,

Hello, could you please, clarify, if one installed that add-on, whether that option is available in import also? Or only for Contact form?

Artem Evdokimenko,

 

Yes, it is possible to mark the emails as primary with this addon when importing from excel, the column is "IsPrimary" and has values "yes" or "no". 

Show all comments

Hi,

In creatio, I have created a section which has a detail. The section's object has a field named 'Stage'. When 'Stage' value changes I want to refresh grid detail action buttons without page reloading, so that I can remove the + button (for adding) and the actions for copying, editing, deleting and Data Import.

I have tried using 'updateDetail' and 'reloadEntiy' but they don't seem to refresh these buttons

Like 0

Like

2 comments
Best reply

Hello,

 

Not sure about removing buttons (but theoretically it's possible using the "Visible" property), but as for the "Enabled" property, it's possible to control the state of the button. This can be achieved using sandbox messages exchange mechanisms like (control the copy button "Enabled" property in the detail on the case page based on the case category selected):

 

CasePage schema

messages: {
			"UpdateActionsStatuses": {
				mode: Terrasoft.MessageMode.PTP,
				direction: Terrasoft.MessageDirectionType.PUBLISH
			}
		},
		...
onCategoryChanged: function() {
				this.callParent(arguments);
				this.sandbox.publish("UpdateActionsStatuses", this.get("Category"), ["ForActionsStatusUpdate"]);
			}

 

Detail schema

messages: {
			"UpdateActionsStatuses": {
				mode: Terrasoft.MessageMode.PTP,
				direction: Terrasoft.MessageDirectionType.SUBSCRIBE
			}
		},
....
CopyRecordMenuItemEnabled: {
                    dataValueType: this.Terrasoft.DataValueType.BOOLEAN,
                    value: false
			},
....
getCopyRecordMenuItem: function() {
				return this.getButtonMenuItem({
					Caption: {"bindTo": "Resources.Strings.CopyMenuCaption"},
					Click: {"bindTo": "copyRecord"},
					Enabled: {bindTo: "CopyRecordMenuItemEnabled"},
					Visible: {bindTo: "IsEnabled"}
				});
			},
....
subscribeSandboxEvents: function() {
				this.callParent(arguments);
				this.sandbox.subscribe("UpdateActionsStatuses", this.updateActionsStatus, this,
						["ForActionsStatusUpdate"]);
			},
 
			updateActionsStatus: function(result) {
				var parentCaseCategory = result.displayValue;
				var isCategoryCorrect = parentCaseCategory == "PPE Case (Sales Contract)";
				this.updateCopyRecordMenuItem(isCategoryCorrect);
			},
 
			updateCopyRecordMenuItem: function(isCategoryCorrect) {
				var parentCopyRecordEnabled = this.getCopyRecordMenuEnabled();
				var isEnableCopyRecordMenuItem = isCategoryCorrect && parentCopyRecordEnabled;
				this.set("CopyRecordMenuItemEnabled", isEnableCopyRecordMenuItem);
			}

 

As a result the copy button will be enabled in the detail only if any record is selected in the detail and also if the case category (case page is where the detail is added) is "PPE Case (Sales Contract)".

Hello,

 

Not sure about removing buttons (but theoretically it's possible using the "Visible" property), but as for the "Enabled" property, it's possible to control the state of the button. This can be achieved using sandbox messages exchange mechanisms like (control the copy button "Enabled" property in the detail on the case page based on the case category selected):

 

CasePage schema

messages: {
			"UpdateActionsStatuses": {
				mode: Terrasoft.MessageMode.PTP,
				direction: Terrasoft.MessageDirectionType.PUBLISH
			}
		},
		...
onCategoryChanged: function() {
				this.callParent(arguments);
				this.sandbox.publish("UpdateActionsStatuses", this.get("Category"), ["ForActionsStatusUpdate"]);
			}

 

Detail schema

messages: {
			"UpdateActionsStatuses": {
				mode: Terrasoft.MessageMode.PTP,
				direction: Terrasoft.MessageDirectionType.SUBSCRIBE
			}
		},
....
CopyRecordMenuItemEnabled: {
                    dataValueType: this.Terrasoft.DataValueType.BOOLEAN,
                    value: false
			},
....
getCopyRecordMenuItem: function() {
				return this.getButtonMenuItem({
					Caption: {"bindTo": "Resources.Strings.CopyMenuCaption"},
					Click: {"bindTo": "copyRecord"},
					Enabled: {bindTo: "CopyRecordMenuItemEnabled"},
					Visible: {bindTo: "IsEnabled"}
				});
			},
....
subscribeSandboxEvents: function() {
				this.callParent(arguments);
				this.sandbox.subscribe("UpdateActionsStatuses", this.updateActionsStatus, this,
						["ForActionsStatusUpdate"]);
			},
 
			updateActionsStatus: function(result) {
				var parentCaseCategory = result.displayValue;
				var isCategoryCorrect = parentCaseCategory == "PPE Case (Sales Contract)";
				this.updateCopyRecordMenuItem(isCategoryCorrect);
			},
 
			updateCopyRecordMenuItem: function(isCategoryCorrect) {
				var parentCopyRecordEnabled = this.getCopyRecordMenuEnabled();
				var isEnableCopyRecordMenuItem = isCategoryCorrect && parentCopyRecordEnabled;
				this.set("CopyRecordMenuItemEnabled", isEnableCopyRecordMenuItem);
			}

 

As a result the copy button will be enabled in the detail only if any record is selected in the detail and also if the case category (case page is where the detail is added) is "PPE Case (Sales Contract)".

Yes, it worked. Thank you

Show all comments

Multi-line fields have a microphone icon - is this the built-in functionality of Creatio or is it the functionality of the browser?

Like 0

Like

6 comments

That is functionality of Creatio

1. What package is it in? 
2. Does this tool require updating or is it updated only by system update? 
3. How to enable or disable this functionality? 
4. 4. Is this functionality isolated and located only in the system itself or is it synchronized with an external source?
1. What package is it in? 
2. Does this tool require updating or is it updated only by system update? 
3. How to enable or disable this functionality? 
4. 4. Is this functionality isolated and located only in the system itself or is it synchronized with an external source?

Ryan Farley,

1. What package is it in? 
2. Does this tool require updating or is it updated only by system update? 
3. How to enable or disable this functionality? 
4. 4. Is this functionality isolated and located only in the system itself or is it synchronized with an external source?

Nikita,

Not sure what package this is in. It started as a devlabs marketplace addon. At that time the js files were bootstrapped from the Files node of the package (meaning you wouldn’t see it in the configuration for the package). I would assume it's now just part of the Terrasoft.controls.MemoEdit or Terrasoft.controls.BaseEdit controls.
As for disabling it, I typically hide it using CSS when needed. 

Ryan Farley,

Thank you :)

Show all comments