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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.02.2010, 15:03   #21  
MBurachkov is offline
MBurachkov
КОРУС Консалтинг
КОРУС Консалтинг
 
23 / 14 (1) ++
Регистрация: 18.12.2001
Адрес: Санкт-Петербург
Цитата:
Сообщение от Prophetic Посмотреть сообщение
В Кубе привязывается inventTransPosting по полю voucher и InventTransId, а также таблица sales По полю salesid=TransRefId
Все что, вам нужно сделать - это повторить запрос Axcision - он ничего необычного не делает - строит ровно тот sql-запрос, которые вы хотите написать. Там куб разбит на несколько частей, каждая из которых отвечает за свою логику. Теперь нужно посмотреть, как идет выборка данных для показателя подсчета себестоимости.
__________________
Misha Burachkov
Старый 26.02.2010, 15:04   #22  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,909 / 5730 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от Prophetic Посмотреть сообщение
Т.е. "правильно" использовать именно таблицу сопоставлений.
Правильно, но долго Тупой запрос по inventTrans быстрее отрабатывает, хотя и выдает неправильные данные для даты из прошлого.
Хотя с другой стороны - если вы все равно данные потом в куб закачиваете, большой беды от замедления выборки в два раза не будет, так что можно всегда от inventSettlement идти...
За это сообщение автора поблагодарили: Prophetic (1).
Старый 26.02.2010, 15:05   #23  
Prophetic is offline
Prophetic
Участник
 
113 / 15 (1) ++
Регистрация: 08.12.2009
Цитата:
Сообщение от MBurachkov Посмотреть сообщение
Посмотрите в настройках куба Axcision связки факт-таблиц и то, какую именно себестоимость хотят получить пользователи.
Хм.. интересно, а реально ли посмотреть SQL-запрос, который Куб генерит?
Старый 26.02.2010, 15:17   #24  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,319 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Prophetic Посмотреть сообщение
Да, благодарю. Связывается по inventTable.RecID, если я правильно понял.
Да.

Цитата:
Сообщение от Prophetic Посмотреть сообщение
Код:
and itr.StatusIssue = 1 or itr.statusIssue=2
and itr.dateFinancial <=@DtEnd
Ээээ.. Вы либо используете финансовую дату и используете StatusIssue = 1, либо используете физическую дату и используете StatusIssue = 1 or StatusIssue = 2.
Иначе - косяк получится. Вы просуммируете все проводки в статусе Отпущено независимо от даты (т.к. 1900-й год заведомо раньше).
Так что в Вашем запросе фразу or itr.statusIssue=2 лучше убрать
__________________
Возможно сделать все. Вопрос времени
Старый 26.02.2010, 15:25   #25  
MBurachkov is offline
MBurachkov
КОРУС Консалтинг
КОРУС Консалтинг
 
23 / 14 (1) ++
Регистрация: 18.12.2001
Адрес: Санкт-Петербург
Цитата:
Сообщение от Prophetic Посмотреть сообщение
Хм.. интересно, а реально ли посмотреть SQL-запрос, который Куб генерит?
В теории, наверное, можно (как минимум через профайлер SQL) но в данном случае вся логика описывается параметрически. Есть факт-таблицы и есть все связки между ними и все фильтры, накладываемые на таблицы + есть описание всех показателей и источники данных для них. На основании этого Axcision формирует sql-запрос.
__________________
Misha Burachkov
Старый 26.02.2010, 15:35   #26  
Prophetic is offline
Prophetic
Участник
 
113 / 15 (1) ++
Регистрация: 08.12.2009
Цитата:
Сообщение от MBurachkov Посмотреть сообщение
Все что, вам нужно сделать - это повторить запрос Axcision - он ничего необычного не делает - строит ровно тот sql-запрос, которые вы хотите написать. Там куб разбит на несколько частей, каждая из которых отвечает за свою логику. Теперь нужно посмотреть, как идет выборка данных для показателя подсчета себестоимости.
Да, согласен. InventSettlement используется для расчета корректировки в кубе.
Старый 26.02.2010, 16:29   #27  
Prophetic is offline
Prophetic
Участник
 
