Добрый день коллеги, столкнулся с проблемой, которую не в силах решить, заказчик попросил реализовать новый фильтр в разделе, решением оказался fixedfilter с использованием метода initfixedfilterconfig.

// Добавить фильтр по типу Обращения
initFixedFiltersConfig: function() {
	this.callParent();
	var defvalue = [
		{value: "13fa5292-c957-4452-8bea-97e5cd381ed0",displayValue: "IT"}, 
		{value: "51c2810b-2c34-4046-a4bf-2cca62b3e10a",displayValue: "Maintenance"}
	];
	var ffc = this.get("FixedFilterConfig"); // Прошлые фильтры
	var fixedFilterConfig = {
		name: "KORUSLOOKUPCaseType",
		columnName: "KORUSLOOKUPCaseType",
		caption: "Тип",
		isCustomFilter: true,
		dataValueType: this.Terrasoft.DataValueType.LOOKUP,
		appendCurrentContactMenuItem: false,
        addNewFilterCaption: this.get("Resources.Strings.SelectFilterTypeCaption"), // Выбрать тип
        hint: this.get("Resources.Strings.SelectFilterTypeCaption"), // Выберите тип обращения
		buttonImageConfig: this.get("Resources.Images.SelectFilterTypeImage"),
		defValue: defvalue,
		//appendFilter: this.appendFixedCaseTypeFilter, - добавление фильтра ( не меняет визуал)
		//getFilter: this.appendFixedCaseTypeFilter
	};
	if (ffc != undefined) {
		ffc.filters.push(fixedFilterConfig);
		this.set("FixedFilterConfig", ffc);
	}
},

Фильтр работает как надо, но после последовала просьба очищать фильтр при выборе нового значения , по сути при нажатии на кнопку "Выбрать тип", необходимо реализовать сначала логику кнопки "Очистить"

Изображение удалено.

При этом нельзя затрагивать логику прошлых фильтров. Так же не хотелось бы решать эту задачу методом добавления поля типа Lookup в шапку фильтров

Нравится

2 комментария

Добрый день,

 

Реализовать эту функциональность будет крайне сложно, если возможно впринципе, потому что замещения FixedFilterViewModelV2 с моей стороны ничего не дали. Необходимо завязываться на метод lookupSelecting в FixedFilterViewModelV2, потому что колбек функция в ней как раз отвечает за обновление фильтра. В контексте выполнения функции можно сохранить текущий фильтр (вычитать this.$Filters и проверить есть ли там что-то сейчас и если есть, то очищать этот фильтр). Когда в открытом попап окне выбирается новое условие, то колбек вызывает метод addNonPeriodFilterValue, который добавляет к существующей фильтрации ту, которую мы выбираем из попап окна, внутри которого срабатывает метод filterChanged, который обновляет фильтр на UI. То есть, отталкиваться нужно было бы от метода lookupSelecting, но, похоже, это придется полностью переписывать логику View модели и переподключать её к схеме раздела.

Спасибо за ваш ответ, попробую реализовать его или какие-то обходные решения

Показать все комментарии

When opened, the process constantly shows the loading icon, it is not possible to make any changes to it. Tried looking at the metadata, but couldn't find any errors. Please tell me how to solve this problem

Нравится

1 комментарий

Hello Hanna, 

 

Please write to support@creatio.com and clarify the website name. Also, provide external access to your website. 

 

Looking forward to hearing from you, 

Показать все комментарии

Здравствуйте ! 

Экспорт списка записей по дефолту сохраняет данные тех полей которые настроены через вид, как сделать так чтобы выводились в Excel все поля без настройки через Вид и без доп приложений из маркета ? Есть ли вариант без разраба ? 

Нравится

2 комментария

Здравствуйте!



На данный момент в базовой конфигурации приложения нет возможности сделать выгрузку определенных полей.



Пожелание зафиксировано и передано на ответственную команду разработки для рассмотрения реализации в будущих версиях.



С уважением,

Богдан

