|
Вывод шапки на каждой странице | ☑ | ||
---|---|---|---|---|
0
zarel
05.10.12
✎
16:13
|
Нужно печатать шапку на каждой странице, а печатается только на первых двух, не могу понять в чем дело, сам еще пока зеленый в конфигурировании.
Вот код для печати макета: Функция ПечатьТ5а(ИмяМакета) ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ПолеСлева = 0; ТабДокумент.ПолеСправа = 0; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КадровоеПеремещениеОрганизации_Т5а"; ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; // получаем данные для печати ВыборкаДляШапки = СформироватьЗапросДляПечати("ПоРеквизитамДокумента").Выбрать(); ВыборкаРаботники = СформироватьЗапросДляПечати("ПоТабличнойЧастиДокумента").Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); // подсчитываем количество страниц документа - для корректного разбиения на страницы ВсегоСтрокДокумента = ВыборкаРаботники.Количество(); // запоминаем области макета Макет = ПолучитьМакет(ИмяМакета); ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка"); // Шапка документа. ПовторятьПриПечатиСтроки = Макет.ПолучитьОбласть("ПовторятьПриПечати"); // повторяющаяся шапка страницы ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");// Подвал документа ОбластьМакета = Макет.ПолучитьОбласть("СтрокаРаботник"); // строка работника // массив с двумя строками - для разбиения на страницы ВыводимыеОбласти = Новый Массив(); ВыводимыеОбласти.Добавить(ОбластьМакета); // выводим данные о руководителях организации Если ВыборкаДляШапки.Следующий() Тогда ОбластьМакетаШапка.Параметры.Заполнить(ВыборкаДляШапки); // Шапка документа. ОбластьМакетаШапка.Параметры.НазваниеОрганизации = СокрЛП(ОбластьМакетаШапка.Параметры.НазваниеОрганизации); ОбластьМакетаПодвал.Параметры.Заполнить(ВыборкаДляШапки);// Для подвала. КонецЕсли; // Начинаем формировать выходной документ ТабДокумент.Вывести(ОбластьМакетаШапка); // Шапка документа. ВыведеноСтрок = 0; // выводим строки по работникам Пока ВыборкаРаботники.Следующий() Цикл ВложеннаяВыборка = ВыборкаРаботники.Выбрать(); ВложеннаяВыборка.Следующий(); // Данные по работнику. ОбластьМакета.Параметры.Заполнить(ВложеннаяВыборка); РезультатСклонения = ""; Если УниверсальныеМеханизмы.Просклонять(глЗначениеПеременной("глКомпонентаСклоненияФИО"), ВложеннаяВыборка.Работник, 4,ВложеннаяВыборка.ФизЛицоПол, РезультатСклонения) Тогда ОбластьМакета.Параметры.Работник = РезультатСклонения КонецЕсли; Если ЗначениеЗаполнено(ВложеннаяВыборка.ОкладТарифнаяСтавка) Тогда Если ЗначениеЗаполнено(ВложеннаяВыборка.ВалютаТарифнойСтавки) Тогда СтрокаВалюты = "" + ВложеннаяВыборка.ВалютаТарифнойСтавки; ОбластьМакета.Параметры.ОкладТарифнаяСтавка = "" + Формат(ВложеннаяВыборка.ОкладТарифнаяСтавка,"ЧЦ=15; ЧДЦ=2; ЧН=' '") + " (" + ?(ВложеннаяВыборка.ТребуетВводаТарифногоРазряда, ВложеннаяВыборка.ТарифныйРазряд + ", ", "") + СтрокаВалюты + ")" ; Иначе СтрокаВалюты = Символы.ПС + "(" + ВложеннаяВыборка.ВалютаТарифнойСтавки +")"; ОбластьМакета.Параметры.ОкладТарифнаяСтавка = "" + Формат(ВложеннаяВыборка.ОкладТарифнаяСтавка,"ЧЦ=15; ЧДЦ=2; ЧН=' '") + ?(ВложеннаяВыборка.ТребуетВводаТарифногоРазряда, " (" + ВложеннаяВыборка.ТарифныйРазряд + ")" , ""); КонецЕсли; КонецЕсли; Если ЗначениеЗаполнено(ВложеннаяВыборка.РазмерНадбавки) Тогда ТекстЯчейки = ОбластьМакета.Параметры.ОкладТарифнаяСтавка; ТекстЯчейки = "" + ТекстЯчейки + "," + Символы.ПС + ВложеннаяВыборка.РазмерНадбавки; Если ВложеннаяВыборка.СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.Процентом Тогда ТекстЯчейки = ТекстЯчейки + "(%)" Иначе ТекстЯчейки = ТекстЯчейки + ?(ЗначениеЗаполнено(ВложеннаяВыборка.ВалютаНадбавки)," (" + ВложеннаяВыборка.ВалютаНадбавки+")",""); КонецЕсли; ОбластьМакета.Параметры.ОкладТарифнаяСтавка = ТекстЯчейки; КонецЕсли; //уберем из табельного номера префикс ОбластьМакета.Параметры.ТабельныйНомер = ВложеннаяВыборка.ТабельныйНомер; // разбиение на страницы ВыведеноСтрок = ВыведеноСтрок + 1; // Проверим, уместится ли строка на странице или надо открывать новую страницу ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти); Если Не ВывестиПодвалЛиста и ВыведеноСтрок = ВсегоСтрокДокумента Тогда ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал); ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти); КонецЕсли; Если ВывестиПодвалЛиста Тогда ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); ТабДокумент.Вывести(ПовторятьПриПечатиСтроки); КонецЕсли; ТабДокумент.Вывести(ОбластьМакета); Если ИмяМакета = "Т5а_от_5_1_2004" И ЗначениеЗаполнено(ВложеннаяВыборка.ОснованиеПеремещения) Тогда ВысотаДока = ТабДокумент.ВысотаТаблицы; ОбластьДокумента = ТабДокумент.Область(ВысотаДока,14,ВысотаДока,17); ОбластьДокумента.Объединить(); ОбластьДокумента.Текст = ВложеннаяВыборка.ОснованиеПеремещения; КонецЕсли; КонецЦикла; // если не было ни одного работника - выводим пустой бланк ВыводимыеОбласти = Новый Массив(); ВыводимыеОбласти.Добавить(ОбластьМакета); ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал); Для Сч = 1 По ОбластьМакета.Параметры.Количество() Цикл ОбластьМакета.Параметры.Установить(Сч - 1,""); КонецЦикла; ОбластьМакета.Параметры.Работник = " " + Символы.ПС + " "; Пока ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти, Ложь) Цикл ТабДокумент.Вывести(ОбластьМакета); КонецЦикла; // выводим предварительно подготовленный Подвал документа. ТабДокумент.Вывести(ОбластьМакетаПодвал); Возврат ТабДокумент; КонецФункции // ПечатьТ5а() |
|||
1
Spieluhr
05.10.12
✎
16:18
|
а мысли-то есть какие-нибудь?
|
|||
2
zarel
05.10.12
✎
16:20
|
(1) Пока мыслей никаких, пытаюсь понять - читаю руководство разработчика... сроки поджимают... думаю может кто сможет помочь... а то я уже два дня ковыряюсь над этой темой...
|
|||
3
zarel
05.10.12
✎
16:23
|
to(1) вообще очень странно что печатается первая страничка нормально и вторая, а третья без шапки...
вот снапшот макета: http://savepic.su/2577262.htm |
|||
4
KARSH
05.10.12
✎
16:24
|
ТабличныйДокумент (SpreadsheetDocument)
ПовторятьПриПечатиСтроки (RepeatOnRowPrint) Использование: Чтение и запись. Описание: Тип: ОбластьЯчеекТабличногоДокумента. Содержит область строк, которая будет повторяться при печати каждого нового листа табличного документа. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение. |
|||
5
YF
05.10.12
✎
16:25
|
(4) У него же там разбиение на страницы само-хитро-выдуманное
|
|||
6
Defender aka LINN
05.10.12
✎
16:26
|
(5) ну и что?
|
|||
7
zarel
05.10.12
✎
16:26
|
to (4) запускается все на толстом клиенте и пользователей и у админов... так что проблема не в этом... тем более в настройках выставлено управляемое и обычное приложение... так что все поддерживается без проблем :)
|
|||
8
KARSH
05.10.12
✎
16:27
|
(5) при выводе через ПовторятьПриПечатиСтроки все равно какое разбиение на страницы, как только новая будет выводиться будут выводится повторяемые строки
|
|||
9
Deon
05.10.12
✎
16:28
|
(7) Чего отладчик говорит про ВывестиПодвалЛиста на тех листах, где шапочки нет?
|
|||
10
Deon
05.10.12
✎
16:29
|
(8) Похоже туда не заходит и разрыв страницы тоже не выводится
|
|||
11
YF
05.10.12
✎
16:30
|
(8) Это понятно, но
Вот он своим хитрым алгоритмом посчитал, что будет 3 страницы, но еще же шапка выведется и может случиться, что страницы станет 4, причем на последней будет только шапка и подписи ... |
|||
12
zarel
05.10.12
✎
16:30
|
to (7) зеленый я пока.. два месяца ковыряний в 1с...
нужно посмотреть значение переменной ПодвалЛиста ? |
|||
13
Deon
05.10.12
✎
16:33
|
(12) Не, вот в этом месте:
// Проверим, уместится ли строка на странице или надо открывать новую страницу ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти); У тебя переменная ВывестиПодвалЛиста не принимает значение Истина при переходе на 3й лист. Срабатывает, видимо, только после 1го листа |
|||
14
zarel
08.10.12
✎
09:02
|
(13) спасибо, сейчас буду смотреть :)
|
|||
15
zarel
09.10.12
✎
09:13
|
(13) Подвал печатается нормально, но вот область "ПовторятьПриПечати" выводится на печать только на первой и второй странице, на третьей не выводится, разве Подвал как то может влиять на печать шапки ?
|
|||
16
zarel
09.10.12
✎
13:45
|
(13) Спасибо огромное :)
|
|||
17
zarel
09.10.12
✎
13:50
|
Возникает следующий вопрос - как задать переменной ВывестиПодвалЛиста значение Истина когда текущая печатаемая страничка будет = 3 ?
Нужно наверное строки массивом разбивать на страницы, только я пока не знаю как это сделать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |