Показать сообщение отдельно
Старый 19.05.2017, 11:37   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
мне кажется, что обсуждение вопроса можно и должно разложить на случаи:
1. сделать быстро
2. сделать хорошо
2.1. сделать хорошо select
2.2. сделать хорошо query

для начала хотелось бы убедиться что способ "сделать быстро" не подходит по тем или иным причинам.

итак, "сделать быстро":
есть группа методов InventSum.addInventSumDelta

эти методы работают следующим образом:
  • стандартный алгоритм где-то и как-то получает inventSum обычным образом
  • программист добавляет/вызывает код, который рассчитывает/находит inventSumDelta для данного inventSum (методы InventSumDelta.findSumDelta, newQuery, summarizeDelta* и т.п.)
  • программист вызывает код, который добавляет найденную дельту к найденной сумме - InventSum.addInventSumDelta
  • Profit

да, это далеко не оптимальный с точки зрения производительности способ.
но легко программируется и легко читается при поддержке.

мне кажется, что этот способ стоит использовать даже в случае 2.1.

для 2.2. лучше использовать стандартные методы NewQuery, queryAddSumFields и подобные. главное, не вклиниваться в исходный код, а сделать... хм... extension.
__________________
полезное на axForum, github, vk, coub.