ESQ запрос с фильтрацией. Средства связи фильтровать по типу.
Добрый день, коллеги. Помогите пожалуйста сделать ESQ запрос с фильтрацией. Вывести
TOP1 номер который соответсвует критерию.
Читал статьи так и не понял. Данный запрос в разделе контакты.
Select T1."Number" From "ContactCommunication" T1
LEFT JOIN "Contact" T2 ON T1.Contact=T2.Id
Where T1.CommunicationType='3DDDB3CC-53EE-49C4-A71F-E9E257F59E49'
onEntityInitialized: function() {
this.callParent(arguments);
this.helping();
},
helping: function() {
// Получаем [Id] объекта карточки.
// Получаем [Id] объекта карточки.
var recordId = this.get("Id");
// Создаем экземпляр класса Terrasoft.EntitySchemaQuery с корневой схемой [Contact].
var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "Contact"
});
esq.addColumn("[ContactCommunication:Contact:Id].Number", "Number");
esq.addColumn("[ContactCommunication:Contact:Id].CommunicationType", "CommunicationType");
var esqFirstFilter= esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "CommunicationType", "3DDDB3CC-53EE-49C4-A71F-E9E257F59E49");
// Добавление созданных фильтров в коллекцию запроса.
esq.filters.add("esqFirstFilter", esqFirstFilter);
// В данную коллекцию попадут объекты - результаты запроса, отфильтрованные по двум фильтрам.
esq.getEntityCollection(function (result) {
if (result.success) {
result.collection.each(function (item) {
this.showInformationDialog(result.entity.get("Number"));
});
}
}, this);
}
Нравится
Вот мой пример по копированию всех адресов электронной почты контакта, по аналогии можно выбрать топ1 нужного типа
/** Копирование почты */ copyEmail: function() { if (this.get("Contact")) { var contact = this.get("Contact"); contact = contact.value; var esq = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "ContactCommunication" }); var email = ""; esq.addColumn("Contact"); esq.addColumn("CommunicationType"); esq.addColumn("Number"); // Создание экземпляра первого фильтра. var esqFirstFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Contact", contact); // Создание экземпляра второго фильтра. var esqSecondFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "CommunicationType", "ee1c85c3-cfcb-df11-9b2a-001d60e938c6"); // Фильтры в коллекции фильтров запроса будут объединяться логическим оператором OR. esq.filters.logicalOperation = Terrasoft.LogicalOperatorType.AND; // Добавление созданных фильтров в коллекцию запроса. esq.filters.add("esqFirstFilter", esqFirstFilter); esq.filters.add("esqSecondFilter", esqSecondFilter); // В данную коллекцию попадут объекты - результаты запроса, отфильтрованные по двум фильтрам. esq.getEntityCollection(function(result) { if (result.success) { result.collection.each(function(item) { // Обработка элементов коллекции. email = email + " " + this.get("Number"); }); this.set("UsrEmail", email); } }, this); }
Вот мой пример по копированию всех адресов электронной почты контакта, по аналогии можно выбрать топ1 нужного типа
/** Копирование почты */ copyEmail: function() { if (this.get("Contact")) { var contact = this.get("Contact"); contact = contact.value; var esq = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "ContactCommunication" }); var email = ""; esq.addColumn("Contact"); esq.addColumn("CommunicationType"); esq.addColumn("Number"); // Создание экземпляра первого фильтра. var esqFirstFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Contact", contact); // Создание экземпляра второго фильтра. var esqSecondFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "CommunicationType", "ee1c85c3-cfcb-df11-9b2a-001d60e938c6"); // Фильтры в коллекции фильтров запроса будут объединяться логическим оператором OR. esq.filters.logicalOperation = Terrasoft.LogicalOperatorType.AND; // Добавление созданных фильтров в коллекцию запроса. esq.filters.add("esqFirstFilter", esqFirstFilter); esq.filters.add("esqSecondFilter", esqSecondFilter); // В данную коллекцию попадут объекты - результаты запроса, отфильтрованные по двум фильтрам. esq.getEntityCollection(function(result) { if (result.success) { result.collection.each(function(item) { // Обработка элементов коллекции. email = email + " " + this.get("Number"); }); this.set("UsrEmail", email); } }, this); }