113 / 15 (1) ++
Регистрация: 08.12.2009
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Да.


Ээээ.. Вы либо используете финансовую дату и используете StatusIssue = 1, либо используете физическую дату и используете StatusIssue = 1 or StatusIssue = 2.
Иначе - косяк получится. Вы просуммируете все проводки в статусе Отпущено независимо от даты (т.к. 1900-й год заведомо раньше).
Так что в Вашем запросе фразу or itr.statusIssue=2 лучше убрать
Убрал. Получается какая-то безумная сумма, все равно.
Старый 26.02.2010, 16:46   #28  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,319 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
А в остальном запрос у Вас остался тот же? А то там суммируется все на конечную дату - т.е. мы имеем сумму товара в ценах себестоимости, который отгрузили с начала времен до 31.12.09.
И почему бы ей не быть безумной?
Возьмите сумму по CustInvoiceTrans.LineAmount за тот же период (сумма отгрузок в ценах продажи) и сравните. Может будет такая же безумная сумма
__________________
Возможно сделать все. Вопрос времени
Старый 26.02.2010, 17:10   #29  
MBurachkov is offline
MBurachkov
КОРУС Консалтинг
КОРУС Консалтинг
 
23 / 14 (1) ++
Регистрация: 18.12.2001
Адрес: Санкт-Петербург
Цитата:
Сообщение от MBurachkov Посмотреть сообщение
В теории, наверное, можно (как минимум через профайлер SQL) но в данном случае вся логика описывается параметрически. Есть факт-таблицы и есть все связки между ними и все фильтры, накладываемые на таблицы + есть описание всех показателей и источники данных для них. На основании этого Axcision формирует sql-запрос.
В Axcision (настройка куба, привязка факта) есть колонка "идентификатор факта" (например, AxF0014) - по нему можно посмотреть запрос в Views MS SQL сервера. (например, KAX_OLAP_Fact_AxF0014_View) - там видно, какой SQL запрос генерится.
__________________
Misha Burachkov
За это сообщение автора поблагодарили: Prophetic (1).
Старый 26.02.2010, 17:40   #30  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Не мучайте "птичку" Простейшее решение выглядит так

PHP код:
set @DtBeg '20091201'
set @DtEnd '20091231'

