Hello community,

 

I have an opportunity section with a lookup field called OpportunityType. I also have a lookup field called Printable in the same section, which the user will use to tag the opportunity record to a particular printable. 

 

The use case here is that since we have many printables, we would like to filter the printable based on OpportunityType. I am assuming we need to replace the Printable object, add a new lookup column referencing the OpportunityType Lookup. We want this field OpportunityType to be visible on the UI where Printables are configured (Please see below image).

 

Please advise.

Like 0

Like

2 comments

Hello Shivani,

I have an article here that shows how to show or hide printables based on a value on the page. Hopefully this helps you get started: 

https://customerfx.com/article/showing-or-hiding-printables-based-on-a-…

Ryan

Hi Ryan,

 

I am looking for something different. I want to override the printable page schema (The page where we add new printable records) to show a new field as seen in the image I posted earlier.

Do you have any approach pls?

 

Thanks

Show all comments

Hello team, 

I have a preconfigured page where there is a detail. The use case is a user will select list of records from the detail and I need to process these records. Is there a way to get the selected list of records from the preconfigured page detail?

 

Like 0

Like

4 comments

Hello,



Unfortunately, there is no opportunity to select a few records on the Auto-Generated page. If you need to add a selection of records to the system, you need to specify some filtering conditions by which the Add data element will work.



We have registered your request for our R&D team to include such functionality in one of the upcoming releases. 



Best regards,

Bogdan

Thanks Bogdan, 

If that is the case, I will switch to a multi select lookup detail. Can you please tell me how to filter a multiselect lookup detail?

Dear Shivani,

 

There was a similar question here about the detail filter.

Bogdan,

Thanks Bogdan, I was looking for something different. I need to get the filter id through sandbox

Show all comments

Hi Team I'm trying to make a new Account detail appear as a multi-select lookup list, instead of opening a new detail window. Currently, when I click on (+) under Competitor Brands in Account, the detail opens in a detail display. However, I want a lookup select to simply open, such as when Products (+) is selected.

Like 0

Like

5 comments
Best reply

Hello Evan,

 

If I understand your requirement correctly then you can refer the following academy article,

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

 

Regards,

Sourav Kumar Samal

Hello Evan,

 

If I understand your requirement correctly then you can refer the following academy article,

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

 

Regards,

Sourav Kumar Samal

Hi Sourav Kumar Samal,

Thanks, that's very helpful.  I've implemented the LookupMultiAddMixin however and the modal dialog is appearing, but with no data!

I have inserted test data into my lookup, the issue I have is obviously in telling Creatio where to look.

 

Within the getMultiSelectLookupConfig, can you help with some advice on how to determine the correct schema and column names?

 

define("UsrSchemaf8875bd9Detail", ["LookupMultiAddMixin"], function() {
    return {
        mixins: {
            // Connecting the mixin to the schema.
            LookupMultiAddMixin: "Terrasoft.LookupMultiAddMixin"
        },
        methods: {
            // Overriding the base method for initializing the schema.
            init: function() {
                this.callParent(arguments);
                //Initializing the mixin.
                this.mixins.LookupMultiAddMixin.init.call(this);
            },
            // Overriding the base method for displaying the "Add" button.
            getAddRecordButtonVisible: function() {
                //Displaying the "add" button if the detail is maximized, even if the detail edit page is not implemented.
                return this.getToolsVisible();
            },
            // Overriding the base method.
            // The save event handler for the detail edit page.
            onCardSaved: function() {
                // Opens the window for multiple record selection.
                this.openLookupWithMultiSelect();
            },
            // Overriding the base method of adding a detail record.
            addRecord: function() {
                // Opens the window for multiple records selection.
                this.openLookupWithMultiSelect(true);
            },
            // A method that returns a window configuration object.
            getMultiSelectLookupConfig: function() {
                return {
                    // Root schema — [Opportunities].
                    rootEntitySchemaName: "Account",
                    // Root schema column.
                    rootColumnName: "Account",
                    // Connected schema — [UsrCompetitorBrands].
                    relatedEntitySchemaName: "UsrCompetitorBrands",
                    // Root schema column.
                    relatedColumnName: "UsrCompetitorBrands"
                };
            }
        }
    };
});

 

Evan Haklar,

 

I think getMultiSelectLookupConfig method is configured incorrectly, here in your case try with the following configuration,

getMultiSelectLookupConfig: function() {
                return {
                    // Root schema.
                    rootEntitySchemaName: "UsrCompetitorBrands",
                    // Root schema column.
                    rootColumnName: "UsrCompetitorBrands",
                    // Connected schema.
                    relatedEntitySchemaName: "Account",
                    // Root schema column.
                    relatedColumnName: "UsrAccount"
                };
            }

Let me know if this works for you.

 

Regards,

Sourav Kumar Samal

Hi Sourav Kumar Samal,

 

Thanks for your help.  Unfortunately it didn't work.  This actually causes the Multi Select lookup to display a list of Accounts, instead of a list of CompetitorBrands.  It's backwards to what we need.

 

 

