|
13.10.2016, 22:00 | #1 |
Участник
|
Цитата:
Цитата:
Сообщение от sukhanchik
InventTrans
В свое время (АХ 4.0) у меня была задача поиска "закольцованных" движений. Соответственно, чтобы понять "кольцо" - нужно для каждой записи (каждого типа движения) применить свой алгоритм обработки. На выходе может получиться неопределенно много записей и тривиальный фильтр не подходит, соответственно ссылку на RecId найденных записей было удобно записывать в RecordReference_RU, а затем открывать стандартную форму InventTrans, отфильтрованную по отобранным движениям. или ты лот возврата имеешь в виду. а как у него кольцо может образоваться? Цитата:
в результате получить отдельно дебетовые и кредитовые обороты в одном запросе по одной таблице становится проблематично. хотя если можно использовать больше одного датасорса по одной таблице... ))) Цитата:
Сообщение от S.Kuskov
Более общая формулировка задачи:
Как (с минимальными накладными затратами) результат (выход) одного алгоритма подать на вход следующего, так что бы алгоритмы не зависили от тонкостей реализации друг друга. Общего рецепта по-видимому нет. Когда-то будут более выгодны временные таблицы, когда-то квазивременные Один класс инкапсюлирует одно, другой класс - другое. они могут использовать друг-друга. тут вопрос оптимальности и нагрузки на базу. очень многие люди считают, что один монстр-запрос будет работать оптимальнее. поэтому не разбивают на классы. но надо оптимизировать не запрос. а систему в целом. которая работает в многопользовательском режиме. если рассматривать систему в целом, то монстр-запросы как правило очень плохо влияют на среднюю отзывчивость сервера и среднюю производительность. в среднем лучше на SQL подавать несложные и однотипные запросы. даже если при этом получаются не самые минимальные resultSet'ы. |
|
13.10.2016, 22:38 | #2 |
Administrator
|
Цитата:
Как и многие другие проблемы, эта решается с помощью создания промежуточных View. Во view можно сделать сколько угодно полей, которые будут разными агрегатными функциями на основе одного поля физической таблиц (см. View CustPackingSlipMinMaxDates; к сожалению, только в AX2012, но в AX2009 это тоже работает). Правда, собрать дебет отдельно от кредита это не поможет. Тут как раз агрегатная функция одна, но фильтры разные. Но и эту задачу можно решить путём создания промежуточных View. В AX2012 во view можно добавлять computed columns, так что можно сделать View на основе базовой таблицы и добавить в него поля AmountDebit и AmountCredit, а потом суммировать их сколько угодно. В AX2009 computed columns нет, но задача, в принципе, тоже решаема, только придётся повозиться, чтобы правильно сделать cross join между двумя датасорсами, в одном из которых будут собраны дебетовые проводки, а в другом - кредитовые.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
13.10.2016, 22:53 | #3 |
Участник
|
Цитата:
другими словами, нужен класс, который бы отвечал за бизнес-сущность )))) |
|
13.10.2016, 23:13 | #4 |
Administrator
|
Цитата:
Комбинироваться эти view могут с помощью других view, и таких примеров уже очень много в стандартном приложении. Посмотри, например, на View InventValueTransView, который собирается (через View InventValueTransUnionAll) из нескольких других View, которые в основе своей имеют InventTrans и InventSettlement, отфильтрованные по разным наборам критериев. Скажу так: за бизнес-сущность вовсе не обязан отвечать класс. Это может быть и View, и Query. Ну или правильнее будет сказать, что класс, отвечающий за бизнес-сущность - это совсем не обязательно класс в смысле объекта AOT типа "класс". P.S.: Я, наверное, дальше в этой ветке буду только на прикладные вопросы отвечать. Абстрактные идеологические рассуждения, конечно, тоже иногда интересны, но, пожалуй, не сегодня
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
За это сообщение автора поблагодарили: mazzy (2), Weez (1). |
14.10.2016, 07:26 | #5 |
Участник
|
Цитата:
практический пример Добавление даты из партии в форму в наличие |
|
14.10.2016, 10:33 | #6 |
Участник
|
Цитата:
Сообщение от S.Kuskov
Хотите таких примеров? Их есть у меня Сортировка Query
практический пример Добавление даты из партии в форму в наличие noFetch в Query(Run) |
|
13.10.2016, 23:10 | #7 |
Administrator
|
Цитата:
Речь идет о переносе товара между складами, когда товар со склада А переносится на склад Б, с Б на В, с В на Г и т.д. А потом где-то с Ж снова на А или на Б. А теперь представим себе, что у нас помимо склада еще есть что-нибудь типа номера ГТД и/или партии и ... далее по списку аналитик. В 4.0 была масса косяков в проставлении складских аналитик у заказов на перемещений. В результате могло получиться так, что товар списывался по одним аналитикам, а зачислялся по другим. Само собой АХ дальше-то работала верно, но закрытие склада вешалось из-за того, что переносы, перемещения, спецификации, закупки и продажи сопоставлялись ээээ ну в общем не так, как это ожидалось пользователями.
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 13.10.2016 в 23:13. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
Теги |
distinct, recordrefrencelist_ru, recordsortedlist, view |
|
|