|
12.12.2017, 13:50 | #1 |
Участник
|
Пока выгружаю из таблиц CUSTINVOICEJOUR и CUSTINVOICETRANS и получается такой запрос
Код: Declare @StartDate date ='2017-07-01' Declare @EndDate date ='2017-07-21' SELECT CUSTINVOICEJOUR.ORDERACCOUNT, CUSTINVOICEJOUR.INVOICEACCOUNT, CUSTINVOICEJOUR.INVOICEDATE, CUSTINVOICEJOUR.REFNUM, CUSTINVOICETRANS.ITEMID, CUSTINVOICETRANS.QTY, CASE WHEN CUSTINVOICETRANS.QTY>0 THEN CUSTINVOICETRANS.QTY END Отгрузка, CASE WHEN CUSTINVOICETRANS.QTY<0 THEN -1 * CUSTINVOICETRANS.QTY END Возврат, 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.INVOICEDATE >= @StartDate AND CUSTINVOICEJOUR.INVOICEDATE <=@EndDate) AND CUSTINVOICEJOUR.ORDERACCOUNT='00001ГРД' AND CUSTINVOICETRANS.ITEMID = 00001 Выручка будет как расчетная? Напоминаю, нужно в итоге получить таблицу со следующими колонками: Код юр. лица, Код ТТ, SKU, Дата, Отгрузки шт., Возврат шт., Реализация шт.. |
|
12.12.2017, 14:33 | #2 |
Administrator
|
Сделайте еще джойн по DataareaId. Время может уменьшиться. Запросы из кода X++ и запросы, которые АХ посылает к БД немного разные. АХ посылает запрос еще с фильтрацией по DataareaId по данным табличкам.
Сложно дать ответ не видя данные. Думаю, что Вам надо вручную найти пару накладных и на них оттестировать конечный вид запроса. Возможно он немножко изменится. На форуме можно дать только концептуальное направление. До финального вида нужно уже идти самостоятельно В конкретном Вами приведенном запросе выручки вообще нет, т.к. запрос выбирает только количество.
__________________
Возможно сделать все. Вопрос времени |
|
12.12.2017, 14:54 | #3 |
Участник
|
|
|
26.01.2018, 11:39 | #4 |
Участник
|
Цитата:
Запрос на выгрузку 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 На что нужно обратить внимание, чтобы выгрузить возвраты? |
|
26.01.2018, 16:06 | #5 |
Участник
|
Получается для получения возвратов надо еще использовать таблицу PurchTable? Важно получить и дату клиента, и дату проводки (поставки)?
|
|
26.01.2018, 17:13 | #6 |
Участник
|
Важно получить и дату клиента, и дату проводки (поставки)
|
|
29.01.2018, 11:54 | #7 |
Участник
|
Цитата:
1. В рамках одной накладной, как правило, не могут быть одновременно и отгрузки и возвраты. Т.е. либо все строки имеют положительно количество, либо отрицательное. "Смеси" быт не может. Если это не так, то это ошибка. 2. Сторно - это полная копия отгрузки. Т.е. в сумме с отгрузкой получим ноль. Если это не так, то это ошибка. Следовательно, анализировать надо не каждую накладную в отдельности, а сумму накладных в разрезе заказа (SalesId). Правда, тут есть некоторые сложности с датой, поскольку, в общем случае, дата как сторно, так и дата нового проведения после сторно может быть любой. Т.е., в общем случае, под датой надо понимать дату накладной созданной самой последней. Но, опять же, есть сложности идентификации того, какую запись считать созданной "последней" Для простоты, можно считать, что дата новой накладной не может быть меньше даты исходной накладной. Т.е. достаточно будет взять максимальное значение даты. Хотя, повторюсь, в общем случае, это может быть и не так PHP код:
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... Последний раз редактировалось Владимир Максимов; 29.01.2018 в 12:10. |
|
12.12.2017, 14:56 | #8 |
Участник
|
|
|
30.01.2018, 15:09 | #9 |
Участник
|
присмотритесь к сообщению где вам намекают плясать от InventTrans
|
|
15.02.2018, 09:16 | #10 |
Участник
|
Чем INVOICEDATE отличается от DATAAREAID?
|
|
15.02.2018, 10:02 | #11 |
Участник
|
|
|
15.02.2018, 10:09 | #12 |
Участник
|
|
|
15.02.2018, 13:16 | #13 |
Участник
|
Цитата:
DATAAREAID внутренний идентификатор компании IMHO: в ON сцепка по обеим полям обязательна а в Where желательно указать из какой компании DATAAREAID делается выборка IMHO2: во все индексы генерируемые из среды, ядро всегда добавляет DATAAREAID при генерации на сервере |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2), БАХ43 (1). |
|
Похожие темы | ||||
Тема | Ответов | |||
Вопрос по Проектам | 35 | |||
Вопрос по проектам Фиксированная цена | 9 | |||
Еще вопрос про покрытие по аналитикам в Сводном планировании | 3 | |||
Вопрос по запросу (query) | 2 | |||
Вопрос по Запросу отчета | 0 |
|