Имя: Пароль:
1C
1С v8
Вывод табличного документа
0 новичок12345
 
24.07.12
07:51
Уважаемые специалисты, прошу помощи, что -то запутался с циклами и вложенностью их друг в друга.
Ситуация такая: нужно вывести на печать табличный документ. При чем, если количество товаров превышает 4, то вывести эти 4 товара на одной странице, потом подвал, а оставшиеся товары вывести на новой странице.
И что-то я не могу понять как это сделать. Решил сделать новым макетом. То есть пока количество меньше 5 выводим один макет, а потом другой. В первом макете есть и строка для товаров и подвал, а в новом макете только строка для товаров. Код такой:

n = 0;
   
       Для каждого СтрокаТаблицыЗначений Из ЗапросЭлементы Цикл
           n = n + 1;
           Если n<3 Тогда
           
           ОбластьМакета = Макет.ПолучитьОбласть("Элементы");
           
           ОбластьМакета.Параметры.Заполнить(СтрокаТаблицыЗначений);
           Попытка
               
               Д = СокрЛП(Строка(Формат(СтрокаТаблицыЗначений.ДатаВыработки,"ДФ=dd.MM.yy")));
               КолДнейДобавить = 10*24*60*60;
               Д10 = СокрЛП(Строка(Формат(СтрокаТаблицыЗначений.ДатаВыработки + КолДнейДобавить,"ДФ=dd.MM.yy")));
               ОбластьМакета.Параметры.ДатаВыработки = Д + "-" + Д10;
               
           Исключение
               
           КонецПопытки;
           
           ОбластьМакета.Параметры.НаименованиеПродукции = СокрЛП(СтрокаТаблицыЗначений.Номенклатура);
           ОбластьМакета.Параметры.ПроизводительПродукции = СокрЛП(СтрокаТаблицыЗначений.Организация.Наименование);
           ОбластьМакета.Параметры.Вес = СокрЛП(СтрокаТаблицыЗначений.Вес);
           
           ТабДокумент.Вывести(ОбластьМакета);
       Иначе
               Макет1 = ПолучитьМакет("Макет1");
           ОбластьМакета1 = Макет1.ПолучитьОбласть("Элементы1");
           
           ОбластьМакета1.Параметры.Заполнить(СтрокаТаблицыЗначений);
           Попытка
               
               Д = СокрЛП(Строка(Формат(СтрокаТаблицыЗначений.ДатаВыработки,"ДФ=dd.MM.yy")));
               КолДнейДобавить = 10*24*60*60;
               Д10 = СокрЛП(Строка(Формат(СтрокаТаблицыЗначений.ДатаВыработки + КолДнейДобавить,"ДФ=dd.MM.yy")));
               ОбластьМакета1.Параметры.ДатаВыработки1 = Д + "-" + Д10;
               
           Исключение
               
           КонецПопытки;
           
           ОбластьМакета1.Параметры.НаименованиеПродукции1 = СокрЛП(СтрокаТаблицыЗначений.Номенклатура);
           ОбластьМакета1.Параметры.ПроизводительПродукции1 = СокрЛП(СтрокаТаблицыЗначений.Организация.Наименование);
           ОбластьМакета1.Параметры.Вес1 = СокрЛП(СтрокаТаблицыЗначений.Вес);
           
           ТабДокумент.Вывести(ОбластьМакета1);
       КонецЕсли ;
   
       КонецЦикла;
       
                       
       ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
       ОбластьМакета.Параметры.ПунктОтправления = Подвал.Организация.НаименованиеПолное;
       ОбластьМакета.Параметры.НаименованиеПолучателя = Подвал.Контрагент.НаименованиеПолное;
       ОбластьМакета.Параметры.НомерВетДокумента = СокрЛП(Строка(Подвал.ВетДок) + " " + Строка(Подвал.ВетДок1));
       ОбластьМакета.Параметры.ДолжностьВетСпециалиста = Подвал.Должность;
       ОбластьМакета.Параметры.ФИОСпециалиста = Подвал.ФИОВрач;
       ТабДокумент.Вывести(ОбластьМакета);
       ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();        
       
Вообщем, не могу понять где сделать разрыв, и не могу понять как выстроить правильно цикл, чтобы все шло в том порядке, в котором мне нужно. Заранее спасибо
1 Wobland
 
24.07.12
08:02
не читал. ПовторятьПриПечатиСтроки изучал?
2 новичок12345
 
24.07.12
08:11
(1) нет. Это в табличной части устанавливается в свойствах? а как сделать что-бы этот диапазон выводился с определенного элемента? и как это можно в коде задать. Все равно не очень понимаю куда это нужно вставить..
3 Мимохожий Однако
 
24.07.12
08:36
Посмотри типовую ТОРГ12. Там есть пример.
4 новичок12345
 
24.07.12
09:33
(3) Сейчас в ней посмотрю
5 новичок12345
 
25.07.12
15:18
(1)(3) Спасибо всем большое. Похоже ПовторятьПриПечатиСтроки мне не подходит. По-крайней мере я не понял как бы это было возможно сделать. Посмотрел В ТОРГ-12 там просто идет проверка на вмещение данных в страницу, но это навело меня на мысль, с помощью которой я и решил поставленную задачу! Использовал копию таблицы значений.
Еще раз все огромное спасибо за помощь!
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн