Имя: Пароль:
1C
1С v8
Не работает ПовторятьПриПечатиСтроки
,
0 Cоляпсус
 
05.04.18
17:31
Здравствуйте. Понимаю, что тема много раз объезжена, почитал в всемирном мозге. Как мне кажется должно работать, но работает только при печати через предварительный просмотр. А через просто кнопку печать заголовок не печатается на второй странице. Подскажите, что не  так. Написал у себя нужные две строчки, но не работает.

ТоварыОбласть = Макет.Область("ТоварыШапкаТаблицы");
ТабДок.ПовторятьПриПечатиСтроки = ТоварыОбласть;

Заранее благодарен
1 Cоляпсус
 
05.04.18
17:38
Так же пробовал через

ТоварыОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ТоварыШапкаТаблицы");
ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область("ТоварыШапкаТаблицы");

ситуация была той же
2 Cоляпсус
 
05.04.18
17:46
Кто-то может встречался с этой ситуацией. Хотелось обойтись без ПроверкиВывода() или тут никак?
3 Cоляпсус
 
05.04.18
17:48
Ссори через ПроверитьВывод ()
4 Ёпрст
 
05.04.18
17:54
нужно область не макета пихать
5 Cоляпсус
 
05.04.18
17:59
(0) Ну так здесь я и пихал областьЯчеекТабличногоДокумента
6 Ёпрст
 
05.04.18
18:00
На предварительном просмотре, шапка твоя повторяется ?
7 Cоляпсус
 
05.04.18
18:01
Ну да, на предварительном есть и печатаешь есть, на ПЕЧАТЬ нет
8 Cоляпсус
 
05.04.18
18:03
Добился в печатной форме вывод шапки через ПроверитьВывод, но так же вижу это на экранной форме, можно как то избавится?
9 Cоляпсус
 
05.04.18
18:04
От шапки в экранной форме. чтобы её не видеть, но печаталась (8)
10 Ёпрст
 
05.04.18
18:04
(7) если на предв. просмотре всё есть, тогда всё работает как надо

Если что-то нет при печати, то попробуй воткнуть
ТабДок.Вывод = ИспользованиеВывода.Разрешить

хотя это для записи в файло..
Печать потом, через что ? Через универсаольную обработку печати с макетом на форме ?
11 Ёпрст
 
05.04.18
18:05
Повторять при печати строки, будет только на предв просмотре, и при печати (на бумаге) если что.
Визуально, на форме ты этого не увидишь
12 Cоляпсус
 
05.04.18
18:07
Так ситуация обратная, при ТабДок.ПовторятьПриПечатиСтроки, не вижу на экране, не вижу на бумаге через команду ПЕЧАТЬ, но вижу при предварительном просмотре и вижу на бумаге при печати, через предварительный просмотр
13 Cоляпсус
 
05.04.18
18:08
А при проверитьВыовод(), всё хорошо печатаестя, но на экране шапка видна при разрыве, там она конечно лишняя
14 Cоляпсус
 
05.04.18
18:09
(10) Нет не работает всётаки как надо. ((
15 Cоляпсус
 
06.04.18
09:14
Доброе утро всем. Вынужден повторится.
Необходимо, чтобы шапка документа, печаталась на каждой странице, когда таблица выходит за рамки одной страницы.
Для этого ей было подано:
ТоварыОбласть = Макет.Область("ТоварыШапкаТаблицы"); - область ячеек табдока.
Если ТабДок.ПроверитьВывод(ТоварыОбластьДетальныхЗаписей) = Ложь Тогда
ТабДок.ПовторятьПриПечатиСтроки = ТоварыОбласть;
КонецЕсли;

Но ситуация продолжает оставаться прежней: При печати командой ПЕЧАТЬ на форме, вторая страница выходит без шапки. При печати - Предварительный просмотр, видно что шапка на второй странице есть и печать из предварительного просмотра, листы печатаются как нужно с шапкой на второй странице.
Кто-то может знает как исправить ситуацию?
Пробовал после Тогда - ТабДок.Вывести(ТоварыОбластьШапкаТаблицы);
Но тогда разделение видно на экранном отображении, а это всётаки лишнее
16 George Wheels
 
06.04.18
09:29
ТоварыОбласть = ТабДок.Область("R1:R2");
ТабДок.ПовторятьПриПечатиСтроки = ТоварыОбласть;

R1:R2 - это две первые строки. Сколько у тебя (и с какой строки повторять) тебе лучше знать.
17 Cоляпсус
 
06.04.18
09:39
(16) Ну так на всякий случай я пробовал. Ситуация одинаковая, как  с
ТоварыОбласть = Макет.Область("ТоварыШапкаТаблицы");
ТабДок.ПовторятьПриПечатиСтроки = ТоварыОбласть;

при предварительном есть, при печати команда нет.
18 George Wheels
 
06.04.18
09:47
После того как ТД уже сформирован, при печати могут повторяться только его строки, а не строки макета.
В (2) ты писал ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область("ТоварыШапкаТаблицы");
но в ТабДок нет области "ТоварыШапкаТаблицы"
19 Cоляпсус
 
06.04.18
09:59
(18) это я понял и поэтому зададл областьячеекТабличноДокумента
ТоварыОбласть = Макет.Область("ТоварыШапкаТаблицы"); но ситуация не изменилась
специально ещё раз попробывал ТоварыОбласть = ТабДок.Область("R1:R2"); - всё тоже, всё там же
20 ptiz
 
06.04.18
10:04
(19) Ты всю ветку ходишь по одним и тем же граблям: указывать надо область ячеек табличного документа, который печатаешь.
Приведи полный код, ткнем тебя носом в грабли еще раз.
21 Cоляпсус
 
06.04.18
10:08
РезультатЗапроса = Запрос.Выполнить();
    
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ТоварыОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ТоварыШапкаТаблицы");
    ТоварыОбласть = Макет.Область("ТоварыШапкаТаблицы");
    ТоварыОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("ТоварыДетали");
    
    ТабДок.Очистить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    ВыбДетЗаписи = РезультатЗапроса.Выгрузить();
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ТабДок.АвтоМасштаб = Истина;
    ТабДок.Вывести(ОбластьЗаголовок);
    ОбластьЗаголовок.ТекущаяОбласть.Шрифт = Новый Шрифт(,14,Истина);
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыбДетЗаписи[0]);
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    ТабДок.Вывести(ТоварыОбластьШапкаТаблицы);
    

    //
    /////////////////////////////////////////////
    ВставлятьРазделительСтраниц = Ложь;
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл //перебора массива объектов
        Если ВставлятьРазделительСтраниц = Истина Тогда
            ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
              КонецЕсли;
        НомерСтрокиНачало = ТабДок.ВысотаТаблицы + 1;    
    
            ТоварыОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
        ТабДок.Вывести(ТоварыОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
                    
        //подключимся к общ механизму обл печати
        УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДок, НомерСтрокиНачало, ОбъектыПечати, ВыборкаДетальныеЗаписи.Ссылка);
        
        //ВставлятьРазделительСтраниц = Истина;
    Если ТабДок.ПроверитьВывод(ТоварыОбластьДетальныхЗаписей) = Ложь Тогда
    ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область("R6C1:R6C10");;
        //ОбластьДетальныхЗаписей.Параметры.Заполнить(ТоварыОбласть);
КонецЕсли;
    КонецЦикла; //перебора массива объектов
    
    
    Возврат ТабДок;
22 Cоляпсус
 
06.04.18
10:08
Спасибо, что ткнёте, но казалось, что стараюсь правильно сделать
23 Cоляпсус
 
06.04.18
10:21
Куда-то все делись
24 ptiz
 
06.04.18
10:33
(21)  Тут верно:
ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область("R6C1:R6C10");;

А вот алгоритм неправильный.
Выкинь это условие:
  Если ТабДок.ПроверитьВывод(ТоварыОбластьДетальныхЗаписей) = Ложь Тогда


ПовторятьПриПечатиСтроки - само выводит на каждой странице, незачем это условие втыкать.
25 Cоляпсус
 
06.04.18
10:33
Было много людей и как-то сразу стала не интересна тема
26 Cоляпсус
 
06.04.18
10:35
(24) Согласен,так и было изначаль, но я это условие поставил только для того чтобы попробовать изменить ситуацию описанную (15), но никак не меняется ситуёвина. Но сейчас специально ещё разок попробую
27 ptiz
 
06.04.18
10:38
И вынеси ТабДок.ПовторятьПриПечатиСтроки после цикла
28 Cоляпсус
 
06.04.18
10:43
Так и сделал, не меняется ситуёвина.
Вот что пишет отладчик, тут наверное и проблема, (не уверен конечно)
http://prntscr.com/j1lvd3
29 Cоляпсус
 
06.04.18
10:59
Как заговорённая, .лин
30 ptiz
 
06.04.18
10:59
(28) Еще раз покажи весь код.
31 ptiz
 
06.04.18
11:02
И - да, область задавать лучше строками:
ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область(6,,10,);
32 Cоляпсус
 
06.04.18
11:42
Запрос.УстановитьПараметр("Ссылка", МассивОбъектов);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ТоварыОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ТоварыШапкаТаблицы");
    ТоварыОбласть = Макет.Область("ТоварыШапкаТаблицы");
    ТоварыОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("ТоварыДетали");
    
    ТабДок.Очистить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    ВыбДетЗаписи = РезультатЗапроса.Выгрузить();
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ТабДок.АвтоМасштаб = Истина;
    ТабДок.Вывести(ОбластьЗаголовок);
    ОбластьЗаголовок.ТекущаяОбласть.Шрифт = Новый Шрифт(,14,Истина);
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыбДетЗаписи[0]);
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    ТабДок.Вывести(ТоварыОбластьШапкаТаблицы);
    ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область("ТоварыШапкаТаблицы");//ТоварыОбласть;
    

    //
    /////////////////////////////////////////////
    ВставлятьРазделительСтраниц = Ложь;
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл //перебора массива объектов
        Если ВставлятьРазделительСтраниц = Истина Тогда
            ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
              КонецЕсли;
        НомерСтрокиНачало = ТабДок.ВысотаТаблицы + 1;    
    
            ТоварыОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
        ТабДок.Вывести(ТоварыОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
                    
        //подключимся к общ механизму обл печати
        УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДок, НомерСтрокиНачало, ОбъектыПечати, ВыборкаДетальныеЗаписи.Ссылка);
        
        //ВставлятьРазделительСтраниц = Истина;
    //Если ТабДок.ПроверитьВывод(ТоварыОбластьДетальныхЗаписей) = Ложь Тогда
        //ОбластьДетальныхЗаписей.Параметры.Заполнить(ТоварыОбласть);
//КонецЕсли;
    КонецЦикла; //перебора массива объектов
    
         ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область("R6C1:R6C10");

    Возврат ТабДок;
33 Cоляпсус
 
06.04.18
11:46
Заменил на
    ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область(6,,6,);
та же ф..ня((
34 Cоляпсус
 
06.04.18
11:46
В смысле через предварительно отлично работает, через ПЕЧАТЬ  - перебьётесь называется
35 Ёпрст
 
06.04.18
13:39
(34)
Что значит "через" печать ?

1.В предварительном просмотре, есть твои повторяющиеся строки ?
2. На бумаге, после печати, они есть ?

если ответ да и да, то так и должно быть

Если ты хочешь видеть ЭТО на поле табличного документа на форме, то ты ЭТОГО не увидишь...

хз, как тебе еще объяснить
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn