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,459 / 4662 (160) ++++++++++
Регистрация: 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,328 / 884 (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,459 / 4662 (160) ++++++++++
Регистрация: 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,778 / 952 (35) +++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Не очень понятно что именно нужно, но если речь идет про то, что в результате объединение по AND, то так было всегда, причем есть некоторые хитрости, например:
Отличия операторов ! и != в фильтрах
Gustav: Unsorted, или Записки DAX-дилетанта - II
Старый 05.04.2019, 16:34   #366  
axm2017 is offline
axm2017
Участник
 
8 / 12 (1) ++
Регистрация: 15.05.2017
Забавный код в классе ProjFormLetter_invoice

X++:
public static void projPrintFormLetter(ProjInvoiceJour  _projInvoiceJour,
                                            ProjFormLetter   _projFormLetter   = null,
                                            RecordSortedList _journalList      = null,
                                            boolean          _blCheck          = false)
    {
        Args parameters = new Args();

        if (isConfigurationkeyEnabled(configurationKeyNum(Project)))
        {
               ....
        }
        else
        {
            parameters.caller(_projFormLetter);
            parameters.parmEnumType(enumNum(PrintCopyOriginal));
            parameters.parmEnum(PrintCopyOriginal::OriginalPrint);
            if (_journalList)
            {
                parameters.object(_journalList);
            }
            else
            {
                parameters.record(_projInvoiceJour);
            }
            //Calls the SSRS ProjInvoice report
            if (!_blCheck)
            {
                MenuFunction menuFunction = new MenuFunction(menuitemOutputStr(ProjInvoice), MenuItemType::Output);
                menuFunction.run(parameters);
            }
        }
    }
При это конфигурационный ключ Project установлен на менюшке ProjInvoice и на табличках Proj... соответственно
Старый 09.04.2019, 08:42   #367  
axm2017 is offline
axm2017
Участник
 
8 / 12 (1) ++
Регистрация: 15.05.2017
No comments
X++:
if (isConfigurationkeyEnabled(configurationKeyNum(Project)))
        {
            docTypes.addEnd(PrintMgmtDocumentType::SIProjInvoice);
            docTypes.addEnd(PrintMgmtDocumentType::SIProjInvoiceWithBR);
            docTypes.addEnd(PrintMgmtDocumentType::SIManagedProjInvoice);
            docTypes.addEnd(PrintMgmtDocumentType::ProjCustRetentionReleaseInvoice);
            docTypes.addEnd(PrintMgmtDocumentType::ProjectQuotation);
        }
        else
        if (isConfigurationkeyEnabled(configurationKeyNum(Project)))
        {
            docTypes.addEnd(PrintMgmtDocumentType::ProjectInvoice);
        }
Старый 09.04.2019, 15:35   #368  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,459 / 4662 (160) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Разбавлю тему традиционной жалобой на высокие технологии:
Судя по сообщению службы поддержки, новый вариант D365FOE Tier-2 instance (это который основан на Azure Service Framework, aka "Self-service deployment") не совместим с Data Integrator. Соответственно продемонстрировать клиенту возможность интеграции D365FOE с D365CE не представляется возможным в принципе.
Старый 09.04.2019, 16:33   #369  
trud is offline
trud
Участник
Лучший по профессии 2017
 
725 / 940 (33) +++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Что-то MVP которые были на саммите с тобой не согласны. Все насколько круто что хочется петь
Цитата:
While I was at the MVP Summit a few weeks ago, I was inspired to write my first Dynamics 365 Poem. This poem releases my true inner feelings about integrating Dynamics 365 for Finance and Operations with Dynamics 365 Customer Engagement.
https://www.youtube.com/watch?v=twJc...ature=youtu.be
Старый 09.04.2019, 17:05   #370  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,459 / 4662 (160) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от trud Посмотреть сообщение
Что-то MVP которые были на саммите с тобой не согласны. Все насколько круто что хочется петь


https://www.youtube.com/watch?v=twJc...ature=youtu.be
О круто - счас узнаем как по английски звучит "Мимо тещиного дома я без шуток не хожу"
Старый 10.04.2019, 04:56   #371  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
615 / 626 (22) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от fed Посмотреть сообщение
Разбавлю тему традиционной жалобой на высокие технологии:
Судя по сообщению службы поддержки, новый вариант D365FOE Tier-2 instance (это который основан на Azure Service Framework, aka "Self-service deployment") не совместим с Data Integrator. Соответственно продемонстрировать клиенту возможность интеграции D365FOE с D365CE не представляется возможным в принципе.
Data Integrator уже не модный, на его место пришел Dual Write, правда его еще не написали, а Data Integrator уже не дописали
Старый 10.04.2019, 09:10   #372  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,038 / 2090 (78) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
А я уж подумал, что оно теперь само всё заинтегрировано
Миниатюры
Нажмите на изображение для увеличения
Название: photo_2019-04-10_09-08-49.jpg
Просмотров: 42
Размер:	295.2 Кб
ID:	12268  
__________________
Ivanhoe as is..
Старый 10.04.2019, 11:57   #373  
abv2703 is offline
abv2703
Участник
 
86 / 22 (1) +++
Регистрация: 05.12.2003
Адрес: Санкт-Петербург
В последнем DAX2009RU8 наткнулся на замечательный кусочек кода в reqTrans.findCommon():
X++:
if (reqTrans.RefType == ReqRefType::TransferDemand)
{
select firstonly reqTrans
index hint RefIdx
where reqTrans.ReqPlanId == reqTrans.ReqPlanId &&
reqTrans.RefType == ReqRefType::TransferPlannedOrder &&
reqTrans.RefId == reqTrans.RefId;
}


Хе, я эту фигню нашел сегодня в 4-ке. ))
Старый 10.04.2019, 12:12   #374  
abv2703 is offline
abv2703
Участник
 
86 / 22 (1) +++
Регистрация: 05.12.2003
Адрес: Санкт-Петербург
Цитата:
Сообщение от fed Посмотреть сообщение
В последнем DAX2009RU8 наткнулся на замечательный кусочек кода в reqTrans.findCommon():
X++:
            if (reqTrans.RefType == ReqRefType::TransferDemand)
            {
                select firstonly reqTrans
                    index hint RefIdx
                    where reqTrans.ReqPlanId     == reqTrans.ReqPlanId                &&
                          reqTrans.RefType       == ReqRefType::TransferPlannedOrder  &&
                          reqTrans.RefId         == reqTrans.RefId;
            }
Конечно можно понять, что автор просто хотел найти приходную половинку спланированного заказа на перенос. Но учитывая что условия reqTrans.refId==reqTrans.refiId и reqTrans.reqPlanId==reqTrans.reqPlanId выполняются автоматически, на самом деле, он нашел первую попавшуюся чистую потребность типа "Спланированный заказ на перенос" в первом попавшемся плане. В результате - посмотреть развертывание заказа на перенос из формы "Профиль потребностей", приводит к развертыванию первого попавшегося заказа на перенос.
Можно починить примерно вот так:
X++:
                reqTransCaller=reqTrans;
                select firstonly reqTrans
                    index hint RefIdx
                    where reqTrans.ReqPlanId     == reqTransCaller.ReqPlanId                &&
                          reqTrans.RefType       == ReqRefType::TransferPlannedOrder  &&
                          reqTrans.RefId         == reqTransCaller.RefId;


Хе, я эту фигню нашел сегодня в 4-ке
Теги
axapta, cil, rasset, баг

 

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

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

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

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

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