Можно настроить список в аналитике и экспортировать оттуда.



Можно добавить как справочник и экспортировать оттуда.



Можно в PowerBI получить данные через ODATA

Показать все комментарии

Добрый день!

Хочу добавить панель редактирования текста к существующему полю сообщения, но необходимая панель у него не появляется



Следовал инструкции https://community.terrasoft.ua/questions/izmenenie-teksta-v-kommentariy…



Для этого создал замещающую модель представления базовой схемы SocialFeed из пакета ESN, после чего удалось отрисовать новое поле с редактором



 

diff: [
// Сообщение в которое хочу добавить редактор текста 
//Зеленый блок на картинке
{
	"operation": "insert",
	"name": "SocialMessageEdit",
	"parentName": "SocialMessageEditContainer",
	"propertyName": "items",
	"values": {
		"generateId": false,
		"className": "Terrasoft.ESNHtmlEdit",
		"itemType": Terrasoft.ViewItemType.MODEL_ITEM,
		"dataValueType": Terrasoft.DataValueType.TEXT,
		"contentType": Terrasoft.ContentType.RICH_TEXT,
		"labelConfig": {
			"visible": false
		},
		"keydown": {bindTo: "onKeyDown"},
		"enterkeypressed": {bindTo: "onEnterKeyPressed"},
		"value": {bindTo: "SocialMessageText"},
		"placeholder": {bindTo: "Resources.Strings.WritePostHint"},
		"classes": {
			htmlEditClass: ["postMessage", "placeholderOpacity", "feedMaxWidth"]
		},
		"focus": {bindTo: "onSocialMessageEditFocus"},
		"focused": {bindTo: "SocialMessageEditFocused"},
		"blur": {bindTo: "onSocialMessageEditBlur"},
		"markerValue": "postMessageMemoEdit",
		"height": "26px",
		"prepareList": {bindTo: "prepareEntitiesExpandableList"},
		"list": {bindTo: "entitiesList"},
		"listViewItemRender": {bindTo: "onEntitiesListViewItemRender"},
		"autoGrow": true,
		"autoGrowMinHeight": 26,
		"customItemAttributes": {
			schema: {
				property: "schemaName",
				attribute: "data-schemaname"
			}
		}
	}
},
 
//Поле с редактором, которое удалось добавить
//Красный блок на картинке
{				
	"operation": "insert", // Операция добавления компонента на страницу.
	"name": "Message",//"Message", // Имя колонки схемы, к которой привязан компонент.
	"parentName": "SocialMessageEditContainer", // Мета-имя родительского контейнера, в который добавляется поле.
	"propertyName": "items", // Поле добавляется в коллекцию компонентов родительского элемента.
	"values": {
		// Заголовок поля.
		"contentType": this.Terrasoft.ContentType.RICH_TEXT,
		"labelConfig": {
			"visible": false
		},
		// Расположение поля.
		"layout": {						
			"column": 0, // Номер столбца.						
			"row": 0, // 5 Номер строки.						
			"colSpan": 12, // 12 Диапазон занимаемых столбцов.
			"layoutName": "SocialMessageEditContainer"
		},
		"height": "50px",
		"styles": {
			"background-color": "white"
		},
		"controlConfig": {  //здесь и ниже код для того, чтобы в примечания можно было добавлять картинки
			"imageLoaded": {
				"bindTo": "SortIcon"//"insertImagesToNotes"
			},
			"images": {
				"bindTo": "SummariesIcon"//"NotesImagesCollection"
			}
		}
	}
}
]

Вот такой результат вижу сейчас

Изображение удалено.

Нравится

5 комментариев

Если попробовать операцией merge изменить зеленый блок, функциональность не проявляется



 

