|
04.04.2009, 14:56 | #1 |
:o)
|
оборотная ведомость по складу необходимо добавить ещё один фильтр
Доброго!
у наших журналов есть дополнительный признак (наша доработка) да/нет в отчет должны попадать журналы с со значение признака Нет просмотрела код отчета (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 //мои изменения <-- помогите, пожалуйста, в пн. с утра сдавать очет....
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов. Последний раз редактировалось jeky; 04.04.2009 в 16:12. |
|
04.04.2009, 16:04 | #2 |
:o)
|
так же попыталась навесить цепочку из датасорсов в query отчета в AOD c ранджем на нужном поле - Нет
тоже ни к чему не привело...
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов. |
|
04.04.2009, 16:19 | #3 |
:o)
|
если все же кто-то мимоходом заглянет...
after - мои изменения - к сожалению превысил лимит в 300кб before - до моих изменений
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов. Последний раз редактировалось jeky; 04.04.2009 в 17:00. |
|
04.04.2009, 16:55 | #4 |
Moderator
|
У меня нет ваших данных, чтобы сказать однозначно, но я бы стал думать в направлении добавлении вашей галки в InventTrans и заполнении ее в момент разноски журнала.
Как правило, оборотка и так не самый быстрый отчет, а join 2-х дополнительных таблиц отрицательно скажется на ее быстродействии. Кроме того, я бы имел в виду, что разнесенные журналы могут быть удалены. Если не сразу, то через пару лет в момент "обрезания" базы данных. А в этом случае ваш отчет будет работать не корректно. |
|
04.04.2009, 19:28 | #5 |
:o)
|
Цитата:
Сообщение от Андре
У меня нет ваших данных, чтобы сказать однозначно, но я бы стал думать в направлении добавлении вашей галки в InventTrans и заполнении ее в момент разноски журнала.
Как правило, оборотка и так не самый быстрый отчет, а join 2-х дополнительных таблиц отрицательно скажется на ее быстродействии. Кроме того, я бы имел в виду, что разнесенные журналы могут быть удалены. Если не сразу, то через пару лет в момент "обрезания" базы данных. А в этом случае ваш отчет будет работать не корректно. у нас на работе просто пожар..
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов. |
|
06.04.2009, 12:06 | #6 |
:o)
|
вобщем поступила совершенно бесцеремонно и некрасиво ..
вытащила из searchInventTrans id проводки.. по ней делаю дополнительный селект из проводок с уже проверкой сторно это или нет, если да, то в пеменную isStorno запоминаю а дальше закрыла под неё вычисление оборотов, а остатки на конец и начало вычисляются по-прежнему... самое быстрое, что смогла на сегодня утро придумать... а дальше будем посмотреть ...
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов. Последний раз редактировалось jeky; 06.04.2009 в 12:20. |
|
04.04.2009, 16:54 | #7 |
Administrator
|
Против непосредственно наложения фильтра ничего не имею, но... почему Вы решили что все складские операции (searchInventTrans) порождены из складских журналов (InventJournalTrans)? Да и разнесенный складской журнал - в общем-то никто не мешает удалить (если это не запрещали в рамках доработки).
Тут более правильно будет не джойниться с InventTrans, а уже внутри цикла каждый раз делать find к InventJournalTrans. Это конечно будет медленнее. Ну либо - not exists join к InventJournalTrans, где поле UNS_IsPererabotka == NoYes::Yes. Но этот запрос тоже надо замерять по времени
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: aidsua (1). |
04.04.2009, 17:09 | #8 |
:o)
|
Цитата:
Цитата:
Цитата:
Сообщение от sukhanchik
Тут более правильно будет не джойниться с InventTrans, а уже внутри цикла каждый раз делать find к InventJournalTrans. Это конечно будет медленнее. Ну либо - not exists join к InventJournalTrans, где поле UNS_IsPererabotka == NoYes::Yes. Но этот запрос тоже надо замерять по времени
за идею спасибо! буду думать как же это применить
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов. |
|
04.04.2009, 17:12 | #9 |
:o)
|
больше всего пугает отсутствие на изменения какой бы то ни было реакции вообще !!!
кэш чистила, инкрементную компиляцию делала, хотя там это и ни к чему особо... в использовании данных удаляла и отчет и классы и версию в классах изменяла.... ну, и аксапту переоткрывала, конечно...
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов. |
|
04.04.2009, 17:41 | #10 |
Участник
|
Давайте попробуем начать сначала:
Цитата:
не получилось
Запрос абсолютно рабочий (ну если учесть все предыдущие замечания по поводу того, что сам журнал это всего лишь черновик - если не учитывать доработки, возникшие при локализации). То есть запрос должен выбирать только те операции, которые принадлежат нужным журналам. Значит "не получилось" это что-то другое. А вот что? |
|
04.04.2009, 17:48 | #11 |
:o)
|
на период тестирования совершенно точно известно, что существуют журналы с признаком переработка... наложение фильтра на запрос не привело к вычитанию количеств, принадлежащих этим журналам, из количества прихода отчета по тестируемой номенклатуре.....
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов. |
|
04.04.2009, 17:53 | #12 |
Участник
|
Посмотрел сам отчет (мы его не используем по той причине, что определение остатков там выполняется "с начала времен", что при 5 летней базе не есть гуд).
Кажется догадался, что "не получается" это то, что в отчет попадают все номенклатуры. Но так и должно быть - calcAll всего лишь считает для конкретной номенклатуры данные, но номенклатура уже выбрана и в отчет попадает. Вам нужно модифицировать сам query (надеюсь, что на копии, а не на оригинальном отчете). Так же, если по каки-то причинам Query менять нельзя, то можно отсекать лишние записи либо переопределив fetch, либо программно модифицировать QueryRun перед выполнением на конкретный сеанс, ну и не очень красиво - в executeSection не вызывать super, если запись не подходит (тут возможны неприятные побочные эфекты) |
|