Накопилось несколько вопросов по BPM Online которых я не нашел подобных вопросов на комюнити(или плохо искал). 1. Несовпадение выполнения кода! Есть кнопка по нажатие на которую выполняется некоторый функционал. Когда просто нажимаю - работает неверно(в коде есть много if конструкций) и идет по неверной ветке. Когда начинаю дебажить в отладчику и просматривать код, то выполняется все верно!!! Я такого больше нигде не видел и не знаю что делать. Могу добавить что много используются запросы в БД. Также заметил что с утра работает одинаково через отладчик и напрямую по нажатию на кнопку. Куш чистил - непомогло.
2. Как вывести значение из функции запроса в главную функцию? вот пример кода:
в отладчику просматриваю вижу что q стает 3(или другой ответ запроса) но по окончанию функции алерт выдает 0. Приходится вытягивать данные через переменную в атрибуте.
3. Какието странные ошибки. Вчера утром срабатывало отлично, теперь ошибки. Прилагаю скрин:
Вот код который делает удаление:
var deleteQuery = Ext.create("Terrasoft.DeleteQuery",{
rootSchemaName:"UsrSplit" });
deleteQuery.filters.add("userFilter",
deleteQuery.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,"UsrInvoice", InvoiceId));
deleteQuery.execute(function(){});
1) За данное поведение отвечает JavaScript и браузер и оно никак не относится к функционалу Bpm'online. Судя по тому, что Вы делаете запросы к базе данных и глядя на код написанный в пункте 2, могу предположить что пока Вы стоите в дебагере, функции колбека успевают отработать и Вы видите правильный результат. Без дебага же, выполнение идет дальше не успев дождаться результата выполнения колбека.
2) Результат 0 абсолютно корректен в данном коде. Поскольку функция getEntityCollection вызывается асинхронно - сразу же после ее вызова вызывается alert и выдает 0, не дожидаясь ответа от базы данных. Вернуть значение из колбек функции Вы не сможете, возможно только всю логику встроить в функцию обратного вызова или же использовать атрибут.
3) В данном случае, Вам необходимо проверить какой запрос отправляется в базу данных. Для отладки воспользуйтесь программой sql profiler.
Почти решил с помощью этого? Добавляет все записи детали но старые не удаляет
this.updateDetail({
detail:"MyDetailName",//название детали (как описана в карточке)
reloadAll:true});this.sandbox.unloadModule(Id);this.sandbox.loadModule("DetailModuleV2", {
renderTo: ParentId,
id: id
});
Даже sandbox передал на деталь сообщение и там вызвал this.reloadGridData(); - далает копии
Как же обновить деталь по нажатии(например) на кнопку в главной карточке
Так, проблему решил. Деталь обновляется!!!
вот так сделал:
отправил sandbox-сообщение на деталь и там
var gridData = this.getGridData();
if (gridData) {
gridData.clear();
this.loadGridData();
}