Регистры.РасчетыСПокупателями.ВыбратьДвижения(,ТекущийДокумент(),);
Пока Регистры.РасчетыСПокупателями.ПолучитьДвижение()=1 Цикл
ПеремТекДокРРП=Регистры.РасчетыСПокупателями.ТекущийДокумент();
ДокПодч.ВыбратьПодчиненныеДокументы(,,ПеремТекДокРРП);
Пока ДокПодч.ПолучитьДокумент()=1 Цикл
КонецЦикла;
КонецЦикла;
Ммм код, мягко говоря, шизофренический.
1) Нет проверки, что по данному документу выборку подчиненных уже просматривали.
2) Я с ходу не помню, но кажется на метод регистра ВыбратьДвижения() накладываемые фильтры (УстановитьЗначенияФильтра()) не влияют - а значит с ростом базы обход будет все более и более... эм... ****цовый.
3) ну и прямой запрос, соответственно, примерно такой, например:
ТекстЗапроса = "
|SELECT
| IDDoc [Док $Документ],
| IDDocDef Док_вид
|FROM
| $Регистр.РасчетыСПокупателями рег (NoLock)
|WHERE
| Date_Time_IDDOC <= :ПозицияПо
|GROUP BY
| IDDoc, IDDocDef, Date_Time_IDDOC
|ORDER BY
| Date_Time_IDDOC
|";
условия в Where добавляешь по вкусу.
PS у регистра может и не быть поля Date_Time_IDDoc (если не стоит галки "Быстрый отбор движений" и нет еще чего-то - кажется, отбора по движениям). Тогда к регистру делаешь джойн журнала и используешь поля журнала.