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