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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.04.2009, 14:56   #1  
jeky is offline
jeky
:o)
Аватар для jeky
 
131 / 64 (3) ++++
Регистрация: 22.05.2008
? оборотная ведомость по складу необходимо добавить ещё один фильтр
Доброго!

у наших журналов есть дополнительный признак (наша доработка) да/нет
в отчет должны попадать журналы с со значение признака Нет

просмотрела код отчета (InventTurnover_RU)

попыталась добавить join и наложить условие в calcAll - не получилось

X++:
        while select RecId, CostAmountPosted, CostAmountAdjustment, Qty,
                     DatePhysical, Direction, TransRefId, InvoiceId from searchInventTrans
            where searchInventTrans.DatePhysical  <= endDate                            &&
                  searchInventTrans.ItemId        == inventTable.ItemId                 &&
                  searchInventTrans.Direction     != InventDirection::None              &&
                  searchInventTrans.StatusIssue   != StatusIssue::OnOrder               &&
                  searchInventTrans.StatusIssue   != StatusIssue::Picked                &&
                  searchInventTrans.StatusIssue   != StatusIssue::ReservOrdered         &&
                  searchInventTrans.StatusIssue   != StatusIssue::ReservPhysical        &&
                  searchInventTrans.StatusIssue   != StatusIssue::QuotationIssue        &&
                  searchInventTrans.StatusReceipt != StatusReceipt::Registered          &&
                  searchInventTrans.StatusReceipt != StatusReceipt::Arrived             &&
                  searchInventTrans.StatusReceipt != StatusReceipt::QuotationReceipt    &&
                  searchInventTrans.StatusReceipt != StatusReceipt::Ordered
        join inventDim
            where inventDim.inventDimId           == searchInventTrans.inventDimId      &&
                  inventDim.InventLocationId      == InventLocationId
//мои изменения -->
        join InventJournalTrans
            where InventJournalTrans.InventTransId == searchInventTrans.InventTransId
        join inventJournalTable
            where inventJournalTable.JournalId     == InventJournalTrans.JournalId      &&
                  inventJournalTable.UNS_IsPererabotka == NoYes::No
//мои изменения <--
так же попыталась добавить такой же join в CostAmountPosted здесь же calcAll, тоже не помогло.. join-ы работают - проверяла и в обозревателе и в студии...
помогите, пожалуйста, в пн. с утра сдавать очет....
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов.

Последний раз редактировалось jeky; 04.04.2009 в 16:12.
Старый 04.04.2009, 16:04   #2  
jeky is offline
jeky
:o)
Аватар для jeky
 
131 / 64 (3) ++++
Регистрация: 22.05.2008
так же попыталась навесить цепочку из датасорсов в query отчета в AOD c ранджем на нужном поле - Нет
тоже ни к чему не привело...
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов.
Старый 04.04.2009, 16:19   #3  
jeky is offline
jeky
:o)
Аватар для jeky
 
131 / 64 (3) ++++
Регистрация: 22.05.2008
Post
если все же кто-то мимоходом заглянет...
after - мои изменения - к сожалению превысил лимит в 300кб
before - до моих изменений
Вложения
Тип файла: xpo IT_DEV_InventTurnover_RU_before.xpo (297.4 Кб, 442 просмотров)
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов.

Последний раз редактировалось jeky; 04.04.2009 в 17:00.
Старый 04.04.2009, 16:55   #4  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
У меня нет ваших данных, чтобы сказать однозначно, но я бы стал думать в направлении добавлении вашей галки в InventTrans и заполнении ее в момент разноски журнала.

Как правило, оборотка и так не самый быстрый отчет, а join 2-х дополнительных таблиц отрицательно скажется на ее быстродействии.

Кроме того, я бы имел в виду, что разнесенные журналы могут быть удалены. Если не сразу, то через пару лет в момент "обрезания" базы данных. А в этом случае ваш отчет будет работать не корректно.
Старый 04.04.2009, 19:28   #5  
jeky is offline
jeky
:o)
Аватар для jeky
 
131 / 64 (3) ++++
Регистрация: 22.05.2008
Цитата:
Сообщение от Андре Посмотреть сообщение
У меня нет ваших данных, чтобы сказать однозначно, но я бы стал думать в направлении добавлении вашей галки в InventTrans и заполнении ее в момент разноски журнала.

Как правило, оборотка и так не самый быстрый отчет, а join 2-х дополнительных таблиц отрицательно скажется на ее быстродействии.

Кроме того, я бы имел в виду, что разнесенные журналы могут быть удалены. Если не сразу, то через пару лет в момент "обрезания" базы данных. А в этом случае ваш отчет будет работать не корректно.
спасибо! буду над этим думать, только вряд ли мне сейчас на это выделят время...
у нас на работе просто пожар..
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов.
Старый 06.04.2009, 12:06   #6  
jeky is offline
jeky
:o)
Аватар для jeky
 
