Теория: когда позиция получает или теряет признак забраковки, в спец.таблицу заносится запись о данном событии.
Таким образом на основании этих данных можно судить о временных периодах, когда позиция была забракована.
При построении отчета анализируется история забраковки по всем позициям, не распроданным на начало отчетного периода. На основании истории по каждой позиции собирается информация о:
временных периодах забраковки
строках истории забраковки (дата-время, данные письма, признак забраковки, остаток на момент операции)
строках истории операций, попадающих в периоды забраковки позиции.
текущем остатке данной позиции
текущем значении забраковки
Далее по каждой позиции определяем строки для результирующего отчета:
строка из истории забраковки попадает в отчет, если её дата в отчетном периоде.
строка из истории операций попадает в отчет, если её дата в отчетном периоде (сама строка как определено ранее - в периоде забраковки)
если на этапах 1-2 небыло ни одной строки в отчет, позиция сейчас в забраковке и имеет остаток больше нуля, то добавляем в отчет последнюю запись из истории забраковки но с кол-вом равным текущему остатку.
п.3. регламентируется параметром «Добавлять данные по текущим забраковкам, которые не вошли в отчет» в настройках отчёта