|  13.05.2009, 09:36 | #1 | 
| Участник |  Сопоставление, авансовая и курсовая разницы в DAX 4.0 
			
			DAX 4.0 SP2 FP1 EE + проект PS_37376_39274. Этот проект - дополнения по отмене суммовой разницы и добавлению авансовых разниц. В процедуре сопоставлений появился следующий алгоритм: Если (не передан первый параметр или в этом параметре поле "Накладная" заполнено) и в одной из проводок сопоставления отмечена галка "Предоплата", то работаем с авансовой разницей, иначе - с курсовой (см. CustVendExchAdjustment_W::isAdvanceAdjustment). При сопоставлении первый параметр передается, при рассопоставлении - нет. Получаем следующую проблему: 1. При сопоставлении поле "накладная" не заполнено, получаем курсовую разницу. 2. При рассопоставлении по факту анализируем только галку "Предоплата", получаем тип разницы - авансовая и пытаемся отсторнировать только ее. 3. В итоге в таблице "Журнал разноски по клиентам и поставщикам" (не безызвестная CustVendTransPostingLog_RU, см., например, Баг на форме "Проводки по сопоставлению") остается строка по курсовой разнице, хотя проводки рассопоставлены. 4. При попытке сопоставить проводку заново - выдается ошибка, причина которой - наличие строки из п.3. Мне кажется, что это - баг. Прошу совета - как лучше поправить? Предложение всегда заполнять поле "Накладная" будет рассматриваться в самую последнюю очередь. 
				__________________ Ivanhoe as is.. Последний раз редактировалось Ivanhoe; 13.05.2009 в 09:43. Причина: опечатки | 
|  | 
|  13.05.2009, 13:06 | #2 | 
| Участник | 
			
			Поясню, указанный проект выложен вот здесь: https://mbs.microsoft.com/partnersou...rintpage=false (партнерсорс, нужен доступ).
		 
				__________________ Ivanhoe as is.. | 
|  | 
|  15.05.2009, 10:59 | #3 | 
| Участник | 
			
			UP! Никто что ли не ведет в 4.0 учет по РСБУ?? 
				__________________ Ivanhoe as is.. | 
|  | 
|  26.05.2009, 17:29 | #4 | 
| Участник | 
			
			up, что же делать?     
				__________________ Ivanhoe as is.. | 
|  | 
|  26.05.2009, 19:42 | #5 | 
| Microsoft Dynamics | 
			
			Если хотите, чтобы Вам помогли, опишите пожалуйста входные условия в терминах операций (напр. операции какого типа сопоставляются, даты и пр.), а не фрагментов кода, которые Вы возможно истолковали неверно.    Авансовая разница возникает при сопоставлении накладных с предоплатами и является по сути "продолжением" накладной. 
				__________________ You should use Bing before asking dumb questions. | 
|  | 
|  26.05.2009, 20:25 | #6 | 
| Участник | 
			
			Делаю фильтр по первому посту =) 0.Настраиваем авансовые разницы, как описано в руководстве по хот-фиксу. 1. Сопоставляем начисление (поле накладная не заполнено) и предоплату (галка "Предоплата" стоит). 2. Формируется курсовая разница (можем посмотреть ее по кнопке "Проводки по сопоставлению" в форме "Операции" по поставщику). 3. Рассопоставляем операции, в проводках по сопоставлению ОСТАЛАСЬ строка с курсовой разницей. 4. При попытке сопоставить исходные операции заново - ошибка про книги покупок (на самом деле ругается на ОСТАВШУЮСЯ строку). 
				__________________ Ivanhoe as is.. Последний раз редактировалось Ivanhoe; 26.05.2009 в 20:31. | 
|  | |
| За это сообщение автора поблагодарили: sukhanchik (3). | |
|  26.05.2009, 20:28 | #7 | 
| Участник | Цитата: Мне кажется что это ошибка, и про это просто не подумали. 
				__________________ Ivanhoe as is.. | 