131 / 64 (3) ++++
Регистрация: 22.05.2008
Red face
вобщем поступила совершенно бесцеремонно и некрасиво ..
вытащила из searchInventTrans id проводки.. по ней делаю дополнительный селект из проводок с уже проверкой сторно это или нет, если да, то в пеменную isStorno запоминаю а дальше закрыла под неё вычисление оборотов, а остатки на конец и начало вычисляются по-прежнему...
самое быстрое, что смогла на сегодня утро придумать... а дальше будем посмотреть ...
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов.

Последний раз редактировалось jeky; 06.04.2009 в 12:20.
Старый 04.04.2009, 16:54   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,311 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Против непосредственно наложения фильтра ничего не имею, но... почему Вы решили что все складские операции (searchInventTrans) порождены из складских журналов (InventJournalTrans)? Да и разнесенный складской журнал - в общем-то никто не мешает удалить (если это не запрещали в рамках доработки).

Тут более правильно будет не джойниться с InventTrans, а уже внутри цикла каждый раз делать find к InventJournalTrans. Это конечно будет медленнее. Ну либо - not exists join к InventJournalTrans, где поле UNS_IsPererabotka == NoYes::Yes. Но этот запрос тоже надо замерять по времени
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: aidsua (1).
Старый 04.04.2009, 17:09   #8  
jeky is offline
jeky
:o)
Аватар для jeky
 
131 / 64 (3) ++++
Регистрация: 22.05.2008
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Против непосредственно наложения фильтра ничего не имею, но... почему Вы решили что все складские операции (searchInventTrans) порождены из складских журналов (InventJournalTrans)?
не знаю.. полностью отчет писала не я .. мне просто нужно исключить проводки относящиеся к журналам переработки

Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Да и разнесенный складской журнал - в общем-то никто не мешает удалить (если это не запрещали в рамках доработки).
запрещали..

Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Тут более правильно будет не джойниться с InventTrans, а уже внутри цикла каждый раз делать find к InventJournalTrans. Это конечно будет медленнее. Ну либо - not exists join к InventJournalTrans, где поле UNS_IsPererabotka == NoYes::Yes. Но этот запрос тоже надо замерять по времени
проблема, что в InventJournalTrans не пишется этот признак - он есть только у InventJournalTable
за идею спасибо! буду думать как же это применить
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов.
Старый 04.04.2009, 17:12   #9  
jeky is offline
jeky
:o)
Аватар для jeky
 
131 / 64 (3) ++++
Регистрация: 22.05.2008
:(
больше всего пугает отсутствие на изменения какой бы то ни было реакции вообще !!!
кэш чистила, инкрементную компиляцию делала, хотя там это и ни к чему особо...
в использовании данных удаляла и отчет и классы
и версию в классах изменяла....
ну, и аксапту переоткрывала, конечно...
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов.
Старый 04.04.2009, 17:41   #10  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Давайте попробуем начать сначала:
Цитата:
не получилось
Что именно не получилось? В чем это "не получилось" выражается?
Запрос абсолютно рабочий (ну если учесть все предыдущие замечания по поводу того, что сам журнал это всего лишь черновик - если не учитывать доработки, возникшие при локализации). То есть запрос должен выбирать только те операции, которые принадлежат нужным журналам. Значит "не получилось" это что-то другое. А вот что?
Старый 04.04.2009, 17:48   #11  
jeky is offline
jeky
:o)
Аватар для jeky
 
131 / 64 (3) ++++
Регистрация: 22.05.2008
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Давайте попробуем начать сначала:

То есть запрос должен выбирать только те операции, которые принадлежат нужным журналам. Значит "не получилось" это что-то другое. А вот что?
на период тестирования совершенно точно известно, что существуют журналы с признаком переработка... наложение фильтра на запрос не привело к вычитанию количеств, принадлежащих этим журналам, из количества прихода отчета по тестируемой номенклатуре.....
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов.
Старый 04.04.2009, 17:53   #12  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Посмотрел сам отчет (мы его не используем по той причине, что определение остатков там выполняется "с начала времен", что при 5 летней базе не есть гуд).
Кажется догадался, что "не получается" это то, что в отчет попадают все номенклатуры. Но так и должно быть - calcAll всего лишь считает для конкретной номенклатуры данные, но номенклатура уже выбрана и в отчет попадает. Вам нужно модифицировать сам query (надеюсь, что на копии, а не на оригинальном отчете). Так же, если по каки-то причинам Query менять нельзя, то можно отсекать лишние записи либо переопределив fetch, либо программно модифицировать QueryRun перед выполнением на конкретный сеанс, ну и не очень красиво - в executeSection не вызывать super, если запись не подходит (тут возможны неприятные побочные эфекты)
Теги
оборотная ведомость, склад, фильтр

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
оборотная-ведомость по складу Blondinka_N DAX: Функционал 1 06.04.2009 18:30
Оборотная ведомость по складу Morpheus DAX: Функционал 15 08.10.2007 17:58
Оборотная ведомость по складу Morpheus DAX: Функционал 5 25.09.2007 17:12
Отчёт Упр. Запасами \ Отчёты \ Статус \ Оборотная ведомость по складу Alks DAX: Прочие вопросы 23 01.07.2005 18:29
Оборотная ведомость по складу twilight DAX: Функционал 8 05.04.2005 12:47
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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