{				
	"operation": "merge", // Операция добавления компонента на страницу.
	"name": "SocialMessageEdit",//"Message", // Имя колонки схемы, к которой привязан компонент.
	"parentName": "SocialMessageEditContainer", // Мета-имя родительского контейнера, в который добавляется поле.
	"propertyName": "items", // Поле добавляется в коллекцию компонентов родительского элемента.
	"values": {
		// Заголовок поля.
		"contentType": this.Terrasoft.ContentType.RICH_TEXT,
		"labelConfig": {
			"visible": false
		},
		// Расположение поля.
		"layout": {						
			"column": 0, // Номер столбца.						
			"row": 0, // 5 Номер строки.						
			"colSpan": 12, // 12 Диапазон занимаемых столбцов.
			"layoutName": "SocialMessageEditContainer"
		},
		"height": "50px",
		"styles": {
			"background-color": "white"
		},
		"controlConfig": {  //здесь и ниже код для того, чтобы в примечания можно было добавлять картинки
			"imageLoaded": {
				"bindTo": "SortIcon"//"insertImagesToNotes"
			},
			"images": {
				"bindTo": "SummariesIcon"//"NotesImagesCollection"
			}
		}
	}
}

 

Полный код замещающей модели представления базовой схемы SocialFeed :



https://datagr-my.sharepoint.com/:u:/g/personal/serhii_udielov_datagroup_ua/Efsq1LLC5wJOuTQV_9Ld4nMB3Y12zlmuLfn96ROGOyQHJA?e=jjhI5y 

Добрый день,

 

У меня получилось такое сделать, только нужно еще с кнопкой Publish доделать (пробовал через новые контейнеры сделать, но кнопку адекватно переместить не смог):

Сам код:

define("SocialFeed", ["ESNHtmlEditModule", "SocialMentionUtilities", "css!SocialMessagePublisherModule", "NotesUtilities"
], function() {
	return {
      	entitySchemaName: "SocialMessage",
      	mixins: {
			NotesUtilities: "Terrasoft.NotesUtilities"
		},
      	attributes: {
        	"NotesImagesCollection": {dataValueType: Terrasoft.DataValueType.COLLECTION}
		},
 
      	methods: {
          /**
			 * @inheritdoc
			 * @overridden
			 */
          	init: function(callback, scope) {
                this.callParent(arguments); 
                this.mixins.NotesUtilities.initNotesImagesCollection.call(this);
        	},
          	onNotesImagesUploadComplete: function() {
                this.hideBodyMask(); 
                this.updateFileDetail(); 
        	}, 
        	onNotesImagesUpload: function() { 
                this.showBodyMask(); 
        	},
 
          	onButtonClick: function(){
				console.log("Test");
            },
 
			postPublishActionsVisible: function() {
				return true;
			}
        },
 
		diff: /**SCHEMA_DIFF*/[
			{
					"operation": "insert",
					"name": "MessageContainer",
					"parentName": "SocialFeedHeader",
					"propertyName": "items",
					"values": {
						"itemType": Terrasoft.ViewItemType.CONTAINER,
						"items": []
					}
				},
			{				
				"operation": "insert",
				"name": "Message",
				"parentName": "MessageContainer", 
				"propertyName": "items",
				"values": {
					"contentType": this.Terrasoft.ContentType.RICH_TEXT,
					"labelConfig": {
						"visible": false
					},
					"value": {bindTo: "SocialMessageText"},
					"layout": {						
						"column": 0,						
						"row": 0,						
						"colSpan": 12,
                      	"layoutName": "SocialFeedHeader"
					},
					"height": "50px",
					"styles": {
							"background-color": "white"
					},
					"controlConfig": {
						"imageLoaded": {
							"bindTo": "SortIcon"
						},
						"images": {
							"bindTo": "NotesImagesCollection"
						}
					}
				}
			},
 
			{
					"operation": "insert",
					"name": "MessagePublishButtonContainer",
					"parentName": "MessageContainer",
					"propertyName": "items",
					"values": {
						"generateId": false,
						"itemType": Terrasoft.ViewItemType.CONTAINER,
						"classes": {
							wrapClassName: ["publishButtonWrap"]
						},
						"visible": {bindTo: "postPublishActionsVisible"},
						"items": []
					}
				},
 
			{
					"operation": "insert",
					"parentName": "MessagePublishButtonContainer",
					"name": "MessagePublishButton",
					"propertyName": "items",
					"values": {
						"generateId": false,
						"caption": {bindTo: "Resources.Strings.Publish"},
						"itemType": Terrasoft.ViewItemType.BUTTON,
						"style": Terrasoft.controls.ButtonEnums.style.GREEN,
						"click": {bindTo: "onPostPublishClick"},
						"markerValue": "publishPostMessageButton",
						"classes": {
							textClass: ["floatRight"]
						},
						"clickDebounceTimeout": 1000
					}
				},
			{
				"operation": "remove",
				"name": "SocialMessageContainer"
			}
		]/**SCHEMA_DIFF*/
	};
});