select sum(itr.CostAmountPosted itr.CostAmountAdjustment
from inventTrans itr with (nolock)
where itr.dateFinancial between @DtBeg and @DtEnd
    
and itr.TRANSTYPE -- Заказ на продажу 
Не нужно больше никаких фильтров и ограничений по той причине, что в тех проводках, которые учитывать не надо себестоимости и коррекции просто не будет.

Но вообще-то, MBurachkov задал правильный вопрос. Что именно подразумевается под термином "себестоимость на дату"? И нужно ли определять себестоимость именно на дату?

Так вот, Вам надо знать, по какой мгновенной (скользящей) себестоимости продавался товар без учета накладных расходов (это значение поля CostAmountPosted) или же сумма по некой усредненной себестоимости товара (это сумма CostAmountPosted и CostAmountAdjustment).

Причем следует учитывать тот факт, что по не закрытому периоду сумм коррекции еще нет и Вы увидите только суммы по скользящей себестоимости плюс накладные расходы.

Если цель - это сравнение с бухгалтерией "на дату", то заранее следует смириться с тем фактом, что с бухгалтерией у Вас НИКОГДА не сойдется. Вне зависимости от выбранного способа расчета. Ну, разве что, Вы будете суммировать напрямую бух.проводки под чутким руководством бухгалтера
За это сообщение автора поблагодарили: Prophetic (1).
Старый 26.02.2010, 18:02   #31  
MBurachkov is offline
MBurachkov
КОРУС Консалтинг
КОРУС Консалтинг
 
23 / 14 (1) ++
Регистрация: 18.12.2001
Адрес: Санкт-Петербург
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Не мучайте "птичку" Простейшее решение выглядит так

PHP код:
set @DtBeg '20091201'
set @DtEnd '20091231'

select sum(itr.CostAmountPosted itr.CostAmountAdjustment
from inventTrans itr with (nolock)
where itr.dateFinancial between @DtBeg and @DtEnd
    
and itr.TRANSTYPE -- Заказ на продажу 
Не нужно больше никаких фильтров и ограничений по той причине, что в тех проводках, которые учитывать не надо себестоимости и коррекции просто не будет.

Но вообще-то, MBurachkov задал правильный вопрос. Что именно подразумевается под термином "себестоимость на дату"? И нужно ли определять себестоимость именно на дату?

Так вот, Вам надо знать, по какой мгновенной (скользящей) себестоимости продавался товар без учета накладных расходов (это значение поля CostAmountPosted) или же сумма по некой усредненной себестоимости товара (это сумма CostAmountPosted и CostAmountAdjustment).

Причем следует учитывать тот факт, что по не закрытому периоду сумм коррекции еще нет и Вы увидите только суммы по скользящей себестоимости плюс накладные расходы.

Если цель - это сравнение с бухгалтерией "на дату", то заранее следует смириться с тем фактом, что с бухгалтерией у Вас НИКОГДА не сойдется. Вне зависимости от выбранного способа расчета. Ну, разве что, Вы будете суммировать напрямую бух.проводки под чутким руководством бухгалтера
Если я правильно понял вопрос - то задача не просто написать запрос на вычисление себестоимости - но и при этом совпасть с конкретными цифрами в уже существующем отчете. А для этого нужно понять, по какому алгоритму существующий отчет вытаскивает данные. Отсюда и куча наводящих вопросов и советов
PS "Чтобы правильно задать вопрос, нужно знать бОльшую часть ответа." (С) Р. Шекли

А почему с б/у не сойдется, если брать данные из settlement??? Они полностью совпадают с проводками в ГК
__________________
Misha Burachkov

Последний раз редактировалось MBurachkov; 26.02.2010 в 18:15.
Старый 26.02.2010, 18:15   #32  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,319 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Не нужно больше никаких фильтров и ограничений по той причине, что в тех проводках, которые учитывать не надо себестоимости и коррекции просто не будет.
Долго вдумывался в выделенную мною фразу - но так и не понял - о чем она.

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Что именно подразумевается под термином "себестоимость на дату"? И нужно ли определять себестоимость именно на дату?
Для неискушенного Аксаптой бухгалтера - это стоимость запасов именно на ту дату именно в тот момент. Другое дело - что в Аксапте сведение данных по ГК и запасам в плане себестоимости - вещь нетривиальная и хранит в себе ряд допущений и ограничений.
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Так вот, Вам надо знать, по какой мгновенной (скользящей) себестоимости продавался товар без учета накладных расходов (это значение поля CostAmountPosted) или же сумма по некой усредненной себестоимости товара (это сумма CostAmountPosted и CostAmountAdjustment).
Причем следует учитывать тот факт, что по не закрытому периоду сумм коррекции еще нет и Вы увидите только суммы по скользящей себестоимости плюс накладные расходы.
... которые (накладные расходы) м.б. сделаны вне (позже) рассматриваемого периода.

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Если цель - это сравнение с бухгалтерией "на дату", то заранее следует смириться с тем фактом, что с бухгалтерией у Вас НИКОГДА не сойдется. Вне зависимости от выбранного способа расчета.
Я бы не стал так категорично утверждать.
Если выполнить ряд условий, а именно:
1. Рассматривать только те товары, которые разносятся в ГК (галка Разносить финансовые запасы в группе складских моделей)
2. Рассматривать только те бух счета, на которые падают только складские операции
3. Рассматривать коррекции по складу (CostAmountAdjustment) по InventSettlement
4. Не делать корректировки / накладные расходы спустя более [месяца] периода, в который закрывается склад
5. Рассчитывать стоимость только на конец даты, на которую была проведена корректировка или закрытие склада
6. Рассматривать только операции по финансовой дате в заданном периоде.
(список, возможно, не исчерпывающий - но основные моменты в нем определены)
То суммарное исходящее сальдо по всем складам и товарам из п.1 будет совпадать (при отсутствии косяков в данных) с суммарным исходящим сальдо по бух счетам из п.2.
Грубо говоря - отчет InventTurnover_RU (только если его считать не по физической дате как он есть, а по финансовой и без учета операций Отпущено/Получено) по исходящему сальдо будет совпадать с итоговым сальдо по товарным счетам.

При наложении дополнительных ограничений (без учета журналов переноса или наоборот с их учетом, но тогда с их отражением в ГК) можно и обороты выверить.
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 26.02.2010 в 18:17.
Старый 26.02.2010, 20:54   #33  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Насчет "в тех проводках, которые учитывать" - это я к тому, что дополнительные условия, например, по StatusIssue - бессмысленное. Если StatusIssue отличен от 1, то и себестоимости еще нет. Она собственно и проставляется только в момент проведения. Запрос (возможно!) захватит "лишние" проводки, но они не повлияют на результат, поскольку в них еще нет себестоимости.

Почему с бухгалтерией не сойдется никогда? По той причине, что, в общем случае, слишком велико количество условий, которые надо учесть, чтобы "очистить" себестоимость складской проводки до состояния себестоимости в КГ. Причем способ "очистки" крайне громоздкий, как следствие, чрезвычайно медленный.

Как правило, останавливаются на каком-то компромисе. Неких допущениях. Что-то вроде: вот этого у нас никогда не будет, а если будет, учтем вручную. Если действительно "этого" нет, то все сходится. А если "это" появляется, то начинаются долгие и мучительные поиски причин расхождения, поскольку про "допущения" все уже благополучно забыли...
Старый 26.02.2010, 21:04   #34  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,319 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Насчет "в тех проводках, которые учитывать" - это я к тому, что дополнительные условия, например, по StatusIssue - бессмысленное. Если StatusIssue отличен от 1, то и себестоимости еще нет.
А... в этом смысле - согласен. Сразу не осознал.

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Почему с бухгалтерией не сойдется никогда? По той причине, что, в общем случае, слишком велико количество условий, которые надо учесть, чтобы "очистить" себестоимость складской проводки до состояния себестоимости в КГ. Причем способ "очистки" крайне громоздкий, как следствие, чрезвычайно медленный.
Как правило, останавливаются на каком-то компромисе. Неких допущениях. Что-то вроде: вот этого у нас никогда не будет, а если будет, учтем вручную. Если действительно "этого" нет, то все сходится. А если "это" появляется, то начинаются долгие и мучительные поиски причин расхождения, поскольку про "допущения" все уже благополучно забыли...
Согласен.
__________________
Возможно сделать все. Вопрос времени
Старый 02.03.2010, 11:51   #35  
Prophetic is offline
Prophetic
Участник
 
113 / 15 (1) ++
Регистрация: 08.12.2009
Всем спасибо за просветление.
Теги
себестоимость

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Denis Fedotenko: Себестоимость и закрытие склада Blog bot DAX: База знаний и проекты 44 29.03.2010 14:54
Зачистка товара. Себестоимость vey DAX: Функционал 17 16.02.2007 10:48
Помогите с SQL запросом malex DAX: Программирование 8 26.07.2005 13:43
Себестоимость проданного товара Hamster DAX: Функционал 3 12.08.2004 16:02
Физическая себестоимость товара Алексей Контев DAX: Функционал 5 22.08.2002 20:18

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

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

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