It seems the order was correct previously, as the ROOT entity should be the Account (it appears under the Account object, and we want to associate the CompetitorBrandsInAccount by column Account) however just the definition of the SchemaName or ColumnName seems to be incorrect.

 

Have you any other suggestion?

Hi Sourav Kumar Samal,

 

I've sorted the issue!  Actually, I didn't declare the root entity column name correctly!  Once I did this, it's worked properly.

 

Show all comments

Hello community,

 

I have developed a service in Creatio that will be called from third parties. The service is called successfully in postman but programmatically it doesn't work. The authentication works fine and returns status code 200 and the BPMCSRF cookie. When the third party tries to call the service it gives the following message "401 - Unauthorized: Access is denied due to invalid credentials."  How can we investigate this issue? Does Creatio offer a logging option so we can investigate the request and response or is there something else that we have forgotten during the implementation of this service?

Like 0

Like

1 comments

Hello community!

I need to set fields required based in values of a lookup at client side.

I was trying to test how isRequired works in attributes , but I found that the only way to work with it, is declaring the explicit value to True or False.

Tried to use a virtual column, and a method function, but it behaves weird.  

Here are my examples:

and this how it looks on screen:

 

It's showing the "Enter a Value" warning but they are supposed not to be required (* is missing).

 

Is there any way to workaround with this?

 

Thank you for your help.

Like 0

Like

3 comments
Best reply

Cesar Jaramillo,

Let's see what method of making fields required* dynamically actually works good – it is using rules/businessRules.

You can create a rule for your field, the condition can be any value of the page and its related lookups.

Like here:

But if you have to do this for several fields, it will take much time to set them for each field. 

And if there are many conditions or they are too complex, "businessRules" abilities can be not enough.

But we can set an attribute (boolean) to be a condition for each of these rules, like here:



The attribute value can be changed dynamically using "methods".

 

So here's what i'd advise you to do:



In my example the fields "Email" and "Preferred language" become required, if the contact Type is "Customer" and the "Owner" field is not empty.

1. Add an attribute of type BOOLEAN

attributes: {
	"FullInfoRequired": {
		"dataValueType": Terrasoft.DataValueType.BOOLEAN,
		"dependencies": [
			{
				"columns": ["Owner", "Type"],
				"methodName": "setFullInfoRequired"
			}
		]
	}
},

Each time any of the columns ("Owner" or "Type") is changed, the method "setFullInfoRequired" is called.

2. Add the method

setFullInfoRequired: function() {
	var type = this.get("Type");
	// ContactType.Client is a GUID for "Customer" type
	if (type.value === confConsts.ContactType.Client && this.get("Owner")) {
		this.set("FullInfoRequired", true);
	}
	else this.set("FullInfoRequired", false);
}

To set the attribute on page loading, immediately after the page loaded its data, you should also call this function in "onEntityInitialized":

onEntityInitialized: function() {
	this.callParent(arguments);
	this.setFullInfoRequired();
}

3. Add the rules using Page designer, as in my 2nd screenshot, for each field that should become required.

 

If the conditions are simple, just use businessRules as in the 1st screenshot.

 

Hello Cesar,

 

The isRequired attribute that uses the value that method returns works correctly in my local app (using bindTo: {"method name here"}). It seems that there is either some other custom logic related to these columns in the ContactPageV2 or maybe custom CSS that hides these * symbol. You need to look through all the logic related to these columns where you need to have the * symbol.

 

Best regards,

Oscar

Oscar Dylan,

Hi Oscar,  In my case, when the method returns True it works fine, but when it returns False, the * is gone, but the warning remains and it doesn't allow to save.  In what version did you try it?

Thanks!

Cesar Jaramillo,

Let's see what method of making fields required* dynamically actually works good – it is using rules/businessRules.

You can create a rule for your field, the condition can be any value of the page and its related lookups.

Like here:

But if you have to do this for several fields, it will take much time to set them for each field. 

And if there are many conditions or they are too complex, "businessRules" abilities can be not enough.

But we can set an attribute (boolean) to be a condition for each of these rules, like here:



The attribute value can be changed dynamically using "methods".

 

So here's what i'd advise you to do:



In my example the fields "Email" and "Preferred language" become required, if the contact Type is "Customer" and the "Owner" field is not empty.

1. Add an attribute of type BOOLEAN

attributes: {
	"FullInfoRequired": {
		"dataValueType": Terrasoft.DataValueType.BOOLEAN,
		"dependencies": [
			{
				"columns": ["Owner", "Type"],
				"methodName": "setFullInfoRequired"
			}
		]
	}
},

Each time any of the columns ("Owner" or "Type") is changed, the method "setFullInfoRequired" is called.

2. Add the method

setFullInfoRequired: function() {
	var type = this.get("Type");
	// ContactType.Client is a GUID for "Customer" type
	if (type.value === confConsts.ContactType.Client && this.get("Owner")) {
		this.set("FullInfoRequired", true);
	}
	else this.set("FullInfoRequired", false);
}

To set the attribute on page loading, immediately after the page loaded its data, you should also call this function in "onEntityInitialized":

onEntityInitialized: function() {
	this.callParent(arguments);
	this.setFullInfoRequired();
}

3. Add the rules using Page designer, as in my 2nd screenshot, for each field that should become required.

 

If the conditions are simple, just use businessRules as in the 1st screenshot.

 

Show all comments

Hello team,

 

I have a detail call "Proof" in which I need to add custom attachment detail called "UsrProofAttachments".

 

Here are the steps I followed

1. Created an object with Parent Object as "File". Added lookup column that refers to "Proof" detail.

2. Created a detail through the wizard and configured the detail

3. Changed the parent of "UsrProofAttachments" to FileDetailV2.

Here is how my UI looks

 

The error I get in console is the following

 

{message: 'Column by path UsrProofAttachments not found in schema UsrProofAttachments.'}

 

I have seen a similar post but I am not able to find an answer.

https://community.creatio.com/questions/set-custom-detail-attachments-t…

Help would be much appreciated!

 

Edit : I added the CSS and the UI looks good. But the error is still there

Like 0

Like

3 comments

Hi Shivani,

 

Thank you for your question!

 

Regarding the mentioned error in the console, it indicates that the column was either removed from the corresponding object or renamed. We do not recommend deleting any fields, columns or objects as it may lead to unpredictable issues. If some fields are not needed anymore, you can simply change their usage mode to "none". It's hard to identify which column exactly was removed/renamed without accessing the website. Please, contact us at support@creatio.com. We will check the configuration and will try to find out the reason for this issue.

 

Best regards,

Anastasiia

Anastasiia Lazurenko,

 

I got the attachment detail working. I noticed if you name the attachment detail as <SectionName>File it works eg : CustomFile for section named Custom, UsrProofFile for section named UsrProof

Shivani Lakshman,

Hi Shivani, I have a quite similar request as yours. I need to customize the default attachment detail of Order page by adding a lookup field into the attachment detail page.

 

Since the Order's attachment has its own object OrderFile, I created a replacing object of OrderFile and added a new lookup column, say UsrAttachmentType, in the OrderFile object. Then I used this new OrderFile to create a detail through detail wizard and put Name, Description, and UsrAttachmentType columns in the detail page. Then I changed the parent object of the detail with FileDetailV2 and saved the detail.

 

After the above steps, I could use the new attachment detail to upload files as original attachment detail; but when I double click the attachment record in the detail list, it opened with the old attachment detail page with only Name and Description fields, not the new detail page I setup as above, with additional lookup field UsrAttachmentType.

 

Please advise what I shuld do? Thank you!

 

 

Show all comments

I created a harmony of data which comes from external web services. For example, I retrieved dataA for ColumnA, dataB for ColumnB, dataC for ColumnC etc. I want to INSERT this data to section object table which section page based on.



How can i bind these things?

Like 0

Like

1 comments

Hello,

 

You can create a business process in which you will fill in the required fields received from the web service.

 

Details on the academy website:

https://academy.creatio.com/docs/user/bpm_tools/process_elements_refere…

Show all comments

Hello Creatio Community,

I have e development env and a test env.

For a specific page schema, the metadata of the page differs from Dev and Test env. The nr of rows is the same , but the content isnt. Is this supposed to be correct ?

 

Like 0

Like

1 comments

Hello,

 

Please be informed that the sole fact of the schemas being a bit different is not a problem, the question is does it cause any actual issues to the performance of the site? Also, please specify if the Test env is a full copy of Dev and if so, was that schema present on the Test env before copying? Also, did you make any changes to the schemas yourself?

 

Kind regards,

Mira

Show all comments

Hello team,

What is the difference between Compile all and Generate Source Code for all schemas? 

Is there any significant difference between the two? When are the best scenarios to use each of them?

Like 0

Like

2 comments
Best reply
Full generation is needed to build links between 
configuration items. Items can be objects and schemas or 
links between packages and their dependencies.
Full generation links them.

Compilation, in addition to its main purpose also generates
source files along the /src path which are necessary when 
working with no-code elements and allow you to create an 
instance between an object and a table in the DB.
Full generation is needed to build links between 
configuration items. Items can be objects and schemas or 
links between packages and their dependencies.
Full generation links them.

Compilation, in addition to its main purpose also generates
source files along the /src path which are necessary when 
working with no-code elements and allow you to create an 
instance between an object and a table in the DB.

Владислав Киселевич,

Thank you !

Show all comments

Hello team,

What is the purpose of IsLocked column in the the SysSchema or SysPackage tables.

How does IsLocked affect 

1- Objects

2- Bussines Processes

3- Edit Page schemas

4- Packages

I couldnt find information in the academy regarding this topic.

Thank you

Like 0

Like

1 comments

Hello Petrika,

Parameter IsLocked mainly affects if you can edit the schema or the package.  Only the author of the lock can edit these elements. In the database, this author isn't mentioned and you can see only IsLocked.

The system will check the author on the other level.

Show all comments