Имя: Пароль:
1C
1С v8
Вывести несколько блоков с колонками отчета на СКД на одну страницу
0 al_zzz
 
18.07.21
16:19
Требуется вывести несколько блоков с колонками отчета на СКД на одну страницу(Розница 2.3, 8.3.18.1433, отчет "Прайс-лист"). Идея следующая: добавляем блок пошагового вывода элементов отчета(это я уже сделал), далее выводим элементы результата в пустой табличный документ(ТД), а в ДокументРезультат   вставляем область из ТД в нужном положении. Т.е. если блок ячеек относится к первой колонке, то выводим его с новой строки, иначе - присоединяем справа.
Пишу такой код:
  
  Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
  ......................................
  
  ТД = Новый ТабличныйДокумент;
    
    ПроцессорВывода.УстановитьДокумент(ТД);
    
    //ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
    ПроцессорВывода.НачатьВывод();
    
    ЭлементРезультата = ПроцессорКомпоновки.Следующий();
    
    ПервыйПроход = Ложь;
    
    Пока ЭлементРезультата<>Неопределено Цикл
        ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
        Если ЭлементРезультата.ЗначенияПараметров.Количество()>0 и Не ПервыйПроход Тогда //Первый раз просто пытаемся скопировать область из ТД в ДокументРезультат  
             ОбластьПриемник = ДокументРезультат.ПолучитьОбласть(1,1,ТД.ШиринаТаблицы,ТД.ВысотаТаблицы);
             ОбластьИсточник = ТД.ПолучитьОбласть(1,1,ТД.ШиринаТаблицы,ТД.ВысотаТаблицы);
             ДокументРезультат.ВставитьОбласть(ОбластьИсточник,ОбластьПриемник);
             ПервыйПроход = Истина;
        КонецЕсли;    
        ЭлементРезультата = ПроцессорКомпоновки.Следующий();
    КонецЦикла;
    
    ПроцессорВывода.ЗакончитьВывод();
   КонецПроцедуры

   При этом получаю ошибку: "Выделение не соответствует вставляемому блоку".
   Вероятно, неправильно понимаю логику копирования области из одного табличного документа в другой. ЧЯДНТ? Поделитесь, пожалуйста, примерами, как с областями работать?
   Может быть, мне вообще стоит пойти по другому пути для решения этой задачи?
1 acanta
 
18.07.21
16:31
В каком именно месте ошибка?
2 al_zzz
 
18.07.21
16:40
ДокументРезультат.ВставитьОбласть(ОбластьИсточник,ОбластьПриемник);
3 acanta
 
18.07.21
16:58
А если область получатель будет (1,1)?
4 al_zzz
 
18.07.21
17:13
(3) 1,1,2,5 там
5 acanta
 
18.07.21
17:20
Вместо выделенного фрагмента указать одну левую верхнюю клетку?
6 al_zzz
 
18.07.21
17:33
Та же ошибка. Может быть, команду "ВставитьОбласть" можно таким образом использовать только в рамках одного документа?
7 acanta
 
18.07.21
17:36
А если оба фрагмента будут 1,1,1,1 или 1,1?
8 al_zzz
 
18.07.21
17:38
Всё, разобрался с этим моментом - надо было не "ПолучитьОбласть", а "Область" писать.