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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.12.2017, 14:33   #1  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,282 / 3491 (123) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от axapter Посмотреть сообщение
Время выполнения запроса 5 секунд.
Сделайте еще джойн по DataareaId. Время может уменьшиться. Запросы из кода X++ и запросы, которые АХ посылает к БД немного разные. АХ посылает запрос еще с фильтрацией по DataareaId по данным табличкам.

Цитата:
Сообщение от axapter Посмотреть сообщение
Но в результате нету возвратов. А возвраты были. Почему так?
Сложно дать ответ не видя данные. Думаю, что Вам надо вручную найти пару накладных и на них оттестировать конечный вид запроса. Возможно он немножко изменится. На форуме можно дать только концептуальное направление. До финального вида нужно уже идти самостоятельно

Цитата:
Сообщение от axapter Посмотреть сообщение
Выручка будет как расчетная?
В конкретном Вами приведенном запросе выручки вообще нет, т.к. запрос выбирает только количество.
__________________
Возможно сделать все. Вопрос времени
Старый 12.12.2017, 14:54   #2  
axapter is offline
axapter
Участник
 
48 / 10 (1) +
Регистрация: 20.11.2017
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Сделайте еще джойн по DataareaId. Время может уменьшиться.
Теперь быстрее стало
Старый 26.01.2018, 11:39   #3  
axapter is offline
axapter
Участник
 
48 / 10 (1) +
Регистрация: 20.11.2017
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Сложно дать ответ не видя данные. Думаю, что Вам надо вручную найти пару накладных и на них оттестировать конечный вид запроса. Возможно он немножко изменится. На форуме можно дать только концептуальное направление. До финального вида нужно уже идти самостоятельно
Если отгрузка, то фиксируется через Сведения о заявках (Заявка) - Заявка на продажу. Если возврат, то Сведения о заказе на покупку (Заказ на покупку). В аксапте отчет о продажах по документам (если присутствуют поля Номер заказа и Номер документа) на один день указывает отдельную строку для отгрузки, и отдельную строку для возврата.


Запрос на выгрузку
X++:
Declare @StartDate date ='2017-01-01'
Declare @EndDate date ='2017-01-31'

SELECT	
	CUSTINVOICEJOUR.INVOICEACCOUNT AS [ ],	
	CUSTINVOICETRANS.ITEMID AS [ ],
	CONVERT(nvarchar(10),CUSTINVOICEJOUR.INVOICEDATE, 104) AS [],		
	CASE WHEN CUSTINVOICETRANS.QTY>0 THEN CAST(CUSTINVOICETRANS.QTY AS Integer) ELSE 0 END AS [],
	CASE WHEN CUSTINVOICETRANS.QTY<0 THEN CAST(-1*CUSTINVOICETRANS.QTY AS INTEGER)ELSE 0 END AS []
FROM
	CUSTINVOICEJOUR
INNER JOIN
	CUSTINVOICETRANS
ON
	(CUSTINVOICEJOUR.SALESID=CUSTINVOICETRANS.SALESID
	AND
	CUSTINVOICEJOUR.INVOICEID=CUSTINVOICETRANS.INVOICEID
	AND
	CUSTINVOICEJOUR.INVOICEDATE=CUSTINVOICETRANS.INVOICEDATE
	AND
	CUSTINVOICEJOUR.NUMBERSEQUENCEGROUP=CUSTINVOICETRANS.NUMBERSEQUENCEGROUP
	AND
	CUSTINVOICEJOUR.DATAAREAID=CUSTINVOICETRANS.DATAAREAID)
WHERE	
	(CUSTINVOICEJOUR.INVOICEDATE >= @StartDate AND CUSTINVOICEJOUR.INVOICEDATE <=@EndDate)	
	AND
	CUSTINVOICEJOUR.ORDERACCOUNT='00001грд'
	AND
	CUSTINVOICETRANS.ITEMID = 00001
Интересно получается. Выходят как и положительные, так и отрицательные QTY. Если отрицательные, то это обратные проводки накладной (сторно). Но не возвраты.

На что нужно обратить внимание, чтобы выгрузить возвраты?
Старый 26.01.2018, 16:06   #4  
axapter is offline
axapter
Участник
 
48 / 10 (1) +
Регистрация: 20.11.2017
Получается для получения возвратов надо еще использовать таблицу PurchTable? Важно получить и дату клиента, и дату проводки (поставки)?
Старый 26.01.2018, 17:13   #5  
axapter is offline
axapter
Участник
 
48 / 10 (1) +
Регистрация: 20.11.2017
Важно получить и дату клиента, и дату проводки (поставки)
Старый 29.01.2018, 11:54   #6  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,657 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от axapter Посмотреть сообщение
Интересно получается. Выходят как и положительные, так и отрицательные QTY. Если отрицательные, то это обратные проводки накладной (сторно). Но не возвраты.

На что нужно обратить внимание, чтобы выгрузить возвраты?
В стандартном функционале задача не то, чтобы не решаемая, но решаемая сложным способом. Обычно делают кастомизацию, добавляя в накладную признак того, что это сторно. Но если решать "в общем случае", то логика следующая

1. В рамках одной накладной, как правило, не могут быть одновременно и отгрузки и возвраты. Т.е. либо все строки имеют положительно количество, либо отрицательное. "Смеси" быт не может. Если это не так, то это ошибка.

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

Следовательно, анализировать надо не каждую накладную в отдельности, а сумму накладных в разрезе заказа (SalesId).

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

Для простоты, можно считать, что дата новой накладной не может быть меньше даты исходной накладной. Т.е. достаточно будет взять максимальное значение даты. Хотя, повторюсь, в общем случае, это может быть и не так

PHP код:
Declare @StartDate date ='2017-01-01'
Declare @EndDate date ='2017-01-31'

select 
    tmp
.INVOICEACCOUNT AS [],
    
tmp.ITEMID  AS [],
    
CONVERT(nvarchar(10),tmp.INVOICEDATE104) AS [],        
    CASE 
WHEN tmp.QTY>0 THEN CAST(tmp.QTY AS Integer) ELSE 0 END AS [],
    CASE 
WHEN tmp.QTY<0 THEN CAST(-1*tmp.QTY AS INTEGER)ELSE 0 END AS []

from (
    
SELECT    
        CUSTINVOICEJOUR
.SALESID,
        
CUSTINVOICEJOUR.INVOICEACCOUNT,    
        
CUSTINVOICETRANS.ITEMID,
        -- 
В общем случаедата последней накладной может быть любой
        
-- но для простотысчитаемчто она не может быть меньше ранее созданных
        max
(CUSTINVOICEJOUR.INVOICEDATE) AS InvoiceDate,        
        
sum(CUSTINVOICETRANS.QTY) AS qty
    FROM CUSTINVOICEJOUR
    INNER JOIN CUSTINVOICETRANS    ON    CUSTINVOICEJOUR
.SALESID                CUSTINVOICETRANS.SALESID
            
AND    CUSTINVOICEJOUR.INVOICEID            CUSTINVOICETRANS.INVOICEID
            
AND    CUSTINVOICEJOUR.INVOICEDATE            CUSTINVOICETRANS.INVOICEDATE
            
AND    CUSTINVOICEJOUR.NUMBERSEQUENCEGROUP    CUSTINVOICETRANS.NUMBERSEQUENCEGROUP
    WHERE    CUSTINVOICEJOUR
.ORDERACCOUNT    N'00001грд'
        
AND    CUSTINVOICETRANS.ITEMID            N'00001'
        
-- Явно указать значение DataAreaId
        
AND CUSTINVOICEJOUR.DATAAREAID    N'XXX'
        
AND CUSTINVOICETRANS.DATAAREAID N'XXX'
    
group by 
        
-- Основная группировка по SalesIdостальное это уточнение и детализация
        CUSTINVOICEJOUR
.SALESID,
        
CUSTINVOICEJOUR.INVOICEACCOUNT,    
        
CUSTINVOICETRANS.ITEMID
    
-- Ограничение по датам для результата выборки
    having max
(CUSTINVOICEJOUR.INVOICEDATEbetween @StartDate and @EndDate
    
-- Исключаем из рассмотрения сторно без последующей отгрузки
    
AND sum(CUSTINVOICETRANS.QTY) <> 0
    
) as tmp 
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...

Последний раз редактировалось Владимир Максимов; 29.01.2018 в 12:10.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вопрос по Проектам PSA DAX: Функционал 35 19.01.2007 22:26
Вопрос по проектам Фиксированная цена PSA DAX: Функционал 9 29.06.2006 14:23
Еще вопрос про покрытие по аналитикам в Сводном планировании rt2 DAX: Функционал 3 24.03.2006 18:56
Вопрос по запросу (query) Александр_1975 DAX: Программирование 2 23.01.2004 17:35
Вопрос по Запросу отчета ravil DAX: Программирование 0 18.12.2003 17:06

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:37.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.