11.12.2017, 10:41 | #1 |
Участник
|
Вопрос по запросу
Здравствуйте!
Изучаю структуру базы данных для Microsoft Dynamic AX 2009 и пишу SQL-запрос для выгрузки отгрузок, возвратов и продаж из базы данных путем соединением таблиц CUSTINVOICEJOUR и CUSTINVOICETRANS. Код: Declare @StartDate date ='2017-08-10' Declare @EndDate date ='2017-08-10' SELECT * FROM CUSTINVOICEJOUR INNER JOIN CUSTINVOICETRANS ON CUSTINVOICEJOUR.RECID=CUSTINVOICETRANS.RECID WHERE (CUSTINVOICEJOUR.INVOICEDATE >= @StartDate AND CUSTINVOICEJOUR.INVOICEDATE <=@EndDate) AND CUSTINVOICEJOUR.ORDERACCOUNT='00001грд' |
|
11.12.2017, 10:46 | #2 |
Мрачный тип
|
Можно полюбопытствовать, что навело на мысль о такой противоестественной связи таблиц заголовка и строк ?
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
11.12.2017, 10:51 | #3 |
Участник
|
|
|
11.12.2017, 11:44 | #4 |
Мрачный тип
|
как-то вот так
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
11.12.2017, 12:22 | #5 |
Administrator
|
Есть еще табличка InventTrans (складские движения), LedgerTrans (бух проводки) и CustTrans (проводки по клиенту).
В зависимости от необходимых полей в выборке можно вместо CustInvoice* таблиц взять какую-нибудь из этих. Если, к примеру, если нет необходимости тянуть данные по выручке - то можно глянуть в InventTrans.
__________________
Возможно сделать все. Вопрос времени |
|
11.12.2017, 12:44 | #6 |
Участник
|
Я правильно понимаю, что из таблицы CUSTINVOICETRANS можно выгрузить только отгрузку (поле QTY), а для получения возврата нужно еще таблицу соединять? Аналогично для реализации, если не расчетно в запросе (=отгрузка-возвраты).
|
|
11.12.2017, 13:02 | #7 |
Участник
|
Таблицы CUSTINVOICETRANS и INVENTTRANS. Какая из таблиц учитывает вычерки? Или вычерки это отдельная таблица?
|
|
11.12.2017, 13:10 | #8 |
Administrator
|
А что такое вычерки?
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: Ace of Database (5). |
11.12.2017, 13:12 | #9 |
Administrator
|
Соединять ничего не надо. Надо смотреть на знак QTY. Положительный - это отгрузка. Отрицательный - возврат
__________________
Возможно сделать все. Вопрос времени |
|
11.12.2017, 13:18 | #10 |
Участник
|
|
|
11.12.2017, 13:20 | #11 |
Участник
|
|
|
11.12.2017, 13:37 | #12 |
Administrator
|
Документ либо есть, либо нет. Понятия "Не довезли" в таблицах CustInvoice* нет
Может... Но для таблиц CustInvoice* именно так, как я сказал. В таблице InventTrans "+" - это приход, а "-" - расход.
__________________
Возможно сделать все. Вопрос времени |
|
11.12.2017, 14:28 | #13 |
Участник
|
Цитата:
Сообщение от axapter
Здравствуйте!
Изучаю структуру базы данных для Microsoft Dynamic AX 2009 и пишу SQL-запрос для выгрузки отгрузок, возвратов и продаж из базы данных путем соединением таблиц CUSTINVOICEJOUR и CUSTINVOICETRANS. (...) Я немного запутался и есть сомнение: те ли я использую таблицы в запросе для выгрузки данных об отгрузках и возвратах? Если те, то те ли колонки использую для соединения? Что еще в фильтре надо указывать типа статусы накладных, вычерки и т. д.? 1. Открываете форму с отображением нужных таблиц. В данном случае накладную клиента 2. Правой клавишей мыши по объекту формы и в открывшемся контекстном меню выбираете пункт "Настройки" 3. В открывшейся форме настроек формы переходите на закладку "Запрос" и смотрите, какие есть связи (Link, DynaLink) и ограничения (Range) Замечание - насколько я помню, факт наличия пункта "Настройка" и закладки "Запрос" в Ax2009 регулируется правами доступа. Т.е. если у Вас этого нет, то смотрите права. Сейчас не помню, какие именно это ключи Что есть "отгрузка", "возврат" и "продажа" - это надо предметно выяснять у финансистов. Скорее всего, вам придется делать еще связку с исходными документами, чтобы брать реквизиты из них. Но, возможно, будет достаточно анализа поля CustInvoiceJour.RefNum и знака количества (суммы). Т.е. следует понимать, что отгрузка и возврат с точки зрения "стандарта" Axapta - это одно, а вот с точки зрения пользователей - это может быть совсем другое
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
11.12.2017, 14:57 | #14 |
Участник
|
|
|
11.12.2017, 15:08 | #15 |
Administrator
|
Счет-фактура в АХ не документ в том смысле, что он не имеет проводки. Это так... чисто российская справка.
Дата - это та, которая стоит в записи в таблице. А уж она будет той, которой сделали документ по возврату или сторно. Любое действие, математически возвращающее товар на склад
__________________
Возможно сделать все. Вопрос времени |
|
12.12.2017, 09:15 | #16 |
Участник
|
|
|
12.12.2017, 09:59 | #17 |
Administrator
|
Цитата:
Данные по Дате и Типу документа в строке есть (только для отгрузки и возвратов - тип один - Заказ на продажу). Номер документа тоже есть (точнее номер накладной, сгенерированный системой и код заказа на продажу, сгенерированный системой). Сопоставление между строкой возврата и строкой исходной расходной накладной - тоже есть. InventTrans(возврат).InventTransIdReturn -> InventTrans(продажа).InventTransId. Но в общем случае связка может быть M:N. Для приходных накладных - связка осуществляется по другим полям.
__________________
Возможно сделать все. Вопрос времени |
|
12.12.2017, 13:50 | #18 |
Участник
|
Пока выгружаю из таблиц 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 | #19 |
Administrator
|
Сделайте еще джойн по DataareaId. Время может уменьшиться. Запросы из кода X++ и запросы, которые АХ посылает к БД немного разные. АХ посылает запрос еще с фильтрацией по DataareaId по данным табличкам.
Сложно дать ответ не видя данные. Думаю, что Вам надо вручную найти пару накладных и на них оттестировать конечный вид запроса. Возможно он немножко изменится. На форуме можно дать только концептуальное направление. До финального вида нужно уже идти самостоятельно В конкретном Вами приведенном запросе выручки вообще нет, т.к. запрос выбирает только количество.
__________________
Возможно сделать все. Вопрос времени |
|
12.12.2017, 14:54 | #20 |
Участник
|
|
|
|
Похожие темы | ||||
Тема | Ответов | |||
Вопрос по Проектам | 35 | |||
Вопрос по проектам Фиксированная цена | 9 | |||
Еще вопрос про покрытие по аналитикам в Сводном планировании | 3 | |||
Вопрос по запросу (query) | 2 | |||
Вопрос по Запросу отчета | 0 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|