0
Target1025
22.09.20
✎
15:03
|
Несколько часов потратил на то, чтобы разобраться как откорректировать сформированный ПроцессоромВывода табличный документ изза ошибки "Выделение не соответствует вставляемому блоку".
Решение выглядит так:
Предположим у нас есть сфомированный ТабДок из Макета1, куда мы собираемся подрядить первую строку из Макета2, сдвинув вторую строку ТабДок вниз:
Объектик= РеквизитФормыВЗначение("Объект");
ТабДок = Новый ТабличныйДокумент;
Макет1 = Объектик.ПолучитьМакет("Макет1");
// тут, типа, отрабатывает ПроцессорВывода
ТабДок.Вывести(Макет1);
Макет2 = Объектик.ПолучитьМакет("Макет2");
Макет2Область = Макет2.ПолучитьОбласть(1,,1,);
// вот эта необходимость поставить еще раз вызов Макет2.Область() была совершенно неочевидна для меня
ТАбДок.ВставитьОбласть(Макет2.Область(),ТабДок.Область(2,,2,),ТипСмещенияТабличногоДокумента.ПоВертикали);
Если потребуется заполнение параметров, то выводим примерно так:
Макет2Область = Макет2.ПолучитьОбласть(1,,1,);
Макет2Область.Параметры.АБВГД = "98765"; // ставим параметр
ТАбДок.ВставитьОбласть(МАкет2Область.Область(),ТабДок.Область(2,,2,),ТипСмещенияТабличногоДокумента.ПоВертикали, Истина); // истина расстановит параметры
|
|
2
Target1025
22.09.20
✎
17:21
|
(1) В этом и тонкость и сложность, что удаление этого вызова без параметров Макет2Область.Область() и передача параметра просто как Макет2Область вызывает ошибку времени исполнения "Выделение не соответствует вставляемому блоку".
Почему? А потому, что Макет2Область = Макет2.ПолучитьОбласть(1,,1,) имеет тип значения НЕ ОбластьЯчеекТабличногоДокумента, а сам "ТабличныйДокумент". И вот вызовом метода .Область() мы конвертируем сам ТабличныйДокумент Макет2Область в тип значения ОбластьЯчеекТабличногоДокумента, которую согласен "сожрать" метод ТабДок.ВставитьОбласть(..)
|
|