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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.01.2008, 11:01   #1  
evb is offline
evb
Участник
 
32 / 10 (1) +
Регистрация: 11.01.2008
Отчет "Запасы в наличии"
Приветствую всех. Решил тут немного модифицировать вышеупомянутый отчет и столкнулся с необъяснымыми явлениями.
По порядку: AX 3.0, Управление запасами \ Отчеты \ В наличии \ Запасы в наличии
Из Query репорта убираю таблицу InventTableModule(хотя и с ней пробовал - все равно не работало). Запускаю отчет с параметрами - получается такой вот запрос:

Код:
SELECT A.ITEMNAME,SUM(B.POSTEDQTY),SUM(B.POSTEDVALUE),SUM(B.PHYSICALVALUE),SUM(B.DEDUCTED),SUM(B.REGISTERED),SUM(B.RECEIVED),SUM(B.PICKED),SUM(B.RESERVPHYSICAL),SUM(B.RESERVORDERED),SUM(B.ONORDER),SUM(B.ORDERED),SUM(B.ARRIVED),SUM(B.QUOTATIONRECEIPT),SUM(B.QUOTATIONISSUE),SUM(B.PHYSICALINVENT),SUM(B.POSTEDVALUESECCUR_RU),SUM(B.PHYSICALVALUESECCUR_RU),SUM(B.AVAILPHYSICAL),SUM(B.AVAILORDERED),B.ITEMID,C.INVENTCOLORID 
FROM INVENTTABLE A WITH( NOLOCK),
INVENTSUM B WITH( NOLOCK),
INVENTDIM C WITH( NOLOCK) 
WHERE ((A.DATAAREAID='vir') 
AND ((A.ITEMID LIKE '000-02%' ESCAPE '\' ) 
AND (A.INVENTGROUPID1='Отделка_1'))) 
AND ((B.DATAAREAID='vir') 
AND (A.ITEMID=B.ITEMID)) 
AND ((C.DATAAREAID='vir') 
AND ((C.INVENTLOCATIONID LIKE 'arh%' ESCAPE '\' ) 
AND (B.INVENTDIMID=C.INVENTDIMID))) 
GROUP BY A.ITEMNAME,B.ITEMID,C.INVENTCOLORID 
ORDER BY A.ITEMNAME,B.ITEMID,C.INVENTCOLORID OPTION(FAST 6)
Отчет при этом получается на загляденье. Все траблы начинаются как только я пытаюсь в Query добавить еще одну таблицу(InventLoctaion). Новый запрос насколько я понимаю ничем принципиально от старого не отличается, но вот в отчет попадает количество строк раз в 10 меньше, чем в предыдущем варианте.

Код:
SELECT A.ITEMNAME,SUM(B.POSTEDQTY),SUM(B.POSTEDVALUE),SUM(B.PHYSICALVALUE),SUM(B.DEDUCTED),SUM(B.REGISTERED),SUM(B.RECEIVED),SUM(B.PICKED),SUM(B.RESERVPHYSICAL),SUM(B.RESERVORDERED),SUM(B.ONORDER),SUM(B.ORDERED),SUM(B.ARRIVED),SUM(B.QUOTATIONRECEIPT),SUM(B.QUOTATIONISSUE),SUM(B.PHYSICALINVENT),SUM(B.POSTEDVALUESECCUR_RU),SUM(B.PHYSICALVALUESECCUR_RU),SUM(B.AVAILPHYSICAL),SUM(B.AVAILORDERED),B.ITEMID,C.INVENTCOLORID 
FROM INVENTTABLE A WITH( NOLOCK),
INVENTSUM B WITH( NOLOCK),
INVENTDIM C WITH( NOLOCK),
INVENTLOCATION D WITH( NOLOCK) 
WHERE ((A.DATAAREAID='vir') 
AND ((A.ITEMID LIKE '000-02%' ESCAPE '\' ) 
AND (A.INVENTGROUPID1='Отделка_1'))) 
AND ((B.DATAAREAID='vir') 
AND (A.ITEMID=B.ITEMID)) 
AND ((C.DATAAREAID='vir') 
AND ((C.INVENTLOCATIONID LIKE 'arh%' ESCAPE '\' ) 
AND (B.INVENTDIMID=C.INVENTDIMID))) 
AND ((D.DATAAREAID='vir') 
AND (C.INVENTLOCATIONID=D.INVENTLOCATIONID)) 
GROUP BY A.ITEMNAME,B.ITEMID,C.INVENTCOLORID 
ORDER BY A.ITEMNAME,B.ITEMID,C.INVENTCOLORID OPTION(FAST 5)
Есть ли этому какое-нить логическое объяснение???
Старый 11.01.2008, 11:17   #2  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Ну, первое, что приходит в голову для случая, если в запрос добавили таблицу, а строк стало возвращаться меньше - это то, что не все значения, имеющиеся в "старых" таблицах встречаются в последней добавленной таблице.

Возможно, у вас не все C.INVENTLOCATIONID встречаются в D.INVENTLOCATIONID (см. условие C.INVENTLOCATIONID=D.INVENTLOCATIONID ).
Старый 11.01.2008, 11:46   #3  
evb is offline
evb
Участник
 
32 / 10 (1) +
Регистрация: 11.01.2008
да в том-то и дело, что с этим все в порядке.....
Старый 11.01.2008, 12:03   #4  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Разное число строк получается в Аксапте или при выполнении запросов напрямую на SQL сервере ?
Старый 11.01.2008, 14:16   #5  
evb is offline
evb
Участник
 
32 / 10 (1) +
Регистрация: 11.01.2008
только в Аксапте, на SQL все ок
Старый 11.01.2008, 15:19   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Согласен с Gustav
Цитата:
Сообщение от evb Посмотреть сообщение
Есть ли этому какое-нить логическое объяснение???
Да, конечно.
Раньше у вас было больше складов в inventLocation.
Старые склады попали в inventDim.
Потом какая то "барабашка" удалила записи в InventLocation.

Это значит, что не все InventTrans и InventDim попадают в ваш новый отчет.

Сделайте запрос
X++:
while select inventdim
notexists join inventlocation
where inventdim.inventlocationid == inventlocation.inventlocationid
{
    info(inventdim.inventlocationid);
}
__________________
полезное на axForum, github, vk, coub.
Старый 11.01.2008, 15:20   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от evb Посмотреть сообщение
да в том-то и дело, что с этим все в порядке.....
Что значит термин "все в порядке" применительно к таблицам с данными?
__________________
полезное на axForum, github, vk, coub.
Старый 11.01.2008, 15:31   #8  
evb is offline
evb
Участник
 
32 / 10 (1) +
Регистрация: 11.01.2008
2mazzy: такой запрос я делал, в отчете, грубо говоря, всего 2 склада выводится и они оба есть в таблице inventlocation, это я и имел ввиду, говоря, что все в порядке
тем более, как я выше написал, на SQL запросы отрабатываются корректно и возвращают одинаковое количество строк.
Грустно вопщем
Старый 11.01.2008, 15:57   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от evb Посмотреть сообщение
такой запрос я делал, в отчете, грубо говоря, всего 2 склада выводится и они оба есть в таблице inventlocation, это я и имел ввиду, говоря, что все в порядке
А вам говорили про InventDim и про то, что он содержит больше складов, чем есть в вашем InventLocation.

Еще одно направление для поиска "барабашки".
Проверьте, не содержат ли коды складов специальные символы.
См. пункт "Рекомендация 1" здесь http://axapta.mazzy.ru/lib/search/
__________________
полезное на axForum, github, vk, coub.
Старый 11.01.2008, 16:16   #10  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Цитата:
Сообщение от evb Посмотреть сообщение
только в Аксапте, на SQL все ок
Встречалась несколько раз такая "недокументированная особенность", лечилась шаманскими плясками или полным переписыванием кода. Для первого танца можно почистить табличку SysLastValue или попробовать запустить под другим пользователем. Далее поиграться с порядком добавления таблиц в query.
Старый 11.01.2008, 17:29   #11  
Ed1k is offline
Ed1k
Участник
 
102 / 42 (2) +++
Регистрация: 19.07.2006
Цитата:
Сообщение от evb Посмотреть сообщение
WHERE ((A.DATAAREAID='vir')
vir это наверно виртуальная компания? Может стоит
посмотреть на её табличные коллекции?
Старый 16.01.2008, 14:25   #12  
evb is offline
evb
Участник
 
32 / 10 (1) +
Регистрация: 11.01.2008
Цитата:
Сообщение от mazzy Посмотреть сообщение
А вам говорили про InventDim и про то, что он содержит больше складов, чем есть в вашем InventLocation.

Еще одно направление для поиска "барабашки".
Проверьте, не содержат ли коды складов специальные символы.
См. пункт "Рекомендация 1" здесь http://axapta.mazzy.ru/lib/search/
InventDim проверен, нет таких складов, которые не содержатся в InventLocation
По поводу спец символов тоже проверил, склады имеют название в виде "буквы_буквы"
Старый 16.01.2008, 14:27   #13  
evb is offline
evb
Участник
 
32 / 10 (1) +
Регистрация: 11.01.2008
Цитата:
Сообщение от Ed1k Посмотреть сообщение
vir это наверно виртуальная компания? Может стоит
посмотреть на её табличные коллекции?
Посмотрел, все 4 таблицы, использующиеся в запросе, содержатся в одной коллекции, которая, в свою очередь, принадлежит виртуальной компании
Старый 16.01.2008, 14:43   #14  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Может дело в том, что InventLocation добавлен, но группировок по его полям нет (кстати, зачем его тогда добавлять)?
Старый 16.01.2008, 15:08   #15  
evb is offline
evb
Участник
 
32 / 10 (1) +
Регистрация: 11.01.2008
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Может дело в том, что InventLocation добавлен, но группировок по его полям нет (кстати, зачем его тогда добавлять)?
Группировку тоже делал, не помогает
Насчет зачем добавлять: на самом деле запрос мне надо будет строить еще более сложный, просто начал с простого(с добавления одной таблицы без всяких условий) - и не работает, тут уж не до сложного
Старый 16.01.2008, 15:27   #16  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
А FetchMode на добавляемой в Query таблице какой выставлен?
Старый 16.01.2008, 15:34   #17  
NNB is offline
NNB
Участник
 
103 / 12 (1) ++
Регистрация: 31.08.2006
Не пробовали посмотреть какие строчки не попадают в новый вариант?
Старый 16.01.2008, 15:50   #18  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от NNB Посмотреть сообщение
Не пробовали посмотреть какие строчки не попадают в новый вариант?
Правильно, стоит посмотреть. И попутный вопрос "из песочницы": постоянен ли состав этих строк от запуска к запуску? (А если сортировку поменять?)
Старый 16.01.2008, 16:40   #19  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Попробуйте отключить CacheLookup на таблице InventLocation. А заодно и на всех других, входящих в запрос.
Старый 17.01.2008, 07:37   #20  
evb is offline
evb
Участник
 
32 / 10 (1) +
Регистрация: 11.01.2008
Цитата:
Сообщение от Alexius Посмотреть сообщение
Попробуйте отключить CacheLookup на таблице InventLocation. А заодно и на всех других, входящих в запрос.
Попробовал, не помогло

Цитата:
Сообщение от NNB Посмотреть сообщение
Не пробовали посмотреть какие строчки не попадают в новый вариант?
Смотрел. Самое интересное, что если указать конкретный код номенклатуры, который не попадает, то отчет формируется по этой номенклатуре корректно.

Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
А FetchMode на добавляемой в Query таблице какой выставлен?
Выставлен 1:n, менял на 1:1 - ничего не изменилось

Цитата:
Сообщение от Gustav Посмотреть сообщение
И попутный вопрос "из песочницы": постоянен ли состав этих строк от запуска к запуску? (А если сортировку поменять?)
Состав строк постоянен, даже при изменении сотрировки
Теги
ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Фильтрация в форме "В наличии" по агрегатному полю "Физ. наличие" miaa DAX: Программирование 13 29.08.2006 23:45
Отображение финансовых аналитик в "Номенклатура" - "В наличии" Roenick DAX: Функционал 50 27.03.2006 21:58
Отчет "В наличии". Как добавить новое условие Range ATimTim DAX: Функционал 5 13.08.2005 13:26
Отчет 'Запасы в наличии' DreamCreator DAX: Программирование 19 08.08.2005 18:37
Отчет - Запасы в наличии Wamr DAX: Функционал 9 15.11.2004 13:18

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

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

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