|
Печатная форма на нескольких страницах | ☑ | ||
---|---|---|---|---|
0
andrew231
21.02.13
✎
15:00
|
Добрый день всем! Столкнулся с такой задачей:
Есть Технологическая карта которую нужно распечатать. Она размещается на 2х и более листах таб документа. Как сделать чтобы на первой странице размещалась одна шапка а на другой и последующих другая шапка.Ну и как вообще это все организовывается?Пример: страница1 Шапка1 СТРОЧКИ: 1 Сборочная операция 2 Цех1 (рабочий центр) 3 Сборка1 (тех переход) 4 Инструмент1 5 Инструмент2 страница 2 Шапка2 строчки: 6 Укомплектовочная операция 7 Цех2 ... итд страница 3 шапка2 ... итд Спасибо большое! |
|||
1
ScreamSaw
21.02.13
✎
16:15
|
Почитай синтаксис-помощник, ТабличныйДокумент.ПовторятьПриПечатиСтроки, похоже на оно.
|
|||
2
ScreamSaw
21.02.13
✎
16:21
|
По-моему, будет как-то так:
ТабличныйДокумент.ПовторятьПриПечатиСтроки = ТабличныйДокумент.Область("ОбластьШапка"); |
|||
3
Byasha
21.02.13
✎
16:28
|
(2) Ему разные шапки нужны.
|
|||
4
andrew231
21.02.13
✎
16:28
|
(3) верно. а можно ли как то определить текущую страницу таб документа?
|
|||
5
andrew231
21.02.13
✎
16:29
|
чтобы поставить условие если текущаястраница таб документа<>1 тогда ...
|
|||
6
andrew231
21.02.13
✎
16:34
|
ну или другие варианты...
|
|||
7
Byasha
21.02.13
✎
16:43
|
Только программно формировать страницы. Используй метод ВывестиГоризонтальныйРазделительСтраниц().
ТабДокумент.Вывести(Шапка1) ТабДокумент.Вывести(Страница1) Пока ... Цикл ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц() ТабДокумент.Вывести(Шапка2) ТабДокумент.Вывести(СтраницаN) КонецЦикла; |
|||
8
andrew231
21.02.13
✎
17:02
|
я немного не понял код! можно подробнее
|
|||
9
Byasha
21.02.13
✎
17:04
|
Так. Вопрос на засыпку. Вы пользователь или программист?
|
|||
10
andrew231
21.02.13
✎
17:23
|
я не понял как он будет работать ведь строки страницы1 тоже выводятся в цикле . и как определить страница1
|
|||
11
andrew231
21.02.13
✎
17:24
|
я программист который учится
|
|||
12
andrew231
21.02.13
✎
17:28
|
Для каждого Строка Из Маршрут Цикл
//Если ТабДокумент.КоличествоСтраниц()>1 Тогда // ТабДокумент.РазмерСтраницы //КонецЕсли; //параметры СекцияОперация.Параметры.Операция=Строка.ТехнологическаяОперация; СекцияРабочийЦентр.Параметры.РабочийЦентр=Строка.РабочийЦентр; //вывод ТабДокумент.Вывести(СекцияОперация); ТабДокумент.Вывести(СекцияРабочийЦентр); Если НЕ ПустаяСтрока(Строка.Оснастка) Тогда СекцияОснастка.Параметры.Оснастка=Строка.Оснастка; ТабДокумент.Вывести(СекцияОснастка); КонецЕсли; СекцияПрофессия.Параметры.Профессия=Строка.Профессия; ТабДокумент.Вывести(СекцияПрофессия); Для каждого СтрокаТехПереходы Из ТехПереходы Цикл Если Строка.ТехПереход=СтрокаТехПереходы.Код Тогда СекцияТехПереход.Параметры.ТехПереход=СтрокаТехПереходы.НаименованиеТехПерехода; ТабДокумент.Вывести(СекцияТехПереход); Для каждого СтрокаИнструменты Из Инструменты Цикл Если СтрокаТехПереходы.Инструменты=СтрокаИнструменты.Код Тогда СекцияИнструмент.Параметры.Инструмент=СтрокаИнструменты.НаименованиеИнструмента; ТабДокумент.Вывести(СекцияИнструмент); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; ТабДокумент.Вывести(СекцияПробел); КонецЦикла; |
|||
13
andrew231
21.02.13
✎
17:30
|
здесь последовательно выводятся данные из трех таблиц. как мне здесь вставить ваш вариант решения?
|
|||
14
Byasha
21.02.13
✎
18:43
|
Хм, Вы хотите что бы за Вас написали код? Я Вам написал примерную логику.
Могу описать словами. 1. Формируем первую страницу на которой выводим первый заголовок и нужную нам информацию. 2. Выводим горизонтальный разделитель страниц. 3. В цикле или нескольких циклах формируем другие страницы, в которых выводим информацию которая должна на них присутствовать. Что бы физически разделить страницы в первой строке цикла вставляем команду, которая системе дает явное указание на то, что нужно начать новую страницу. После этой команды выводим область нужной нам шапки страницы. И области в которых находится построчная информация. Как то так. Разбирать код который Вы перепостили из конфигурации, и пытаться понять куда воткнуть разделитель страниц, мне честно говоря лениво. Какой метод использовать - тоже написано. Вам остается только в тот код который Вы сюда запостили, в НУЖНЫХ местах вставить вывод нужной шапки и разделителя страниц. А вот где эти нужные места - придется думать Вам. |
|||
15
andrew231
21.02.13
✎
19:01
|
(14) "Формируем первую страницу на которой выводим первый заголовок и нужную нам информацию. " - как определить что первая страница сформирована?
|
|||
16
zmaximka
21.02.13
✎
19:15
|
Может проверитьвывод() подойдет?
|
|||
17
Byasha
21.02.13
✎
19:36
|
(15)Хм... Допустим, есть некий набор объектов, с произвольным количеством. Нужно понять влезет ли этот набор на страницу или нет. Можно изгаляться, а можно жестко определить что на одну страницу выводится определенное число строк. В цикле, где выводим области макета (строки с объектами), вставляем приращение счетчика. Когда он достигает некоего граничного значения - выводим разделитель страниц, выводим шапку новой страницы, и обнуляем сам счетчик. Такой же принцип используется и при формировании ТОРГ-12 в типовых конфах. Просто и "в лоб". Если уж очень нужна красивая форма - нужно будет использовать какой-то иной принцип расчета количества информации на листе. Но, я так понимаю, в настоящее время стоит задача просто вывести листы с различными шапками.
(16) ПроверитьВывод(<Таблицы>) Параметры: <Таблицы> (обязательный) Тип: Массив; ТабличныйДокумент. Массив из проверяемых таблиц или табличный документ. Возвращаемое значение: Тип: Булево. Истина - умещаются; Ложь - в противном случае. Описание: Проверяет, умещаются ли переданные табличные документы на страницу при печати. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: При возникновении проблем с получением информации о текущем принтере (например, в системе не установлено ни одного принтера), будет вызвано исключение. Ну и что, получит он инфу о том, что таблица на странице не умещается, и что с ней дальше делать? Ему же нужно все-таки ее распечатать. Да еще и с различными шапками на каждом листе. ЗЫ. А сейчас в школах или вузах информатику не преподают что-ли? Я блок схемы и алгоритмы в 8-ом классе рисовал. |
|||
18
andrew231
25.02.13
✎
11:26
|
(17) Хм... ПроверитьВывод(). А что если перед выводом очередной строки в таблицу проверять, поместится ли эта строка на текущую страницу или ее нужно переносить на следующую. Для этого ж и нужен ПроверитьВывод();
Если поместиться - строка выводится, если нет - выводится строка итогов по странице и вставляется горизонтальный разделитель страниц (признак того, что последующие строки нужно печатать на следующей странице). Буду пробовать!!! |
|||
19
andrew231
25.02.13
✎
11:28
|
(18) а от этого условия уже можно отткалкиваться как угодно
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |