Коллеги, прошу Вашей помощи!
Есть задача: При отработки определенного типа активности и переводе её в состояние "Завершена", должна происходить проверка, добавлен ли в файлы и ссылки этой активности хотя бы один документ. Если добавлен, то сохранять активность, если нет - то выводить предупреждающее сообщение.
Я попробовал в конфигурации страницы активности ActivityPageV2 переопределить метод save() и прописать там проверку на вложенный документ таким образом:
save: function() {
var activityStatus = (this.get("Status").value).toString();
var activityTitle = (this.get("Title")).toString();
if (activityTitle === "Активность для Управления оценки рисков")
{
if (activityStatus === "4bdbb88f-58e6-df11-971b-001d60e938c6") {
var activityId = this.get("Id");
var checkInfo = false;
var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "ActivityFile"
});
esq.addColumn("Name","actName");
var esqFirstFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Activity", activityId);
esq.filters.add("esqFirstFilter", esqFirstFilter);
esq.getEntityCollection(function(result) {
if (result.success) {
checkInfo = true;
}
}, this);
if (checkInfo) {
this.callParent(arguments); //если документ есть сохраняем страницу
} else {
this.showInformationDialog(Ошибка. Не добавлен документ в файлы и ссылки!); //если документа нет - выводим сообщение
}
}
else {
this.callParent(arguments);
}
}
else
{
this.callParent(arguments);
}
}
После долгих проверок выяснилось, что параметр checkInfo не передает измененное значение с false на true внутри esq.getEntityCollection(function(result) {},this) и остается в значении false, хотя проверка в ActivityFile отрабатывает корректно.
Вопрос: как передать измененное значение checkInfo из esq.getEntityCollection обратно на страницу, чтобы далее можно было прописывать различные условия проверки? Или может я вообще не правильно осуществляю проверку вложенного документа и есть другие способы?