Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Вывести несколько блоков с колонками отчета на СКД на одну страницу

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

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

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.