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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.03.2019, 15:50   #361  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,504 / 4772 (165) ++++++++++
Регистрация: 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,392 / 915 (35) +++++++
Регистрация: 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,504 / 4772 (165) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от ax_mct Посмотреть сообщение
если писать batchJobUpdate.setConnection(userConnection)) то это скроет ошибку за счет нового соединения. Так?
Ну по факту, вообще обновлять batchJob в рамках текущего соединения - негуманно. Он там будет заблокирован на какое-то время и я не уверен что батч сервер будет себя корректно вести в такой ситуации. Просто учитывая что они в userConnection начинают и завершают транзакции, а в обычном дефолтном соединении - нет, они действительно просто забыли табличку к userConnection присоединить.
Старый 15.03.2019, 12:13   #364  
online
Pandasama
Участник
 
134 / 32 (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,800 / 969 (36) +++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Не очень понятно что именно нужно, но если речь идет про то, что в результате объединение по AND, то так было всегда, причем есть некоторые хитрости, например:
Отличия операторов ! и != в фильтрах
Gustav: Unsorted, или Записки DAX-дилетанта - II
Старый 05.04.2019, 16:34   #366  
axm2017 is offline
axm2017
Участник
 
60 / 53 (2) ++++
Регистрация: 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
Участник
 
60 / 53 (2) ++++
Регистрация: 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,504 / 4772 (165) ++++++++++
Регистрация: 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
 
769 / 998 (35) +++++++
Регистрация: 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,504 / 4772 (165) ++++++++++
Регистрация: 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
 
647 / 669 (24) +++++++
Регистрация: 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,054 / 2097 (78) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
А я уж подумал, что оно теперь само всё заинтегрировано
Миниатюры
Нажмите на изображение для увеличения
Название: photo_2019-04-10_09-08-49.jpg
Просмотров: 173
Размер:	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-ке
Старый 10.05.2019, 10:57   #375  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,504 / 4772 (165) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Вчера натолкнулись на замечательную ошибку. Модуль ER выдавал сообщение о неправильности значений некоторых параметров. При этом на глаз, все требуемые параметры были правильными и не пустыми. Я нашим консам выдал идею, что возможно глючит система кэширования и часть серверов не видят обновления сделанные с другого сервера. Надо мол подождать до утра и снова попробовать.
Реальность оказалась гораздо интереснее: Система кэширования просто забыла записать данные в БД. На экране вчера показывались одни параметры, а сегодня - совсем другие.
Судя по всему ситуация была примерно такая:
1. Консы указали в параметрах ER ссылки на некоторый тип DocuType.
2. Потом этот тип кто-то удалил. (И похоже что delete action из DocuType на ERParameters нету - хотя не проверял).
3. Потом консы поменяли тип документа на правильный и типа изменения сохранили.
4. Потом примерно полдня система показывала на экране измененные значения полей (трем разным консам, мне и еще паре пользователей), а в БД хранила другие значения (и код класса читал именно их).
5. Потом кэш устарел и был зачищен. Мы снова увидели старые и неверные значения полей.
V10.0.0 PU24.
Сломали то ли систему кэширования, то ли систему записи в БД. Воспроизводить пока не пытались - времени не было.
P.S. Добавлю что это был Productive Instance, поэтому простые домашние средства типа рестарта IIS были не доступны. Оставалось либо ждать часиков 8, либо бороться с поддержкой (вероятно - более 8 часов).

Последний раз редактировалось fed; 10.05.2019 в 11:04.
Старый 20.05.2019, 16:36   #376  
axm2017 is offline
axm2017
Участник
 
60 / 53 (2) ++++
Регистрация: 15.05.2017
Странное
В коде класса провайдера PsaProjInvoiceDP вроде бы единственное место с упоминанием расчета LineTaxAmount из projInvoiceEmpl выглядит вот так

Интересно действительно ли литовские фанаты проектов на выходе отчета хотят видеть такой результат

X++:
// <GEEHU><GEEPL>
            if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoHU, #isoPL]))
            {
                tmpPSAProjInvoice.LineTaxAmount                = projInvoiceEmpl.TaxAmount;
            }
            // </GEEPL></GEEHU>

            if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoHU, #isoLT]))
            {
                // There may be tax amounts that should be excluded from the invoice. Remove the excluded amounts from the line's tax amount.
                tmpPSAProjInvoice.LineTaxAmount                -= PSAProjInvoiceRPTHelperEE::getExcludedTaxAmount(projInvoiceJour.LedgerVoucher, _cursor);
            }
Старый 20.05.2019, 16:49   #377  
axm2017 is offline
axm2017
Участник
 
60 / 53 (2) ++++
Регистрация: 15.05.2017
Из того же класса неполиткорректное:
"а полякам запиши дату дважды, чтобы уж точно дошло"

X++:
if (_cursor.TableId == tableNum(ProjInvoiceCost))
        {
            tmpPSAProjInvoice.TransDate = projInvoiceCost.TransDate;

            // <GEEHU><GEEPL>
            if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoHU, #isoPL]))
            {
                tmpPSAProjInvoice.LineTaxAmount                = projInvoiceCost.TaxAmount;
            }
            // </GEEPL></GEEHU>

            if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoHU, #isoLT]))
            {
                // There may be tax amounts that should be excluded from the invoice. Remove the excluded amounts from the line's tax amount.
                tmpPSAProjInvoice.LineTaxAmount                -= PSAProjInvoiceRPTHelperEE::getExcludedTaxAmount(projInvoiceJour.LedgerVoucher, _cursor);
            }

            // <GEEPL>
            if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoPL]))
            {
                tmpPSAProjInvoice.TransDate                    = projInvoiceCost.TransDate;
            }
            // </GEEPL>
        }
Старый 20.05.2019, 21:35   #378  
Stitch_MS is offline
Stitch_MS
Участник
Аватар для Stitch_MS
Соотечественники
 
299 / 288 (10) ++++++
Регистрация: 27.02.2006
Адрес: Дания
Это все результат потуавтоматического слияния GLS слоя с SYS лет десять назад.
Старый 27.05.2019, 08:27   #379  
axm2017 is offline
axm2017
Участник
 
60 / 53 (2) ++++
Регистрация: 15.05.2017
X++:
// Change report format of project invoice report whose project type is fixed price or time & material
                if (this.parmReportName() == ssrsReportStr(psaContractLineInvoice, Report))
                {
                    this.parmReportName(ssrsReportStr(PSAContractLineInvoice, Report_AE));
                }
                else if (this.parmReportName() == ssrsReportStr(PsaProjInvoice, Report))
                {
                    this.parmReportName(ssrsReportStr(PsaProjInvoice, Report_AE));
                }
Шедевральное по мне так. "И с этим всем попытаемся взлететь"
Старый 28.05.2019, 00:42   #380  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,437 / 1555 (58) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от axm2017 Посмотреть сообщение
И с этим всем попытаемся взлететь"
Если Вы пытаетесь запустить project invoice на 10.0.1 в ОАЭ, трясите саппорт на приватный хотфикс, "нормальный" фикс будет только в 10.0.4
__________________
-ТСЯ или -ТЬСЯ ?
Теги
axapta, cil, rasset, баг

 

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

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

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

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

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