AXForum  
Вернуться   AXForum > Прочие обсуждения > Курилка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.03.2019, 15:50   #361  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,436 / 4620 (159) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Версия 8.1.3, метод SSRSReportRunController.CheckBatchJobStatus() содержит следующий замечательный код:
X++:
                UserConnection userConnection;
                try
                {
                    userConnection = new UserConnection();
                    userConnection.ttsbegin();
                    // Update teh batch job status to 'Waiting'
                    select pessimisticLock firstonly * from batchJobUpdate where batchJob.RecId == batchJobUpdate.RecId;

                    if (batchJobUpdate)
                    {
                        batchJobUpdate.Status = BatchStatus::Waiting;
                        batchJobUpdate.update();
                    }

                    userConnection.ttscommit();
                }
                finally
                {
                    userConnection.finalize();
                }
Где-то после 8.1.1, при любой печати отчета, система проверяет что в системе присутствует специальный батч, который там что-то очищает и каким-то hausekeeping занимается. Проблема в том, что если этот батч когда-то был создан, а потом ушел в ошибку или в canceled, то при любой попытке печати любого отчета вы получите сообщение о том что система не может обновить запись в BatchJob, поскольку она не была выбрана в рамках транзакции. (Просто авторы кода забыли написать batchJobUpdate.setConnection(userConnection)).
Лечится это достаточно простым путем: Надо найти в вашей системе батч с именем "Report Data Cleanup" и просто его удалить. При следущей печати отчета, система прокашляется и создаст нужный батч.
За это сообщение автора поблагодарили: trud (5), gl00mie (5), Vadik (1).
Старый 12.03.2019, 18:55   #362  
ax_mct is offline
ax_mct
Участник
Аватар для ax_mct
 
2,305 / 879 (34) +++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от fed Посмотреть сообщение
Версия 8.1.3, метод SSRSReportRunController.CheckBatchJobStatus()
...
поскольку она не была выбрана в рамках транзакции. (Просто авторы кода забыли написать batchJobUpdate.setConnection(userConnection)).
Дык update есть, а select for update - там нет. Разве не забыли "for update"?
Или там насквозь хитрый batchJobUpdate.update() который сам себе write() ?

если писать batchJobUpdate.setConnection(userConnection)) то это скроет ошибку за счет нового соединения. Так?
Старый 12.03.2019, 19:00   #363  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,436 / 4620 (159) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от ax_mct Посмотреть сообщение
если писать batchJobUpdate.setConnection(userConnection)) то это скроет ошибку за счет нового соединения. Так?
Ну по факту, вообще обновлять batchJob в рамках текущего соединения - негуманно. Он там будет заблокирован на какое-то время и я не уверен что батч сервер будет себя корректно вести в такой ситуации. Просто учитывая что они в userConnection начинают и завершают транзакции, а в обычном дефолтном соединении - нет, они действительно просто забыли табличку к userConnection присоединить.
Старый 15.03.2019, 12:13   #364  
Pandasama is offline
Pandasama
Участник
 
122 / 30 (2) +++
Регистрация: 11.08.2014
Адрес: Барнаул
X++:
static void Job64(Args _args)
{
    QueryBuildDataSource            qbds;
    Query                           query;
    ;
    query = new query();
    qbds = query.addDataSource(tableNum(DimensionFinancialTag));
    qbds.addRange(fieldnum(DimensionFinancialTag, FinancialTagCategory)).value(queryValue(5637145326));
    qbds.addRange(fieldnum(DimensionFinancialTag, Value)).value('" ", !IFRS');
    info(query.tostring());
}
Цитата:
SELECT * FROM DimensionFinancialTag(DimensionFinancialTag_1)
WHERE ((FinancialTagCategory = 5637145326))
AND ((Value = N' ' AND NOT (Value = N'IFRS')))
Однако если сделать рендж " ", !IFRS - то все работает как надо
Старый 16.03.2019, 08:51   #365  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
1,769 / 939 (35) +++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Не очень понятно что именно нужно, но если речь идет про то, что в результате объединение по AND, то так было всегда, причем есть некоторые хитрости, например:
Отличия операторов ! и != в фильтрах
Gustav: Unsorted, или Записки DAX-дилетанта - II
Теги
axapta, cil, rasset, баг

 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:25.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.