0
IgorTrifonov
24.03.14
✎
10:29
|
Всем здрасьте. Есть задание с экономить бумагу.
То есть узенькую печать, печатать в две колонки. Как в газетах.
Сначала первая колонка заполняется, затем вторая.
И только, только, только, потом на печать.
Алгоритмик простенький:
Сначала я заполняю таблицу значений (читая запрос), а затем просто распечатываю эту самую таблицу значений.
Таблица значений (тз) заполняется разными строками из запроса (в отладчике это хорошо видно)
И записей в запросе примерно 200
А вот когда распечатываю тз, то печатается 200 раз только одна запись.
Пожалуйста направьте мозги в нужное русло.
// в цикле заполним тз, а потом выведем тз на печать
Запрос1 = Результат.Выбрать(ОбходРезультатаЗапроса.Прямой);
Пока Запрос1.Следующий() Цикл
Область = ?(ЧастьЛиста = Левая, ОбластьСтрока, ОбластьСтрока2);
Область.Параметры.Заполнить(Запрос1);
ПроверкаЗаполненияЛиста.Добавить(Область);
Если Не ТабДок.ПроверитьВывод(ПроверкаЗаполненияЛиста) Тогда
ПроверкаЗаполненияЛиста.Очистить();
ПроверкаЗаполненияЛиста.Добавить(Область);
КолВоСтрок = ?(КолВоСтрок = 0, пп, пп - КолВоСтрок);
ЧастьЛиста = ?(ЧастьЛиста = Левая, Правая, Левая);
КонецЕсли;
Если ЧастьЛиста = Левая Тогда
нс = тз.Добавить();
нс.Левая = Область; // нс[ЧастьЛиста] = Область;
Иначе
тз[пп - КолВоСтрок].Правая= Область;
КонецЕсли;
пп = пп + 1;
КонецЦикла;
Для Сч = 0 по тз.Количество() - 1 Цикл
ТабДок.Вывести(тз[Сч].Левая); ТабДок.Присоединить(тз[Сч].Правая);
КонецЦикла;
|
|
4
azt-yur
24.03.14
✎
11:02
|
У вас одна и та же область перезаполняется каждый раз.
Сделайте получение новой области при каждом проходе.
Замените
Область = ?(ЧастьЛиста = Левая, ОбластьСтрока, ОбластьСтрока2);
На
Область = ?(ЧастьЛиста = Левая, Макет.ПолучитьОбласть("Строка"), Макет.ПолучитьОбласть("Строка2");
|
|