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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.06.2013, 12:04   #1  
Aquarius is offline
Aquarius
Участник
 
139 / 29 (1) +++
Регистрация: 08.02.2007
Адрес: Одесса
Суммирование и разбиение складских проводок
1. в Акс3 складские проводки (финансово разнесенные) можно было разбивать и суммировать. например можно разбить приходные складские проводки закупки ( не закрытые) и потом их объединить.
я нашла,что в updateSumUp таблицы inventtrans перед суммированием стоит проверка:
if (! this.isUpdatedFinancial() || ! this.hasSettlements())


2. В Акс9 SP5 складские проводки (финансово разнесенные) можно разбить, но нельзя суммировать. Почему так сделали в Акс9? Это не ошибка?

я нашла,что в updateSumUp таблицы inventtrans перед суммированием стоит проверка if ((! this.isUpdatedFinancial() && ! this.isUpdatedPhysical()) || ! this.hasSettlements())

Нам возможно понадобится суммировать финансово разнесенные проводки ( которые до этого были разбиты). Например приходные складские строки закупки.
В рамках Акс9 такое действие может считаться корректным?
За это сообщение автора поблагодарили: mazzy (2).
Старый 11.06.2013, 13:20   #2  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от Aquarius Посмотреть сообщение
я нашла,что в updateSumUp таблицы inventtrans перед суммированием стоит проверка if ((! this.isUpdatedFinancial() && ! this.isUpdatedPhysical()) || ! this.hasSettlements())
Если посмотреть на код внимательно, то суммировать можно, если:
  • нету сопоставлений (то есть - финансово или физически обновленные проводки не попавшие ни в какие закрытия и пересчеты могут быть просуммированы),
  • если проводки вобще не были разнесены
Соответственно - суммировать финансово разнесенные складские проводки можно даже в версии 2009.
Изменение между версиями 3.0 и 2009, по всей видимости, было вызвано исправлением бага. Первоначальная версия кода была написана тогда, когда закрытие и пересчет вообще не трогали физчески разнесенные складские проводки. Соответственно - если код видел что проводка разнесена финансово - он лез проверять сопоставления, а если видел что не разнесена - разрешал суммирование без проверки сопоставлений. Где-то в ранних rollupах к 3ей версии, код пересчета и закрытия изменили таким образом, что он начал сопоставлять физически обновленные проводки (если в складской модели стоит галочка "Включать физические операции в себестоимость"). В результате этого могла возникнуть ситуация, когда физически обновленная складская проводка имела сопоставления в inventSettlement (с ссылкой по recId), а потом эту складскую проводку суммировали и удаляли. В результате в inventSettlement оставалась запись с висящей ссылкой на удаленный recId.

Последний раз редактировалось fed; 11.06.2013 в 13:34. Причина: опечатки
За это сообщение автора поблагодарили: mazzy (2), kashperuk (2), Aquarius (1), JeS (1).
Старый 12.06.2013, 10:26   #3  
Aquarius is offline
Aquarius
Участник
 
139 / 29 (1) +++
Регистрация: 08.02.2007
Адрес: Одесса
fed, большое спасибо за ответ.
хочу уточнить.
1. я разбила проводку закупки (статус куплено) на две проводки.
пытаюсь объединить их. объединения не происходит (все верно),т.к. по этой проводке были корректировки и поэтому есть запись в inventsettlement, что и не дает объединить проводки.
я отменила корректировку данных проводок.
пытаюсь объединить проводки ,все равно они не объединяются.
Правильно ли то что при проверке наличий сопоставления, не проверяется статус cancelled у записи. т.е. получается не важно отмена запись или активна в inventsettlement.
вот этот метод
public boolean hasSettlements()
{
return (select inventSettlement
index hint RecIdTypeIdx
where inventSettlement.TransRecId == this.RecId).RecId;

}
2. нам возможно понадобится в исключительных случаях объединять проводки , даже если они были скорректированы
я так понимаю,что если мы уберем проверку hasSettlements из
((! this.isUpdatedFinancial() && ! this.isUpdatedPhysical()) || ! this.hasSettlements())
,
у нас это получится.
Но насколько это правильно с точки зрения логики Аксапты?
Мы хотим объединять те проводки ,которые возможно будут ошибочно разбиты.
Старый 12.06.2013, 10:44   #4  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Оно не проверяет поле cancelled. Поскольку суммирование проводок может привести к удалению записей из inventTrans, это грозит появлением записей-сирот в inventSettlement -пусть даже отмененных.
В вашей ситуации есть только один простой выход:
Во первых где-то в периодических операциях модуля управления запасами есть операция очистки сопоставлений, которая тупо удаляет записи в inventSettlement, помеченные как отмененные/отменяющие. (Естественно - оставляя при этом записи в главной книге).
Во вторых - можно подумать и переделать процедуру суммирования inventTrans, таким образом чтобы она при удалении складских проводок перекидывала соответствующие записи в inventSettlement на новый inventTrans. Правда тут надо крепко думать насчет суммирования коррекций в самой проводке, но мне кажется (с вероятностью процентов 90) что этот режим можно реализовать.

Я бы начал с варианта 1, но если пользователи будут очень бастовать насчет производительности чистки сопоставлений - можно пытаться реализовать вариант 2.
Старый 12.06.2013, 13:18   #5  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
На мой взгляд, суммирование проводок, разнесенных финансового или физически особого смысла не имеет.
В той же строке заказа на покупку (или любого другого прихода) может понадобится суммирование проводок с статусе "Заказано" в тех случаях, когда используется резервирование в заказанных или маркировки. В этом случае, действительно, если ожидаемый приход разбит на несколько десятков или сотен проводок физический приход, который раскладывает не первичные аналитики под потребителей (особенно ,если потребителем является заказ на перемещение ,в котором далее протягиваются аналитики на сторону прихода) может занимать очень существенное время, так как нужно менять аналитики в потребителях для каждой из строк приходных проводок.
После же физического прихода каких-то причин суммировать проводки, на мой взгляд нет. Состояние склада зафиксировано, если нужны отчеты по складским проводкам то, все равно, в большинстве случаев в стандарте используется select sum(...). Конечно, какая-то выгода от того суммировать две проводки ил двадцать есть, но, мне кажется, небольшая.
Хотя ,естественно, могу ошибаться и оптимизатор SQL, увидев, что есть sum(...) .. group by... ведет себя очень сильно отличающимся образом зная, что в выборку попадают 3 записи или 30.
За это сообщение автора поблагодарили: Aquarius (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Минусовая корректировка складских проводок Geo DAX: Функционал 4 23.07.2010 10:24
Разбиение складских проводок при закупке Mystery DAX: Программирование 15 18.09.2008 17:05
Странное поведение складских проводок в закупках skof DAX: Прочие вопросы 7 11.10.2005 14:56
Разбиение проводок при сопоставлении по поставщикам lugachy DAX: Функционал 11 24.05.2005 17:10
Сторно складских проводок IvanHARD DAX: Функционал 8 14.03.2005 14:15

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

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

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