29.04.2009, 17:14 | #1 |
Участник
|
Баг на форме "Проводки по сопоставлению"
Наткнулся на баг на форме CustVendTransPostingLog_RU (Проводки по сопоставлению).
Видимо для того чтобы была возможность переходить к проводкам по сопоставлению с обоих сопоставленных проводок, авторы отказались X++: this.query().dataSourceTable(tablenum(CustVendTransPostingLog_RU)).clearDynalinks(); X++: public void linkActive() { transRecIdRange.value(strfmt('(' + new DictField(tablenum(CustVendTransPostingLog_RU), fieldnum(CustVendTransPostingLog_RU, TransRecId)).name() + ' == %1' + ')' + ' || ' + '(' + new DictField(tablenum(CustVendTransPostingLog_RU), fieldnum(CustVendTransPostingLog_RU, OffSetRecId)).name() + ' == %1' + ')', custVendTrans.RecId)); super(); } X++: public void linkActive() { transRecIdRange.value(strfmt('(((' + new DictField(tablenum(CustVendTransPostingLog_RU), fieldnum(CustVendTransPostingLog_RU, TransRecId)).name() + ' == %1' + ')' + ' || ' + '(' + new DictField(tablenum(CustVendTransPostingLog_RU), fieldnum(CustVendTransPostingLog_RU, OffSetRecId)).name() + ' == %1' + '))' + ' && ' + '(' + new DictField(tablenum(CustVendTransPostingLog_RU), fieldnum(CustVendTransPostingLog_RU, RefTableId)).name() + ' == %2' + '))', custVendTrans.RecId, custVendTrans.TableId)); // <-- super(); } |
|
29.04.2009, 17:36 | #2 |
Боец
|
Вечно в *_RU какие-то извращения...
|
|
29.04.2009, 17:43 | #3 |
Moderator
|
на мой субъективный взгляд - таблица custVendTransPostingLog_ru - сама по себе одна большая ошибка
|
|
29.04.2009, 18:19 | #4 |
Участник
|
В текущей версии ситуация следующая:
refTableIdRange.value(queryValue(custVendTrans.TableId)); Почему CustVendTransPostingLog_RU считается ошибкой не очень понял |
|
29.04.2009, 18:21 | #5 |
Участник
|
А для какой Аксапты вы это делали ?
Если трешка, то там и так сработает - там RecId уникальный в пределах компании, так что достаточно ссылки по recId. |
|
29.04.2009, 18:27 | #6 |
Участник
|
|
|
29.04.2009, 18:30 | #7 |
Боец
|
|
|
29.04.2009, 18:31 | #8 |
Участник
|
|
|
29.04.2009, 18:34 | #9 |
Участник
|
Цитата:
Никогда не знаешь, что может измениться в следующих версиях |
|
29.04.2009, 18:36 | #10 |
Moderator
|
А ты можешь в двух словах сформулировать - какой смысл в этой таблице ? Насколько я помню, ее завели в 2.5sp2 чтобы хранить информацию о проводках сделанных по сопоставлению (чтобы потом легче откатывать было). НО: В западной версии проводки по сопоставлению откатываются без всяких логов сопоставления - просто за счет данных о профилях в исходных записях custVendTrans/custvendSettlement/taxTrans и тп.
Можно было вычислять эти данные и без создания таблицы во первых, во вторых - вариант тупо пробежаться по логу и отсторнировать проводки по ГК все равно не работает - приходится при сторнировании очередной записи в settlement или trans, искать что-то в этом странном логе. Дальше - хуже. При реализации оплаченного НДС в версии 2.5sp5 (кажется) туда еще засунули налоговый код и начали данные из этой таблицы использовать для каких-то рассчетов по зачету НДС по книжкам. И теперь схему зачета НДС по оплате фактически отменили - а таблица продолжает жить. Получается, что если эта таблица является чисто информационным логом для изучения пользователем - то непонятно:
Последний раз редактировалось fed; 29.04.2009 в 18:41. Причина: Чуток переструктурировал и причесал для читаемости |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
29.04.2009, 18:42 | #11 |
Участник
|
Она же не дает досопоставить уже сопоставленные частично проводки, если в них появились открытые остатки.
Плюс были проблемы с расщеплением CustVendTransOpen по dueDate.- Потом нормально не сопоставишь. |
|
29.04.2009, 18:47 | #12 |
Moderator
|
Цитата:
Кстати - спасибо что напомнил. До появления этой таблицы и ее использования для зачетов НДС можно было сопоставлять одну и ту же накладную с одним и тем же платежом несколько раз одной и той же датой. Но - поскольку логика классов разнесения платежей на строки фактуры от применения такого подхода ломалась - пришлось поставить проверку на custVendtransPostingLog_ru. Которую, кстати, можно было прекрасно заменить проверкой по custVendSettlement... |
|
29.04.2009, 19:19 | #13 |
Участник
|
Денис, спасибо за замечания по данной таблице
Первоначальная суть этой таблицы заключается именно в том, что отмена сопоставления должна откатывать сопоставление, а не пересчитывать его заново, как было в международной версии. В DAX 2009 наконец добавили некий признак CustVendSettlement для того, чтобы откатывать все проводки, рожденные в конкретной сессии сопоставления. Безусловно это лог, который можно считать транзакционным. Данные оттуда действительно используются в самых различных целях. Например при расчете курсовых разниц. То, что записи удаляются наверное не очень хорошо, но не уверен. По поводу нормализации вообще воздержусь от комментариев. Откройте форму EmplTable в DAX 2009 и посчитайте число источников данных. |
|
Теги |
баг, ошибка, проводки по сопоставлению, сопоставление, форма |
|
|