Сообщения публикуются при нажатии на Publish, осталось только переместить саму кнопку.

Oleg Drobina,

Супер! Получилось отобразить редактор, поигрался немного с индексами и вышло более-менее корректно отобразить необходимые панельки





Но теперь появилась следующая проблема :

при попытке добавить изображение с локального устройства, ловлю такое (картинка не загружаеться):





Мой текущий код елемента :

{                

              "operation": "insert",

                "name": "Message",

                "parentName": "MessageContainer", 

                "propertyName": "items",

                "values": {

                      //"bindTo": "Message",

                      "itemType": Terrasoft.ViewItemType.MODEL_ITEM,

                      //"dataValueType": Terrasoft.DataValueType.TEXT,

                    "contentType": this.Terrasoft.ContentType.RICH_TEXT,

                      //"className": "Terrasoft.ESNHtmlEdit", //- removed redactor

                    "labelConfig": {

                        "visible": false

                    },

                      // "keydown": {bindTo: "onKeyDown"}, //invalid logic in side chat

                    // "enterkeypressed": {bindTo: "onEnterKeyPressed"}, //invalid logic in side chat

                    "value": {bindTo: "SocialMessageText"}, //+

                    //"placeholder": {bindTo: "Resources.Strings.WritePostHint"},

                      "focus": {bindTo: "onSocialMessageEditFocus"},

                    "focused": {bindTo: "SocialMessageEditFocused"},

                    "blur": {bindTo: "onSocialMessageEditBlur"},

                    "markerValue": "postMessageMemoEdit",

                    "layout": {                        

                        "column": 0,                        

                        "row": 0,                        

                        "colSpan": 12,

                          "layoutName": "SocialFeedHeader"

                    },

                    "height": "26px",

                      //"classes": {

                    //        htmlEditClass: ["placeholderOpacity"]

                    //},

                    "styles": {

                            "background-color": "white"

                    },

                    "controlConfig": {                          

                        "imageLoaded": {

                            "bindTo": "SortIcon"

                        },

                        "images": {

                            "bindTo": "NotesImagesCollection"

                        }

                    }

                },

                  "index" : 0

            },