|  | 
|  27.05.2009, 01:00 | #8 | 
| Microsoft Dynamics | 
			
			Ну, во-первых, проводки из таблицы "Проводки по сопоставлению" (CustVendTransPostingLog_RU) не всегда удаляются при реверсе, - например при рассопоставлении на другую дату они не удаляются, а помечаются признаком "Отменено". Во-вторых, не совсем понятно, что Вы подразумеваете под термином "начисление", - какая это конкретно операция и каким образом формируется?  И наконец, почему Вы решили что при рассопоставлении ищется именно авансовая разница? Отмена сопоставления по постинг логу выполняется в методе CustVendReversePostingLog_RU.doReverse(), условие выглядит следующим образом: X++: if ((transPostingLog.AccountNum || transPostingLog.AccountNumOffset || transPostingLog.TaxRefId || (transPostingLog.PostingLogType == CustVendTransPostingLogType_RU::AdvanceAdjustment && moduleCustVend == ModuleCustVend::Vend)) && (transPostingLog.PostingLogType == CustVendTransPostingLogType_RU::VATTransit ? _postVATTransit : true)) { 
				__________________ You should use Bing before asking dumb questions. | 
|  | 
|  27.05.2009, 10:20 | #9 | 
| Участник |   
			
			Для начала, благодарю, что проявили активность, остальные молчат   Цитата: 
		
			Сообщение от Jabberwocky
			   Ну, во-первых, проводки из таблицы "Проводки по сопоставлению" (CustVendTransPostingLog_RU) не всегда удаляются при реверсе, - например при рассопоставлении на другую дату они не удаляются, а помечаются признаком "Отменено". Во-вторых, не совсем понятно, что Вы подразумеваете под термином "начисление", - какая это конкретно операция и каким образом формируется?  Начисление - проводка в общем журнале ГК с типом счета "Поставщик"/"Клиент", поле "накладная" НЕ заполнено. Цитата: 
		
			Сообщение от Jabberwocky
			   И наконец, почему Вы решили что при рассопоставлении ищется именно авансовая разница? Отмена сопоставления по постинг логу выполняется в методе CustVendReversePostingLog_RU.doReverse(), условие выглядит следующим образом: X++: if ((transPostingLog.AccountNum || transPostingLog.AccountNumOffset || transPostingLog.TaxRefId || (transPostingLog.PostingLogType == CustVendTransPostingLogType_RU::AdvanceAdjustment && moduleCustVend == ModuleCustVend::Vend)) && (transPostingLog.PostingLogType == CustVendTransPostingLogType_RU::VATTransit ? _postVATTransit : true)) { \Classes\CustVendExchAdjustment_W\isAdvanceAdjustment \Classes\CustVendReversePosting\reverseExchAdjustment_RU \Classes\CustVendReversePosting\restoreCustVendTrans \Classes\CustVendReversePosting\updateNow \Data Dictionary\Tables\VendTrans\Methods\reverseTransact \Classes\FormButtonControl\Clicked Обратите внимание на последний метод - в нем все дело. А тот код, который вы привели - он ничего не делает, так как туда передается ПУСТАЯ выборка, потому что система "не знает", что нужно сторнировать КУРСОВУЮ. 
				__________________ Ivanhoe as is.. | 
|  | 
|  27.05.2009, 21:05 | #10 | 
| Microsoft Dynamics | 
			
			Ок, привожу полный код метода CustVendExchAdjustment_W.isAdvanceAdjustment():  X++: public static boolean isAdvanceAdjustment(CustVendTrans _firstCustVendTrans, CustVendTrans _custVendTransDebet, CustVendTrans _custVendTransCredit) { boolean isAmountDiff = _custVendTransDebet.CurrencyCode != CompanyInfo::standardCurrency() && _custVendTransDebet.Invoice && _custVendTransCredit.CurrencyCode == CompanyInfo::standardCurrency() && ! _custVendTransCredit.Invoice; if (isAmountDiff && AmountDiffParameters_RU::find().Active) { return false; } if (((! _firstCustVendTrans && (_custVendTransDebet.Invoice || _custVendTransCredit.Invoice)) || _firstCustVendTrans.Invoice) && (_custVendTransDebet.Prepayment || _custVendTransCredit.Prepayment) && LedgerParameters::find().AdvanceAdjustment_W) { return true; } return false; } А насчет doReverse() - Вы не правы, не буду спорить, просто пройдитесь дебаггером. 
				__________________ You should use Bing before asking dumb questions. | 
|  | |
| За это сообщение автора поблагодарили: Ivanhoe (2). | |
|  28.05.2009, 10:50 | #11 | 
| Участник | 
			
			Замечательно!  Спасибо за код метода. У меня не так: X++: public static boolean isAdvanceAdjustment(CustVendTrans _firstCustVendTrans, CustVendTrans _custVendTransDebet, CustVendTrans _custVendTransCredit) { boolean isAmountDiff = _custVendTransDebet.CurrencyCode != CompanyInfo::standardCurrency() && _custVendTransDebet.Invoice && _custVendTransCredit.CurrencyCode == CompanyInfo::standardCurrency() && ! _custVendTransCredit.Invoice; if (isAmountDiff && AmountDiffParameters_RU::find().Active) { return false; } // ОТЛИЧИЯ В УСЛОВИЯХ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1 if ((! _firstCustVendTrans || _firstCustVendTrans.Invoice) && (_custVendTransDebet.Prepayment || _custVendTransCredit.Prepayment) && LedgerParameters::find().AdvanceAdjustment_W) { return true; } return false; } PS_37376_39274 PS_46620 
				__________________ Ivanhoe as is.. | 
|  | 
|  28.05.2009, 15:41 | #12 | 
| Microsoft Dynamics | 
			
			Этот хотфикс еще не вышел    
				__________________ You should use Bing before asking dumb questions. | 
|  | 
|  28.05.2009, 23:39 | #13 | 
| Administrator | 
			
			А в этом хотфиксе кроме данного метода еще что-то есть и он выйдет?   Или этот хотфикс является "личным"  ? 
				__________________ Возможно сделать все. Вопрос времени | 
|  | 
|  29.05.2009, 11:26 | #14 | 
| Microsoft Dynamics | 
			
			Выйдет в составе DAX 2009 Eastern Europe. Для решения проблемы автора поста, полагаю, приведенных изменений будет достаточно.
		 
				__________________ You should use Bing before asking dumb questions. | 
|  | 
| Теги | 
| авансовая разница, курсовая разница, ошибка, сопоставление, ax4.0 | 
|  | 
| 
 |