Сначала была предпринята попытка построить отчет с использованием чистого СКД, однако параметры СКД получились весьма запутанными, и часто не давали правильного результата, поэтому было принято решение построить отчет по принципу "нормальных героев", которые "всегда идут в обход" (с), а именно: сначала в памяти формируется виртуальный "Заказ клиента", по нему происходит заполнение цен с использованием стандартного внутреннего механизма УТ, и полученные таким образом цены выводится в виде отчета (заказ, естественно, не записывается в базу данных).
Отсюда вытекают сразу два "больших" минуса отчета: небольшая (по сравнению с отчетом на СКД) скорость исполнения (10 000 позиций номенклатуры при развитых скидках формируются 3-7 минут) и недостаточная гибкость настроек (нельзя, например, построить отчет по нескольким контрагентам), хотя второй минус можно невилировать, добавив нужный код.