Показать сообщение отдельно
Старый 06.10.2010, 15:34   #12  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
в статье так и говорилось
http://axapta.mazzy.ru/lib/inventsumdate/
Цитата:
Такой подход работает быстро и хорошо, если часто запрашиваются последние остатки – остатки на прошлую неделю, остатки на прошлый месяц, остатки на прошлый год. Такой подход работает плохо, если вы часто запрашиваете очень давние остатки.
поэтому вполне возможно, что анализ старых периодов лучше вести от начала времен.
===============

Цитата:
Сообщение от pitersky Посмотреть сообщение
А вот если разница менее порядка (т.е. по каждому разрезу было лишь несколько движений) - то оказывается выгоднее именно считать сумму количества в проводках с начала времён. Как я понимаю, это результат специфики работы SQL, который занимается черновой работой по схлопыванию записей - когда складских проводок по разрезу мало, то перебор свёрнутых по аналитике InventTrans идёт быстрее, чем перебор InventSum с расчётом остатка по каждому из них.
Да, и это условие тоже есть.

Но соотношение между таблицами - это не все.
Дело в том, что InventSum содержит как закрытые, так и открытые записи.

закрытая запись - это запись по какой-то комбинации аналитик, с полностью нулевыми количествами-суммами. (см. метод InventSum.isAllFieldsZero(), а также поле InventSum.Closed и перекрестные ссылки по нему, где это поле записывается)

Нажмите на изображение для увеличения
Название: 1.PNG
Просмотров: 501
Размер:	79.7 Кб
ID:	6229

поле Closed используется в индексах

Название: 2.PNG
Просмотров: 2389

Размер: 31.6 Кб

предполагается, что:
= при большом количестве комбинаций складских аналитик (серийные номера, партии, ячейки) большинство записей в InventSum будет закрыто
= следовательно в выборку попадет относительно небольшое число активных (ненулевых) записей.

Поэтому: надо анализировать не общий объем таблицы InventSum, а число открытых записей в InventSum.

ЕСЛИ же у вас комбинаций аналитик так много И большинство записей в InventSum незакрыты, то у вас где-то нарушена логика работы Аксапты.

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