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);
}