Поправил код, теперь изображения загружаются корректно

 

 define("SocialFeed", ["ESNHtmlEditModule", "SocialMentionUtilities", "css!SocialMessagePublisherModule", "NotesUtilities"
], function() {
	return {
      	entitySchemaName: "SocialMessage",
      	mixins: {
			NotesUtilities: "Terrasoft.NotesUtilities"
		},
      	attributes: {
        	"NotesImagesCollection": {dataValueType: Terrasoft.DataValueType.COLLECTION}
		},
 
      	methods: {
          /**
			 * @inheritdoc
			 * @overridden
			 */
          	init: function(callback, scope) {
                this.callParent(arguments); 
                this.mixins.NotesUtilities.initNotesImagesCollection.call(this);
        	},
			postPublishActionsVisible: function() {
				return true;
			}
        },
 
		diff: /**SCHEMA_DIFF*/[
			{
					"operation": "insert",
					"name": "MessageContainer",
					"parentName": "SocialFeedHeader",
					"propertyName": "items",
					"values": {
						"itemType": Terrasoft.ViewItemType.CONTAINER,
						"items": []
					}
				},
			{				
				"operation": "insert",
				"name": "Message",
				"parentName": "MessageContainer", 
				"propertyName": "items",
				"values": {
					"contentType": this.Terrasoft.ContentType.RICH_TEXT,
					"labelConfig": {
						"visible": false
					},
					"value": {bindTo: "SocialMessageText"},
					"layout": {						
						"column": 0,						
						"row": 0,						
						"colSpan": 12,
                      	"layoutName": "SocialFeedHeader"
					},
					"height": "50px",
					"styles": {
							"background-color": "white"
					},
					"controlConfig": {
						"imageLoaded": {
							"bindTo": "insertImagesToNotes"
						},
						"images": {
							"bindTo": "NotesImagesCollection"
						}
					}
				}
			},
 
			{
					"operation": "insert",
					"name": "MessagePublishButtonContainer",
					"parentName": "MessageContainer",
					"propertyName": "items",
					"values": {
						"generateId": false,
						"itemType": Terrasoft.ViewItemType.CONTAINER,
						"classes": {
							wrapClassName: ["publishButtonWrap"]
						},
						"visible": {bindTo: "postPublishActionsVisible"},
						"items": []
					}
				},
 
			{
					"operation": "insert",
					"parentName": "MessagePublishButtonContainer",
					"name": "MessagePublishButton",
					"propertyName": "items",
					"values": {
						"generateId": false,
						"caption": {bindTo: "Resources.Strings.Publish"},
						"itemType": Terrasoft.ViewItemType.BUTTON,
						"style": Terrasoft.controls.ButtonEnums.style.GREEN,
						"click": {bindTo: "onPostPublishClick"},
						"markerValue": "publishPostMessageButton",
						"classes": {
							textClass: ["floatRight"]
						},
						"clickDebounceTimeout": 1000
					}
				},
			{
				"operation": "remove",
				"name": "SocialMessageContainer"
			}
		]/**SCHEMA_DIFF*/
	};
});

 

Показать все комментарии

Добрый день. Мне необходимо перенести права доступа на записи активностей, которые были разданы бизнес процессом на другую систему, в какую таблицу они(права) пишутся?

Нравится

1 комментарий
Лучший ответ

Здравствуйте,

 

Для каждого объека есть отдельная таблица с правами, названия у них по типу:

Sys[Название Объекта]Right 

Например - SysCaseRight, SysContactRight. Нужно только подставить название нужного объекта в середину.

 

С уважением,

Мирослава

Здравствуйте,

 

Для каждого объека есть отдельная таблица с правами, названия у них по типу:

Sys[Название Объекта]Right 

Например - SysCaseRight, SysContactRight. Нужно только подставить название нужного объекта в середину.

 

С уважением,

Мирослава

Показать все комментарии

Приветствую всех!

Возникла необходимость повесить проверку на кол-во символов в обычном и расширенном фильтрах раздела из-за большого объема результата выборки, который влияет на производительность. Нужно сделать только для одного раздела. 

Изображение удалено.



Мне надо повесить проверку для фильтра "Заголовок".

Если с обычным фильтром можно как-то решить вопрос через getFilter, то как стучать в расширенные?

 

Нравится

2 комментария

Здравствуйте Владислав,

 

С расширенными фильтрами так же само, как и с обычными: как только нажимается кнопка "Применить", чтобы применить расширенный фильтр, вызывается тот же метод getFilters из BaseDataView. То есть нужно смотреть как можно заменить логику этого метода.

 

С уважением,

Олег

Удалось достать значения фильтров, но понял что используя getFilter мою задачу реализовать не выйдет. Во-первых я никак не могу переопределить кнопку "применить" из схемы которая рисует и собирает конфиг расширенного фильтра - ExtendedFilterEditModelV2.

Во-вторых, как я понял, в коробке при инициализации раздела по дефолту применяется фильтрация из профайла текущего пользователя и метод getFilter при открытии раздела отрабатывает несколько раз.



