| 
			
			 | 
		#361 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Версия 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();
                }Лечится это достаточно простым путем: Надо найти в вашей системе батч с именем "Report Data Cleanup" и просто его удалить. При следущей печати отчета, система прокашляется и создаст нужный батч.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Vadik (1), trud (5), gl00mie (5). | |
| 
			
			 | 
		#362 | 
| 
			
			 Banned 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Или там насквозь хитрый batchJobUpdate.update() который сам себе write() ? если писать batchJobUpdate.setConnection(userConnection)) то это скроет ошибку за счет нового соединения. Так?  | 
| 
	
 | 
| 
			
			 | 
		#363 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ну по факту, вообще обновлять batchJob в рамках текущего соединения - негуманно. Он там будет заблокирован на какое-то время и я не уверен что батч сервер будет себя корректно вести в такой ситуации. Просто учитывая что они в userConnection начинают и завершают транзакции, а в обычном дефолтном соединении - нет, они действительно просто забыли табличку к userConnection присоединить.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#364 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 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')))  | 
| 
	
 | 
| 
			
			 | 
		#365 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Не очень понятно что именно нужно, но если речь идет про то, что в результате объединение по AND, то так было всегда, причем есть некоторые хитрости, например: 
		
		
		
		
		
		
		
	Отличия операторов ! и != в фильтрах Gustav: Unsorted, или Записки DAX-дилетанта - II  | 
| 
	
 | 
| 
			
			 | 
		#366 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Забавный код в классе 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); } } }  | 
| 
	
 | 
| 
			
			 | 
		#367 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			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); }  | 
| 
	
 | 
| 
			
			 | 
		#368 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Разбавлю тему традиционной жалобой на высокие технологии: 
		
		
		
		
		
		
		
	Судя по сообщению службы поддержки, новый вариант D365FOE Tier-2 instance (это который основан на Azure Service Framework, aka "Self-service deployment") не совместим с Data Integrator. Соответственно продемонстрировать клиенту возможность интеграции D365FOE с D365CE не представляется возможным в принципе.  | 
| 
	
 | 
| 
			
			 | 
		#369 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Что-то 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.
		
	 
 | 
| 
	
 | 
| 
			
			 | 
		#370 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от trud
			 
 
			Что-то MVP которые были на саммите с тобой не согласны. Все насколько круто что хочется петь 
		
	![]() https://www.youtube.com/watch?v=twJc...ature=youtu.be  | 
| 
	
 | 
| 
			
			 | 
		#371 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от fed
			 
 
			Разбавлю тему традиционной жалобой на высокие технологии: 
		
	Судя по сообщению службы поддержки, новый вариант D365FOE Tier-2 instance (это который основан на Azure Service Framework, aka "Self-service deployment") не совместим с Data Integrator. Соответственно продемонстрировать клиенту возможность интеграции D365FOE с D365CE не представляется возможным в принципе.  
		 | 
| 
	
 | 
| 
			
			 | 
		#372 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А я уж подумал, что оно теперь само всё заинтегрировано  
		
		
		
			 
		
				__________________ 
		
		
		
		
	Ivanhoe as is..  | 
| 
	
 | 
| 
			
			 | 
		#373 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В последнем 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-ке.  ))
		 | 
| 
	
 | 
| 
			
			 | 
		#374 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от 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; } Можно починить примерно вот так: X++:                 reqTransCaller=reqTrans;
                select firstonly reqTrans
                    index hint RefIdx
                    where reqTrans.ReqPlanId     == reqTransCaller.ReqPlanId                &&
                          reqTrans.RefType       == ReqRefType::TransferPlannedOrder  &&
                          reqTrans.RefId         == reqTransCaller.RefId;Хе, я эту фигню нашел сегодня в 4-ке  
		 | 
| 
	
 | 
| 
			
			 | 
		#375 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вчера натолкнулись на замечательную ошибку. Модуль 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.  | 
| 
	
 | 
| 
			
			 | 
		#376 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Странное  
		
		
		
		
		
		
		
	В коде класса провайдера 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); }  | 
| 
	
 | 
| 
			
			 | 
		#377 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Из того же класса неполиткорректное: 
		
		
		
		
		
		
		
	"а полякам запиши дату дважды, чтобы уж точно дошло" 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> }  | 
| 
	
 | 
| 
			
			 | 
		#378 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Это все результат потуавтоматического слияния GLS слоя с SYS лет десять назад.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#379 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 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)); }  | 
| 
	
 | 
| 
			
			 | 
		#380 | 
| 
			
			 Модератор 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Если Вы пытаетесь запустить project invoice на 10.0.1 в ОАЭ, трясите саппорт на приватный хотфикс, "нормальный" фикс будет только в 10.0.4
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	-ТСЯ или -ТЬСЯ ?  | 
| 
	
 |