Редактирование макетов

Версия для печатиPDF-версия

Добрый день. Есть документ. В табличной части документа 30 строк. В печатной форме надо отразить первые 15 строк слева, а остальные 15 справа от них. То есть не сверху вниз 30 строк, а слева 15 и справа 15. Есть подсказки?

Попробуйте так:

  1. Создайте новый табличный документ (ТабДок1).
  2. Выведите в него первые 15 строк.
  3. Создайте новый табличный документ (ТабДок2).
  4. Выведите в него вторые 15 строк.
  5. Методом Присоединить() присоедините ТабДок2 к ТабДок1 (ТабДок1.Присоединить(ТабДок2);).
  6. Выведите ТабДок1 в основной табличный документ.

Дело в том,что это печатная форма акта о выполненных работ. Количество строк может быть по разному. я к примеру написал, что 30. 

ОбластьСтрУслугиЛев = Макет.ПолучитьОбласть("СтрУслуги|ЛевУслуги");
ОбластьСтрУслугиПрав = Макет.ПолучитьОбласть("СтрУслуги|ПравУслуги");
 
Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
Запрос.Текст = "ВЫБРАТЬ
| СчетНаОплатуПокупателюУслуги.Сумма КАК Сумма
|ИЗ
| Документ.СчетНаОплатуПокупателю.Услуги КАК СчетНаОплатуПокупателюУслуги
|ГДЕ
| СчетНаОплатуПокупателюУслуги.Ссылка = &ТекущийДокумент";
 
ВыборкаУслуг = Запрос.Выполнить();
 
ТЗ = ВыборкаУслуг.Выгрузить();
 
//Индексы = Тз.Количество()-1;
//Ном = 0;
//ИтогоУслуг = 0;
Для каждого Стр из Тз Цикл
   //Ном = Ном + 1;
  //ОбластьСтрУслугиЛев.Параметры.Ном   = Ном;
  //ОбластьСтрУслугиЛев.Параметры.Сумма = Стр.Сумма;
  //ИтогоУслуг = ИтогоУслуг + Стр.Сумма; 
  //ТабДокумент.Вывести(ОбластьСтрУслугиЛев);
КонецЦикла;
 
Как описать цикл?
 

Неважно какое количество строк в документе. Вы же можете получить количество строк в Выборке и поделить его пополам. Первую половину вывести в ТабДок1, вторую в ТабДок2.

Если хотите сразу построчно выводить, то как-то так:

ТЗ = ВыборкаУслуг.Выгрузить();
КоличествоСтрок = Окр(ТЗ.Количество() / 2);
Для Сч = 0 По КоличествоСтрок - 1 Цикл
	ОбластьСтрУслугиЛев.Параметры.Заполнить(ТЗ[Сч]);
	ОбластьСтрУслугиПрав.Параметры.Заполнить(ТЗ[Сч + КоличествоСтрок]);
	ТабДокумент.Вывести(ОбластьСтрУслугиЛев);
	ТабДокумент.Присоединить(ОбластьСтрУслугиПрав);
КонецЦикла;

Только проверку на существование второй строки добавьте, а то вдруг нечётное количество строк в таблице окажется.

Выдает ошибку {Документ.СчетНаОплатуПокупателю.МодульОбъекта(468)}: Индекс находится за границами массива

ОбластьСтрУслугиПрав.Параметры.Заполнить(ТЗ[Сч + КоличествоСтрок]);
 
Количество строк в табличной части 30

Посмотрите отладчиком на какой строке спотыкается.

я закомментировал //ОбластьСтрУслугиПрав.Параметры.Заполнить(ТЗ[Сч + КоличествоСтрок]); и вывел на печать. всего строк 30, а в печатной форме с левой стороны строк 17 почему то. Видимо 16 и 17 находятся вне границы. я не понял, почему 17? незаполненных строк в таб части нет. 

на 16 строке

Для Сч = 0 По КоличествоСтрок  Цикл

изменил на   Для Сч = 0 По КоличествоСтрок -1  Цикл

выводит нормально. Откуда появляются лишние строки?

 

А КоличествоСтрок чему равно? Должно быть 15.

ПС. У меня так и было написано "Для Сч = 0 По КоличествоСтрок - 1 Цикл".

Большое спасибо за помощь.