AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Функционал
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.02.2008, 16:01   #1  
VictorSH is offline
VictorSH
Участник
 
12 / 10 (1) +
Регистрация: 12.12.2005
Создание скл проводок при закр склада (AX 3 SP2).
Изначально есть складская проводка (InventTrans):

Qty CostAmountPosted CostAmountAdjustment всего QtySettled CostAmountSettled ValueOpen
1800 17228,13 1757,27 18985,4 1761 18574,05 Да

с количеством 1800, из которых сопоставлено и закрыто проводок по количеству 1761 и сумме 18574,05.

После того, как по этой номенклатуре отработает закрытие склада, происходит разделение исходной проводки на две:
Qty CostAmountPosted CostAmountAdjustment всего QtySettled CostAmountSettled ValueOpen
1761 16854,85 1719,19 18574,04 1761 18574,05 Да
39 373,28 38,08 411,36 37 390,27 Да
сумма: 18985,4


(в более аккуратном виде эти проводки во вложении )

1.По первой из них сумма CostAmountPosted и CostAmountAdjustment получается
на копейку меньше, чем сопоставленная сумма, в следствии чего сия проводка
так и остается открытой!

2.Сумма второй проводки получается на копейку больше, в результате чего при сопоставлении
одна из открытых расходных проводок корректируется на эту копейку и создается проводка на -0.01.

Примечание: ВСЕ эти проводки обработаны пересчетом складских остатков,
поэтому я рассчитывал, что закрытие склада не будет порождать
новые коррекции и соответственно менять счета.

Вопрос:
1.Некая логика в таком расщеплении проводок есть - почему бы и нет. Но смущает:
- полученный результат, а именно открытая из-за копейки приходная проводка и появившаяся коррекция
- я не встречал в доках упоминаний о подобной тактике

Я не нашел кода, который выполнял бы создание новых складских проводок. До сих пор был уверен, что закрытие и
пересчет склада только модифицирует складские проводки.

Заранее благодарен за помощь
Вложения
Тип файла: html TransTable.html (727 байт, 197 просмотров)
Старый 13.02.2008, 16:38   #2  
petr is offline
petr
Участник
Соотечественники
 
561 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Если проводка расщипилась - значит они каким-то значением отличаются - не можете сказать каким?

А еще лучше - привидите проводки целиком, исходную и две новые.

Последний раз редактировалось petr; 13.02.2008 в 16:49.
Старый 13.02.2008, 17:09   #3  
VictorSH is offline
VictorSH
Участник
 
12 / 10 (1) +
Регистрация: 12.12.2005
Во вложении xls файлик с проводками.
Вложения
Тип файла: xls Trans.xls (15.5 Кб, 157 просмотров)
Старый 13.02.2008, 17:15   #4  
petr is offline
petr
Участник
Соотечественники
 
561 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Тогда еще вопрос. Что произойдет, если принудительно объединить складские проводки в одну (функции - суммирование) на форме складских проводок? Должны бы в одну объединиться, можете пропробовать (ничего страшного произойти не должно, все равно вы на копии работаете)
Старый 13.02.2008, 17:49   #5  
Exus is offline
Exus
Участник
 
8 / 10 (1) +
Регистрация: 26.01.2006
Адрес: Moscow
Изначально проводка была смаркирована с лотом ЛН0055574 (поле InventRefTransId) на количество 1761. Поэтому проводка разделилась на две записи. Из оставшихся 39 сопоставилось 37.
Старый 13.02.2008, 17:49   #6  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Сталкивался с проблемами закрытия склада после пересчета, подробности уже забылись, осталось только правило : "Откатить все пересчеты перед закрытием склада".
И не я один : Пересчет складских запасов

PS. "Размножения" проводок не припоминаю.
Старый 13.02.2008, 17:54   #7  
VictorSH is offline
VictorSH
Участник
 
12 / 10 (1) +
Регистрация: 12.12.2005
To Petr
Функции->Суммирование не работает, т.к. в хелпе:
"Примечание При наличии проводок сопоставления для текущей номенклатуры группировка не выполняется. Это же относится и к отмененным закрытиям склада."
Старый 13.02.2008, 18:12   #8  
petr is offline
petr
Участник
Соотечественники
 
