Пока ВыборкаКонтр.Следующий() цикл
ОбластьКонтра = Макет.ПолучитьОбласть("СтрокаКонтрагент");
ОбластьКонтра.Параметры.Заполнить(ВыборкаКонтр);
ТабДок.Вывести(ОбластьКонтра, ВыборкаКонтр.Уровень());
ВыборкаДог = ВыборкаКонтр.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДог.Следующий() цикл
ВыборкаДет = ВыборкаДог.Выбрать();
ОбластьДог = Макет.ПолучитьОбласть("СтрокаДоговор");
ОбластьДог.Параметры.Заполнить(ВыборкаДог);
ТабДок.Вывести(ОбластьДог, ВыборкаДог.Уровень());
Пока ВыборкаДет.Следующий() цикл
ОбластьДет = Макет.ПолучитьОбласть("СтрокаДокумент");
ОбластьДет.Параметры.Заполнить(ВыборкаДет);
ТабДок.Вывести(ОбластьДет, ВыборкаДет.Уровень());
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший