Имя: Пароль:
1C
1С v8
Помогите с печатью - найти конец страницы
0 oleg_prg
 
14.12.12
11:23
Уважаемые форумчане, помогите пожалуйста.
Необходимо при печати найти конец страницы и вывести нужную область
делаю так

Процедура ПечатьТЧДокумента(Макет, ТабДокумент, ТЗ, ЭтоПрил, Шапка = 0)
   
   МассивВыводимыхОбластей = Новый Массив; // создадим массив для проверки вывода  
   Если ЭтоПрил = 1 Тогда
               //Если это приложение то к областям добавим его шапку
       МассивВыводимыхОбластей.Добавить(Шапка);
   КонецЕсли;
   
   НПП = 0;
   Для А = 0 По ТЗ.Количество()-1 Цикл
       
       НПП = НПП + 1;
       ОбластьМакета = Макет.ПолучитьОбласть("Строка");
       ОбластьМакета.Параметры.ТоварНаименование    = СокрЛП(НПП)+" "+СокрЛП(ТЗ[А].Номенклатура.Наименование)+" "+ТЗ[А].Характеристика;
       ОбластьМакета.Параметры.ЕдиницаИзмерения    = СокрЛП(ТЗ[А].ЕдИзм);
       ОбластьМакета.Параметры.Количество            = ТЗ[А].Количество;
       ОбластьМакета.Параметры.Цена                = ТЗ[А].Цена;
       ОбластьМакета.Параметры.Сумма                = ТЗ[А].Сумма;
       ОбластьМакета.Параметры.СтавкаНДС            = ТЗ[А].СтавкаНДС;
       ОбластьМакета.Параметры.СуммаНДС            = Формат(ТЗ[А].СуммаНДС,"ЧН=---");
       ОбластьМакета.Параметры.Всего                = ТЗ[А].Всего;
       ОбластьМакета.Параметры.Примечание            = ТЗ[А].Примечание;
       Попытка
           ОбластьМакета.Параметры.КолГМ                = ТЗ[А].Количество;
       Исключение
       КонецПопытки;
       ТабДокумент.Вывести(ОбластьМакета);
       
       МассивВыводимыхОбластей.Добавить(ОбластьМакета); //Добавим строку к областым
       
       Если Не ТабДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда
           ТабДокумент.Вывести(Макет.ПолучитьОбласть("Тест")); //Если конец страницы - значит выводим тестовую запись
       КонецЕсли;
       
   КонецЦикла;
КонецПроцедуры

Но! Ошибка в том, что выводится конец страницы не там где надо
1 Галахад
 
гуру
14.12.12
11:27
А где надо?
2 oleg_prg
 
14.12.12
11:29
Вот скрин http://files.mail.ru/PM82Q7 как получается
3 kosts
 
14.12.12
11:29
(0) Уже выведенные области не нужно запихивать в массив
МассивВыводимыхОбластей.Добавить(ОбластьМакета);
4 kosts
 
14.12.12
11:34
Попытка
   ОбластьМакета.Параметры.КолГМ                = ТЗ[А].Количество;
Исключение
КонецПопытки;
//        ТабДокумент.Вывести(ОбластьМакета);
       
//        МассивВыводимыхОбластей.Добавить(ОбластьМакета); //Добавим строку к областым
       
Если Не ТабДокумент.ПроверитьВывод(     ОбластьМакета     ) Тогда
   ТабДокумент.Вывести(ОбластьМакета);
Иначе
   ТабДокумент.Вывести(Макет.ПолучитьОбласть("Тест")); //Если конец страницы - значит выводим тестовую запись
   ТабДокумент.Вывести горизонтальный разделитель();
КонецЕсли;
5 kosts
 
14.12.12
11:38
(4) Поторопился чуть

Если Не ТабДокумент.ПроверитьВывод(     ОбластьМакета     ) Тогда
   ТабДокумент.Вывести(Макет.ПолучитьОбласть("Тест")); //Если конец страницы - значит выводим тестовую запись

   ТабДокумент.Вывести горизонтальный разделитель();
КонецЕсли;

ТабДокумент.Вывести(ОбластьМакета);
6 oleg_prg
 
14.12.12
11:52
(6) Спасибо за советы, с массивом я понимал что надо очистить, но главная проблема в том, что я получаю не верную позицию переноса страницы

http://files.mail.ru/PC2Z6S  вот скрин
7 oleg_prg
 
14.12.12
11:54
и то что на странице 2, то же самое (имею в виду ранний перенос) и на всех последующих страницах
8 sTOd
 
14.12.12
12:02
Установи чётко параметры страницы, т.е. поля, колонтитулы, маштаб, тогда и заработает.
9 oleg_prg
 
14.12.12
12:06
УРРРААА! Спасибо огромное Kosts и sTOd, все заработало!