Прикрепляю код переопределенной схемы раздела.

 

define("ActivitySectionV2", ["ExtendedFilterEditModelV2"], function(ExtendedFilterEditModelV2) {
	return {
		entitySchemaName: "Activity",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
		methods: {
 
            getFilters: function () {
                var filters = this.callParent(arguments);
                var customFilters = filters.contains("CustomFilters") ? filters.get("CustomFilters") : null;
                //debugger;
                var count = 0;
                for(var i in customFilters.collection.keys) { 
                    if(customFilters.collection.items[i].isEnabled && customFilters.collection.items[i].leftExpressionCaption == "Заголовок"){ 
                        var headerCaption = customFilters.collection.items[i].rightExpression.parameter.value; //rightExpression.parameter.value
                        if(headerCaption == null || headerCaption.length < 3) { 
                            this.showInformationDialog("WORKING");
                            //this.applyFilters();
                            return filters;
                        }
                    }
                }
                return filters;
            },
 
            applyButton: function() {
                this.showInformationDialog("btn handler works");
            },
        }
 
	};
});

По сути минимально хотелось бы достичь фикса кнопки applyButton, чтобы при apply отлавливать фильтрацию и отображать свое сообщение пользователю.

Буду благодарен за любую помощь.

Показать все комментарии

Приветствую, коллеги!

В процессе выполнения одного кейса столкулся с непониманием как это реализовать.

Кейс таков: 

Необходимо создать форму такого вида:



Изображение удалено.



Мне нужна кастомная вьюха со стилями и сеткой creatio, без привязки к разделу.

Создал объект , который наследует BaseEntity, добавил необходимые поля со скрина, но с реализацией пейджи как поступить не знаю.

Подскажите в каком направлении двигаться.





 

Нравится

2 комментария
Лучший ответ

Владислав, добрый день!

Пример подобной страницы. В разделе Документы добавлена кнопка открытия страницы:

define("DocumentSectionV2", [], function() {
	return {
		entitySchemaName: "Document",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[
			{
					"operation": "insert",
					"name": "OpenCustomPageButton",
					"values": {
						"style": "red",
						"itemType": 5,
						"caption": {
							"bindTo": "Resources.Strings.OpenCustomPageButtonCaption"
						},
						"click": {
							"bindTo": "onOpenCustomPageButtonClick"
						}
					},
				"parentName": "CombinedModeActionButtonsCardLeftContainer",
				"propertyName": "items",
				"index": 9
			}
		]/**SCHEMA_DIFF*/,
		methods: {
			onOpenCustomPageButtonClick: function() {
				var config = {
					moduleId: "SectionModuleV2_DocumentSectionV2_CardModuleV2_chain",
					moduleName: "CardModuleV2",
					operation: "add",
					schemaName: "UsrObjectWithoutSectionPage"
				};
				this.openCardInChain(config);
			},
		}
	};
});

Сама страница объекта без раздела:

define("UsrObjectWithoutSectionPage", [], function() {
  return {
    entitySchemaName: "UsrObjectWithoutSection",
    details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
    diff: /**SCHEMA_DIFF*/[
		{
				"operation": "insert",
				"name": "Namec84346b3-955b-4b9e-b061-af463ee8d8da",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 0,
						"layoutName": "ProfileContainer"
					},
					"bindTo": "UsrName"
				},
				"parentName": "ProfileContainer",
				"propertyName": "items",
				"index": 0
			}
	]/**SCHEMA_DIFF*/,
    methods: {}
    };
});

 

Владислав, добрый день!

Пример подобной страницы. В разделе Документы добавлена кнопка открытия страницы:

define("DocumentSectionV2", [], function() {
	return {
		entitySchemaName: "Document",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[
			{
					"operation": "insert",
					"name": "OpenCustomPageButton",
					"values": {
						"style": "red",
						"itemType": 5,
						"caption": {
							"bindTo": "Resources.Strings.OpenCustomPageButtonCaption"
						},
						"click": {
							"bindTo": "onOpenCustomPageButtonClick"
						}
					},
				"parentName": "CombinedModeActionButtonsCardLeftContainer",
				"propertyName": "items",
				"index": 9
			}
		]/**SCHEMA_DIFF*/,
		methods: {
			onOpenCustomPageButtonClick: function() {
				var config = {
					moduleId: "SectionModuleV2_DocumentSectionV2_CardModuleV2_chain",
					moduleName: "CardModuleV2",
					operation: "add",
					schemaName: "UsrObjectWithoutSectionPage"
				};
				this.openCardInChain(config);
			},
		}
	};
});

Сама страница объекта без раздела:

define("UsrObjectWithoutSectionPage", [], function() {
  return {
    entitySchemaName: "UsrObjectWithoutSection",
    details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
    diff: /**SCHEMA_DIFF*/[
		{
				"operation": "insert",
				"name": "Namec84346b3-955b-4b9e-b061-af463ee8d8da",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 0,
						"layoutName": "ProfileContainer"
					},
					"bindTo": "UsrName"
				},
				"parentName": "ProfileContainer",
				"propertyName": "items",
				"index": 0
			}
	]/**SCHEMA_DIFF*/,
    methods: {}
    };
});

 

Дима Вовченко,

Благодарю Вас за ответ, Дмитрий!

 

Показать все комментарии

Добрый день.

Подскажите пожалуйста, как проводить фильтрацию с помощью бизнес правил по логическому полю?

Например у меня есть правило:

rules: {

            "Status": {

                "FiltrationStatusNrbUseInCalls": {

                    ruleType: BusinessRuleModule.enums.RuleType.FILTRATION,

                    autocomplete: true,

                    autoClean: true,

                    baseAttributePatch: "Finish",

                    comparisonType: Terrasoft.ComparisonType.EQUAL,

                    type: BusinessRuleModule.enums.ValueType.CONSTANT,

                    value: true

                },

        },

},

и оно не работает, ошибки в консоли нет.

но если я буду фильтровать по полю с id (например укажу baseAttributePatch: "Id"? а в value конкретный Id), то фильтр работает.

 "Status" указан в атрибутах, как виртуальная колонка.

Нравится

1 комментарий

Решила вопрос сама, где бы не располагалась фильтрация, будь то в секции filters у атрибута, или в rules, для справочников типа ENUM это не работает. Помогло только вынести метод getLookupQuery и все его зависимые методы на страницу. 

Показать все комментарии

Здравствуйте.

Я разрабатываю свое модально окно, по нажатию на кнопку в карточке, хочу открыть модальную форму, в которой есть ряд справочных полей. Каждое справочное поле описано в атрибутах как виртуальная колонка, я накладываю какие-то фильтры на них, но эти фильтры почему-то не срабатывают.

Как добавляю модальное окно: 

1) Создаю в пакете модель представления страницы и указываю в качестве родителя BaseModalBoxPage

2) Код страницы:

 define("NrbTestModalBox", [],

    function() {

        return {

            mixins: {},

            messages: {},

            attributes: {

                "Contact": {

                    isRequired: true,

                    dataValueType: Terrasoft.DataValueType.LOOKUP,

                    referenceSchemaName: "Contact",

                    type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,

                    lookupListConfig: {

                        filters: [

                            function () {

                                debugger;

                                var filterGroup = Ext.create("Terrasoft.FilterGroup");

                                filterGroup.add("ContactFilter",

                                                Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "CreatedById", null));

                                return filterGroup;

                            }

                        ]

                    }

                },

            },

            details: {},

            diff: /**SCHEMA_DIFF*/[

                {

                    "operation": "insert",

                    "name": "mainBoxContainerGrid",

                    "parentName": "CardContentWrapper",

                    "propertyName": "items",

                    "values": {

                        "itemType": Terrasoft.ViewItemType.GRID_LAYOUT,

                        "items": []

                    }

                },

                {

                    "operation": "insert",

                    "parentName": "mainBoxContainerGrid",

                    "propertyName": "items",

                    "name": "Contact",

                    "values": {

                        "bindTo": "Contact",

                        "caption": "Контакт",

                        "contentType": Terrasoft.ContentType.ENUM,

                        "layout": {

                            "column": 0,

                            "row": 0,

                            "colSpan": 24

                        }

                    },

                }

            ]/**SCHEMA_DIFF*/,

            methods: {

                init: function() {

                    this.callParent(arguments);

                },

 

                getLookupQuery: function(filter, column) {

                    var esq = this.callParent(arguments);

                    var lookupListConfig = this.getLookupListConfig(column);

                    if (lookupListConfig) {

                        this.Terrasoft.each(lookupListConfig.columns, function(column) {

                            if (!esq.columns.contains(column)) {

                                esq.addColumn(column);

                            }

                        }, this);

                    }

 

                    var schemaColumn = this.getColumnByName(column);

                    if (schemaColumn.lookupListConfig && schemaColumn.lookupListConfig.filter) {

                        esq.filters.addItem(schemaColumn.lookupListConfig.filter());

                    }

 

                    return esq;

                },

                getLookupListConfig: function(columnName) {

                    var schemaColumn = this.getColumnByName(columnName);

                    if (!schemaColumn) {

                        return null;

                    }

                    var lookupListConfig = schemaColumn.lookupListConfig;

                    if (!lookupListConfig) {

                        return null;

                    }

                    var excludedProperty = ["filters", "filter"];

                    var config = {};

                    this.Terrasoft.each(lookupListConfig, function(property, propertyName) {

                        if (excludedProperty.indexOf(propertyName) === -1) {

                            config[propertyName] = property;

                        }

                    });

                    return config;

                }

            }

        };

    });

 

3) Вызываю модальное окно так: 

this.sandbox.loadModule("ModalBoxSchemaModule", {

id: this.sandbox.id + "_NrbTestModalBox", //NrbCompleteCallModalBox

instanceConfig: {

     moduleInfo: {

           schemaName: "NrbTestModalBox",

     },          

 }

});

 

 

debugger не срабатывает при разворачивании справочника. Подскажите пожалуйста, в чем у меня ошибка?

Нравится

1 комментарий

Добрый день, сложно сказать где именно ошибка. Для выявления точной причины следует провести отладку.

Однако, возможно дело в том, как вы в атрибуте работаете со значением CreatedBy.

Для теста создал подобный фильтр для поля Owner:

attributes: {
			"Owner": {
                "dataValueType": Terrasoft.DataValueType.LOOKUP,
                "lookupListConfig": {
                    "filters": [
                        function() {
                            var filterGroup = Ext.create("Terrasoft.FilterGroup");
                            filterGroup.add("TestSd",
                                Terrasoft.createColumnIsNullFilter("[Contact:Id].CreatedBy")
										   );
                            return filterGroup;
                        }
                    ]
                }
			}
		},

Обратите внимание каким образом я ищу контакты с CreatedBy null:

Terrasoft.createColumnIsNullFilter("[Contact:Id].CreatedBy").

Возможно данный пример вам поможет.

Показать все комментарии
Лучший ответ
[OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped,
            RequestFormat = WebMessageFormat.Json,
            ResponseFormat = WebMessageFormat.Json,
             UriTemplate = "/UpdateUser/{id}")]
        [return: MessageParameter(Name = "result")]
 
        public Result UpdateUser(PortalUser user, string id){}

UriTemplate = "/UpdateUser/{id}" если я тебя правильно понял

[OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped,
            RequestFormat = WebMessageFormat.Json,
            ResponseFormat = WebMessageFormat.Json,
             UriTemplate = "/UpdateUser/{id}")]
        [return: MessageParameter(Name = "result")]
 
        public Result UpdateUser(PortalUser user, string id){}

UriTemplate = "/UpdateUser/{id}" если я тебя правильно понял

Dima Avdoshin, 

дякую :)

Показать все комментарии