Здравствуйте.
Есть две сущности: Arrears - задолженности, PromisesArrears - обещания.
Суть задачи в следующем: необходимо чтобы при добавлении нового обещания, когда открываем справочник задолженностей, чтобы отображались только те задолженности по которым еще не созданы обещания. Итак, на странице PromisesArrearsPage в свойство attributes добавляем
"Arrears": {
dataValueType: Terrasoft.DataValueType.LOOKUP,
dependencies: [
{
columns: ["Arrears"],
methodName: "arrearsFunction"
}
],
lookupListConfig: {
filters: [
function() {
var filterGroup = Ext.create("Terrasoft.FilterGroup");
var notHaveOtherPromisesFilter = Terrasoft.createColumnIsNullFilter("[PromisesArrears:Arrears].Id");
filterGroup.add("notHaveOtherPromisesFilter", notHaveOtherPromisesFilter);
return filterGroup;
}
]
}
},
Но в результате открывается пустой справочник. Пробовал также указывать явно левосторонний join ">[PromisesArrears:Arrears].Id", но это ничего не дало. К сожалению, не знаю как получить sql текст на JS, поэтому для получения текста запроса создал esq на c# с идентичным как мне представляется фильтром и join.
Код с#
var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Arrears");
esq.AddColumn("[PromisesArrears:Arrears].Id");
var esqFirstFilter = esq.CreateIsNullFilter("[PromisesArrears:Arrears].Id");
esq.Filters.Add(esqFirstFilter);
resultSQLText = esq.GetSelectQuery(UserConnection).GetSqlText();
return true;
Полученный в результате запрос
SELECT
[PromisesArrears].[Id] [PromisesArrears.Id]
FROM
[dbo].[Arrears] [Arrears] WITH(NOLOCK)
LEFT OUTER JOIN [dbo].[PromisesArrears] [PromisesArrears] WITH(NOLOCK) ON ([PromisesArrears].[ArrearsId] = [Arrears].[Id])
WHERE
[PromisesArrears].[Id] IS NULL
^^И это именно тот запрос, что возвращает мне то что нужно (в части фильтрации и join).
Поэтому пара вопросов:
1) Что не так в lookupListConfig?
2) Как получить SQL текст на JS ?