13.11.2017, 15:29 | #1 |
Участник
|
AX4. Неверная сумма в InventTrans
Всем привет!
DAX 4.0. По Заказу на продажу образовалась InventTrans на 8 миллионов вместо 6 тысяч. Сопоставления нет. CostAmountPosted = -8 277 820,58. CostAmountAdjustment = 0. В журналах запасов цены корректные. Подскажите, куда копать и как исправить? |
|
13.11.2017, 15:54 | #2 |
Участник
|
CostAmountPosted всегда считается по средней на основании InventSum.
это очень быстрый алгоритм: сумма(inventSum.PostedСумма) / сумма(inventSum.PostedКол-во) суммируются все итоги, у которых аналитика с установленой галочкой финансовый, совпадает с соответствующей аналитикой проводки. таким образом: 1. либо вы ожидаете увидеть 6 тысяч по вашему алгоритму (FIFO, LIFO и т.п), а в этом поле находится себестоимость по среднему 2. либо вы не учитываете в своих ожиданиях какие-то итоги с финансовой аналитикой 3. либо ваши итоги содержат неправильные суммы. |
|
13.11.2017, 16:30 | #3 |
Moderator
|
Еще где-то до ранних сервис-паков DAX4 и самых поздних обновлений DAX3 была бага в рассчетте мгновенной себестоимости, которая приводила к задиранию этой самой мгновенной себестоимости до совершено космических сумм.
Лично видел эту багу на одном из своих проектов. (Пришлось писать джобики, котрые удаляли проводки из ГК, писали более или менее разумную сумму в InventTrans и повторно разносили в ГК). Выловил условия воспроизведения бага небезизвестный Валентинас, где-то в 2006ом году. В последних обновлениях DAX3 и в каких-то самых первых патчах к DAX4SP1 эту багу исправили. |
|
|
За это сообщение автора поблагодарили: mazzy (2), MikeR (5), RSrd (1). |
13.11.2017, 16:42 | #4 |
Участник
|
Цитата:
задиралась CostAmountAdjustment, насколько я помню. вопрос был про CostAmountPosted |
|
13.11.2017, 16:44 | #5 |
Moderator
|
А по моему как раз мгновенная себестоимость задиралась. А закрытие помирало, из за того что у него сумма коррекции (по итогам коррекции большого числа проводок с большими суммами) вываливалась за пределы разрядной сетки. Просто если ты вовремя ловил такую ситуацию, то пересчет/закрытие еще могло ее исправить.
|
|
15.11.2017, 14:37 | #6 |
Участник
|
Благодарю за ответы!
Да, в InventSum есть некорректная запись с ценой 1,5 миллиона вместо 500 рублей за штуку. Как правильно в данном случае поступить? Как исправить InventSum, проводки и желательно найти причину? |
|
15.11.2017, 15:16 | #7 |
Участник
|
Цитата:
InventSum - главная таблица складского модуля. InventSum - не доступна из штатного функционала на редактирование для пользователя InventSum могут исправить либо алгоритмы аксапты, либо прямой запрос к базе данных. другими словами, inventSum - как печень - должна работать как часы. Принять быстрые меры конечно нужно. но неправильные суммы в этой таблице означает, что у вас где-то ОЧЕНЬ плохо. и, конечно же, нужно найти причину. 1. Для исправления есть методы как интерфейса (исправляет все, работает долго), так и точечные из кода (исправляет то, что попросите. что именно просить остается за вами) Обсуждалось неоднократно. Поищите. Например, Пересчет inventSum 2. Исправлять проводки НЕ нужно. Нужно ДОБАВИТЬ коррекции. так вы сохраните историю и сможете быть уверенными что все алгоритмы работают корректно. Коррекция находится в Закрытии склада. Там была кнопка "коррекция проводок". Откорректировать себестоимость можно в приходных проводках. В расходных себестоимость должна автоматически пересчитаться после запуска закрытия или коррекции склада. (у меня сейчас нет акс4 под рукой. на скриншоте акс2012 и английская. но думаю, будет понятно) 3. и да, обязательно разберитесь и устраните причину. скорее всего, у вас не одна неправильная проводка, а целая группа неправильных. |
|
|
За это сообщение автора поблагодарили: Logger (1). |
15.11.2017, 22:31 | #8 |
Участник
|
Благодарю за подробные инструкции!
Однако: 1. Пересчет InventSum пересчитывает его по InventTrans и больше ничего не происходит - я правильно понимаю? У нас InventTrans соответствует InventSum, и оба неправильные, поэтому ничего не изменилось. 2. Я выбрал все приходные проводки (см. скрин) - там все цены корректные - корректировать нечего. Что можно здесь сделать? 3. Да. Многие проводки по этой номенклатуре неверны - в тех случаях, когда товар резервировался со склада и цена считалась по InventSum. Если резерва не было и товар брался из заказа на покупку - цена корректная (второй скрин). Что можно сделать дальше? |
|
16.11.2017, 08:49 | #9 |
Участник
|
Без паники!
Почти все разбирались с себестоимостью. продано 6.10.17 две штуки за 8млн - это конечно круто. Да, выглядит типично для неправильно сработавшего алгоритма. Многие в акс4 прошли через багу. Если это бага, то теперь для баги решение давно уже есть. ) Кроме того, у вас могли работать какие-то алгоритмы, созданные вашими программистами. А также могли быть неправильные исходные данные. Впрочем... Давайте по порядку. Цитата:
да, он ничего больше делать не должен. Если неправильные данные в проводках продажи, то нужно будет добиться, чтобы пересчет и закрытие склада сработало правильно и вывело на правильную сумму. Цитата:
пока будем исходить из этого и оставим приходные проводки. значит, надо разбираться с расходными. причем с суммой, которая появляется в момент разноски. А это мгновенная средняя которая берется из InventSum/ к вопросу вернемся позже. Цитата:
Сначала давайте обустроим рабочее место. Во-первых, нужно на форму вытащить складскую аналитику. Хотя бы ту, по которой установлен признак Финансовая (по ней считается себестоимость) Кнопка Склад \ Отображение аналитики Далее. Придется попросить программистов вытащить вам два поля на грид: общую сумму и себестоимость единицы. Попросите, чтобы программисты сразу перетащили эти поля в конец грида. это dispaly-методы. всегда перетаскивал их мышкой на форму. для программиста дело плевое, а консультанту добавляет мегатонны эффективности при разборе с себеоимостью. см. скриншот Далее. Вытащите себе на грид поле Коррекция из вкладки Обновление. Скройте поле с финансовой себестоимостью и финансовой датой (очень, похоже что вы используете только Invoice/Накладные). измените названия полей так, чтобы было удобно. сделать это можно самостоятельно правой кнопкой, Персонализация. получится похоже на скриншот 3 даже если у вас не получится модифицировать форму, то вы можете выгрузить данные в excel и там уже добавить формулы и расчетные величины. так, чтобы было удобно для анализа. Ок. Грамотный вопрос. Как исправить В расходных проводках себестоимость корректируется в соответствии в процедуре закрытия и пересчета склада: Какова бы ни была исходно рассчитанная, после пересчета склада сумма полей Posted+Adjustment должна давать правильную себестоимость. Поэтому. 1. Запускаете пересчет склада по вашей номенклатуре (сначала лучше в тестовой базе, а не в рабочей. и для быстроты эксперимента по одной номенклатуре, задайте фильтры) 2. смотрите как изменилась себестоимость в расходных проводках. 2.1. если после пересчета сум(Разнесено + Коррекция) дает правильную себестоимость, то с вашими алгоритмами все хорошо. вам нужно только разобраться откуда появляется изначальная неправильная. Продажи в минус? Что-то в карточке? Что-то исправили в процедуре резервирования? 2.2. если после пересчета сум(Разнесено + Коррекция) продолжает давать дикое отклонение (скорее всего, с другим знаком), то поздравляю - у вас тот самый баг, про который говорил fed. самый простой способ победить баг - найти и установить обновления для ax4, после чего запустить пересчет склада. Диагностика после того как вы показали складскую аналитику и выполнили исправления, нужно разобраться с причиной. нужно понять, не происходит ли отклонение по какому-то одному складу/партии. далее стоит посмотреть в карточку товара, указана ли там какая-нибудь дикая цена для складских операций. Вы говорите про резервирование. Но я подозреваю, что у вас происходит продажа в минус. В этом случае себестоимость берется не из InventSum, а из карточки товара. Если в карточке нет подозрительного, то стоит проверить процедуру резервирования - создать заказ, указать номенклатуру и количество, при котором должны происходить "неправильные вещи", не разносить, посмотреть что создается в строчках заказа и в складских проводках до разноски. Может быть, в тестовой базе разнести и проверить разноску. примерно так. Последний раз редактировалось mazzy; 16.11.2017 в 08:57. |
|
|
За это сообщение автора поблагодарили: RSrd (1). |
16.11.2017, 10:38 | #10 |
Участник
|
Отрицательный финансовый склад на модели включен?
Если включен, то не было ли момента, когда сумма уходила в отрицательную область на небольшую сумму? |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
17.11.2017, 16:17 | #11 |
Участник
|
Благодарю за оперативный ответ!
Вчера весь день экспериментировали с пересчетом и закрытием. В карточке цены, судя по истории базы, были всегда корректные - менялись в пределах 100 рублей. После пересчета склада цены не изменились. Решили сделать закрытие склада на тестовой базе - после этого корректировки появились, и себестоимость в InventTrans похожа на правду. Однако, в InventSum себестоимость - 36 рублей и не пересчитывается Что касается обновления - по имеющейся информации, установлен последний кумулятивный апдейт. Разбираюсь вот, где их найти. Можно ли применить алгоритм закрытия по одной номенклатуре и без, собственно, закрытия? И - что сделать в итоге с InventSum? |
|
17.11.2017, 16:43 | #12 |
Участник
|
Raven,
Да, отрицательный финансовый склад включен. Я правильно понимаю, что это к InventSum.PostedValue относится? Насколько мне известно - нет... не понятно, как это проверить-то. |
|
17.11.2017, 17:06 | #13 |
Участник
|
Цитата:
не на дату, не за период. а ВСЕХ - прошлых, настоящих и будущих. Если это не так - искать неправильный код. Цитата:
Пересчет - можно. Закрытие: это пересчет + пометка полностью сопоставленных проводок галочкой Закрыто. Проводки, помеченные галочкой Закрыто, больше не участвуют в процедуре расчета. Ключевой момент - это производство и возвраты. при этих операциях из одной номенклатуры может появится другая номенклатура. поэтому себестоимость с одной номенклатуры может перейти (списаться) на другую номенклатуру. Когда вы пересчитываете с фильтрами, то можете потерять такие переходы. Закрытие будет считать все. |
|
17.11.2017, 17:11 | #14 |
Участник
|
Цитата:
Trans.CostAmountPosted - это поле, которое содержит оценку себестоимости, рассчитанную в момент разноски БЫСТРЫМ алгоритмом. Если InventSum.PostedValue или InventSum.Qty содержат отрицательные значения, То себестоимость оценивается специальным образом - берется из прайса/карточки. Надо посмотреть в ваш код, есть ли какие-нибудь модификации в этом месте. И что там вообще происходит. |
|
17.11.2017, 17:23 | #15 |
Участник
|
Цитата:
Сообщение от mazzy
Ключевой момент - это производство и возвраты. при этих операциях из одной номенклатуры может появится другая номенклатура. поэтому себестоимость с одной номенклатуры может перейти (списаться) на другую номенклатуру.
Когда вы пересчитываете с фильтрами, то можете потерять такие переходы. Закрытие будет считать все. Я имел ввиду - можно ли сделать джоб, выполняюий закрытие, но понимаю, что это лишено смысла, и нужно использовать пересчет склада с правильными фильтрами. Цитата:
Если в карточке нет подозрительного, то стоит проверить процедуру резервирования - создать заказ, указать номенклатуру и количество, при котором должны происходить "неправильные вещи", не разносить, посмотреть что создается в строчках заказа и в складских проводках до разноски. Может быть, в тестовой базе разнести и проверить разноску.
После разноски накладной - подтягивается некорректная цена из InventSum (до и после закрытия поведение - то же). Последний раз редактировалось RSrd; 17.11.2017 в 17:28. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
|
|