561 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Цитата:
Сообщение от VictorSH Посмотреть сообщение
To Petr
Функции->Суммирование не работает, т.к. в хелпе:
"Примечание При наличии проводок сопоставления для текущей номенклатуры группировка не выполняется. Это же относится и к отмененным закрытиям склада."
Да, было такое. Забыл. Я так понимаю, что разделять - разделяет, а суммировать не дает. Понятно.

Цитата:
Сообщение от Exus Посмотреть сообщение
Изначально проводка была смаркирована с лотом ЛН0055574 (поле InventRefTransId) на количество 1761. Поэтому проводка разделилась на две записи. Из оставшихся 39 сопоставилось 37.
Да, чего-то я это пропустил. Действительно этим полем "новые" проводки различаются, поэтому их и две.

Вот только непонятно, по идее, еще до закрытия должны были быть 2 проводки (после маркировки - если промаркировали не на все кол-во - проводки должны разделиться на 2: промаркированную и нет). А что с этим лотом ЛН0055574, сколько в нем промаркированно?
Старый 13.02.2008, 18:14   #9  
petr is offline
petr
Участник
Соотечественники
 
561 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
И еще, а можно огласить все проводки в InventTrans с лотами: ЛН3652418 и ЛН0055574, до и после закрытия?
Старый 13.02.2008, 18:15   #10  
VictorSH is offline
VictorSH
Участник
 
12 / 10 (1) +
Регистрация: 12.12.2005
to Exus
ЛН0055574 - лот строки контракта
И потом, если уж и разделилась на две, то почему так криво?!! Можно было, ведь, проверить суммы, чтобы проводка-то закрылась, ведь это, собственно, и есть цель. Ан нет! На копейку отличие и проводка уже открыта.
Старый 13.02.2008, 18:23   #11  
petr is offline
petr
Участник
Соотечественники
 
561 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Цитата:
Сообщение от VictorSH Посмотреть сообщение
to Exus
ЛН0055574 - лот строки контракта
И потом, если уж и разделилась на две, то почему так криво?!! Можно было, ведь, проверить суммы, чтобы проводка-то закрылась, ведь это, собственно, и есть цель. Ан нет! На копейку отличие и проводка уже открыта.
Проводки разделяются всегда по кол-ву, см. метод InventTrans.setSplitAmount()
Старый 13.02.2008, 18:26   #12  
petr is offline
petr
Участник
Соотечественники
 
561 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
И еще: разделение проводок и закрытие склада (сопоставление) никак между собой не связанны, во всяком случае мне про это неизвестно.

Сопоставление оперирует с полями CostAmountAdjustment, QtySettled, CostAmountSettled (и дополн. в русской версии), разделение производится при различиях в "стринговых" полях.

Разделить проводку, чтобы половину сопоставить, половину оставить открытой - такого я в стандарте не встречал. Пока...
Старый 13.02.2008, 18:27   #13  
VictorSH is offline
VictorSH
Участник
 
12 / 10 (1) +
Регистрация: 12.12.2005
Все складские проводки во вложении
Вложения
Тип файла: rar AllTrans.rar (55.4 Кб, 102 просмотров)
Старый 13.02.2008, 18:32   #14  
VictorSH is offline
VictorSH
Участник
 
12 / 10 (1) +
Регистрация: 12.12.2005
to Petr
Дык я ж с чего и начал (см. исходное собщение)- до этого я тоже не связывал разделение проводок с сопоставлением/пересчетом
Но эксперимент был достаточно чистым:
1.сохранил все проводки по номенклатуре+коду аналитики (см.AllTrans лист 1-й)
2.запустил закрытие по конкретной номенклатуре
3.сохранил все проводки по номенклатуре+коду аналитики (см.AllTrans лист 2-й)
Кроме меня никто в этой базе не работал.
Старый 13.02.2008, 19:14   #15  
petr is offline
petr
Участник
Соотечественники
 
561 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Цитата:
Сообщение от VictorSH Посмотреть сообщение
to Petr
Дык я ж с чего и начал (см. исходное собщение)- до этого я тоже не связывал разделение проводок с сопоставлением/пересчетом
Да, я прочитал. Но я это написал в ответ на реплику:
Цитата:
Сообщение от VictorSH Посмотреть сообщение
И потом, если уж и разделилась на две, то почему так криво?!! Можно было, ведь, проверить суммы, чтобы проводка-то закрылась, ведь это, собственно, и есть цель. Ан нет! На копейку отличие и проводка уже открыта.
Напишите еще версию Аксапты, плз.
Старый 13.02.2008, 19:23   #16  
petr is offline
petr
Участник
Соотечественники
 
561 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Касательно разделения проводок при закрытии склада:

В DAX3.0SP4 (обновленное закрытие склада) разделение (согласно перекрестных ссылок) происходит только в одном месте:

InventAdj_Closing.updateSettleRefTransId()

X++:
    // clear unused references

    if (mapQtyIssue || mapQtyReceipt)
    {
        while select forupdate inventTrans
            index hint openItemIdx
            where inventTrans.ValueOpen         == inventTransOpen::Yes &&
                  inventTrans.ItemId            == _inventTable.ItemId  &&
                  inventTrans.InventRefTransId  != ''
        {
            if ((inventTrans.Qty > 0 && (! mapQtyIssue   || ! mapQtyIssue.exists(inventTrans.InventTransId)    || abs(mapQtyIssue.lookup(inventTrans.InventTransId)) <  inventAdj::settleQtyDiff())) ||
                (inventTrans.Qty < 0 && (! mapQtyReceipt || ! mapQtyReceipt.exists(inventTrans.InventTransId)  || abs(mapQtyReceipt.lookup(inventTrans.InventTransId)) <  inventAdj::settleQtyDiff())))
            {
                if (inventTrans.QtySettled)
                    inventTrans.updateSplit(inventTrans.financialOpenQty());

                inventTrans.InventRefTransId = '';
                inventTrans.doUpdate();

                if (! inventTrans.isUpdatedFinancial())
                {
                    movement = inventTrans.inventMovement(true);
                    if (movement && movement.inventRefTransId() != '')
                    {
                        movement.setInventRefFields(inventRefType::None,'','');
                        movement.updateDoBuffer();
                    }
                }
            }
        }
    }
Согласно коду, если для вашей проводки нет проводки на которую она ссылается (а ее действительно нет), то тогда от проводки обрезается несопоставленная часть, что у вас и произошло. Так что все в порядке.

Ну а то, что сопоставленная сумма не равна фин. сумме проводки - такое бывает (я наблюдат при закрытии по средней такое). Ничего особенно страшного в этом нет, это будет только влиять на производительность отчетов и скорость последующих закрытий склада. Но если таких ситуаций немного, то тоже ничего страшного.

И еще. В некоторых СП при создании заказа на основе контракта (Blanket order) складская проводка по этому заказу ссылается на лот строки из контракта, в некоторых нет (т.е. для вашей исходной проводки поле InventRefTransId не будет заполнено), соответственно нет разбиения и т.д.

Эту ситуацию на форуме уже обсуждали.

Т.е.
Старый 13.02.2008, 19:39   #17  
petr is offline
petr
Участник
Соотечественники
 
561 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
P.S.

Ссыкли на обсуждение проблемы с заполненными InventRefTransId лотом контракта
Пересчет с/с в проводках с заполненным InventRefTransId

Изыскания по поводу функциональности поля "Ссылка на лот"
Теги
ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Denis Fedotenko: Себестоимость и закрытие склада Blog bot DAX: База знаний и проекты 44 29.03.2010 14:54
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
Arijit Basu: AX 2009 - Quick Overview Blog bot DAX Blogs 4 19.05.2008 14:47
Data migration AX 3.0 SP3 Oracle 9.1 -> AX 4.0 SP2 SQL 2005 dacom DAX: Администрирование 12 30.11.2007 11:25
Dynamics AX: Dynamics AX 4.0 SP2 has been released Blog bot DAX Blogs 0 02.08.2007 03:50

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:11.