Имя: Пароль:
1C
 
ПроверитьВывод() как правильно использовать?
,
0 K1RSAN
 
30.01.18
15:16
Настраиваю макет в 8.2, там надо сделать так, чтобы в случае, когда строка не входит на лист - проводился переход на следующую страницу, на новой странице выводилась шапка и вывод продолжался?
Так же в первом переходе требуется вывести подвал с примечаниями.
Прочитал про метод ПроверитьВывод(), там говорится, что надо использовать массив. Загоняю в массив области макета, проверка на вхождение которых должна выполняться. Но что-то идет не так, и выводит некорректно. То есть подвал просто не входит на страницу, соответственно он лезет на следующую страницу и после нее идет обрезание. Также последующие разделения на страницу работают странно (через раз что ли) Или надо объединить области в одну или как?

Тут кусок кода, где идет именно заполнение массива и использование метода ПроверитьВывод()

ВыводимыеОбласти.Очистить();
        Если Подвал = Истина Тогда
            ВыводимыеОбласти.Добавить(ОбластьПодвал3);
        КонецЕсли;
        ВыводимыеОбласти.Добавить(ОбластьДанные3);
        Если Не ТабличныйДокумент.ПроверитьВывод(ВыводимыеОбласти) Тогда
            
            Если Подвал Тогда
                ТабличныйДокумент.Вывести(ОбластьПодвал3);
            КонецЕсли;
            
            ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
            Перенос = Истина;
            Подвал = Ложь;
            ТабличныйДокумент.Вывести(ОбластьДоп);
            ТабличныйДокумент.Вывести(ОбластьШапка3);
            
        КонецЕсли;
        ТабличныйДокумент.Вывести(ОбластьДанные3);
1 K1RSAN
 
30.01.18
15:17
*Опечатка, БП 3.0
2 Вафель
 
30.01.18
15:19
посмотри в торг12
3 mistеr
 
30.01.18
15:28
(0) Похоже подвал сам по себе не влезает.
Ты его с каждой строкой проверяешь?
4 K1RSAN
 
30.01.18
15:32
(3) Да, до тех пор, пока она один раз не выйдет.
5 K1RSAN
 
30.01.18
15:32
она = подвал* (4)+
6 K1RSAN
 
01.02.18
08:35
Может есть возможность просто следить за оставшейся "высотой" на листе? И просто при выводе каждого компонента проверять, хватает ли высоты на вывод на этом листе или нет?

Код немного изменился, но суть не поменялась пока что. Но ищу другие выходу
7 K1RSAN
 
01.02.18
08:35
ВыводимыеОбласти.Очистить();
        Если Подвал = Истина Тогда
            ВыводимыеОбласти.Добавить(ОбластьПодвал3);
        Иначе
            ВыводимыеОбласти.Добавить(ОбластьДанные3);
        КонецЕсли;
        Если Не ТабличныйДокумент.ПроверитьВывод(ВыводимыеОбласти) Тогда
            
            Если Подвал Тогда
                ТабличныйДокумент.Вывести(ОбластьПодвал3);
                Подвал = Ложь;
            КонецЕсли;
            
            //ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
            Перенос = Истина;
            ТабличныйДокумент.Вывести(ОбластьДоп);
            ТабличныйДокумент.Вывести(ОбластьШапка3);
            
        КонецЕсли;
        ТабличныйДокумент.Вывести(ОбластьДанные3);
8 K1RSAN
 
01.02.18
08:38
Небольшая опечатка
Если Подвал = Истина Тогда
    ВыводимыеОбласти.Добавить(ОбластьПодвал3);
КонецЕсли;
ВыводимыеОбласти.Добавить(ОбластьДанные3);


Таким образом, если в этой таблице еще не был выведен подвал ни разу - он проверяет, поместится ли подвал и еще одна строка. Если не помещается - выводит подвал, а на новой странице - заново выводится шапка и потом заполняется строка. А если подвал уже был выведен - то уже проверяет только на "влезаемость" строки. Но что-то идет не так и не срабатывает как надо
9 Мимохожий Однако
 
01.02.18
08:42
С подвалом проверяй последнюю строчку, а остальные строчки без подвала.
10 K1RSAN
 
01.02.18
08:45
(9) В каком смысле последнюю строчку? Получили новую форму отчетности, там подвал находится на первой странице. Проконсультировался с человеком, который обычно рассматривает эту форму -она говорит выводить подвал на первой странице таблицы
11 K1RSAN
 
01.02.18
08:49
(9) И даже когда проверяется только последняя строка - то он некорректно срабатывает. По правильному шапка должна быть на каждой странице, а выходит через страницу или типа того
12 Мимохожий Однако
 
01.02.18
08:55
(11) Я тебе про подвал, а ты про шапку )).  Проверяй вывод после каждой строчки. А вот последнюю проверяй вместе с подвалом.
13 Мимохожий Однако
 
01.02.18
09:00
ТабличныйДокумент (SpreadsheetDocument)
ПовторятьПриПечатиСтроки (RepeatOnRowPrint)
Использование:

Чтение и запись.
Описание:

Тип: ОбластьЯчеекТабличногоДокумента.
Содержит область строк, которая будет повторяться при печати каждого нового листа табличного документа.
14 catena
 
01.02.18
09:16
Во-первых, не вижу, где переменная Подвал возводится в истину
15 catena
 
01.02.18
09:17
Во-вторых, подвал надо проверять с каждой строкой.

ВыводимыеОбласти.Очистить();
ВыводимыеОбласти.Добавить(ОбластьДанные3);
ВыводимыеОбласти.Добавить(ОбластьПодвал3);
Если Не ТабличныйДокумент.ПроверитьВывод(ВыводимыеОбласти) Тогда
            
        ТабличныйДокумент.Вывести(ОбластьПодвал3);
        ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        Перенос = Истина;
        ТабличныйДокумент.Вывести(ОбластьДоп);
        ТабличныйДокумент.Вывести(ОбластьШапка3);
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьДанные3);
16 K1RSAN
 
01.02.18
09:29
(13) В документе много таблиц. Или можно переопределять в ходе работы? В общем попробую это

(15) зачем с каждой строкой? Ведь если он один раз выведен - второй раз не надо уже.
17 Мимохожий Однако
 
01.02.18
09:36
(16) Каждую таблицу можно делать отдельно и потом объединять в одну общую.
Каждую строку надо проверять для того, чтобы новая страница определялась программно, а не  принтером. Тогда при этом  не будет пропадать шапка таблицы.
18 dezss
 
01.02.18
09:38
а если подвал выше строки и даже сам он не помещается?
может следует сравнивать с 2 строками данных?
19 Злопчинский
 
01.02.18
09:40
Тебе что надо? Обеспечить чтобы подвал влезал на страницу без разрыва? И не был "висящим"?
20 catena
 
01.02.18
09:42
(16)Подвал на каждой странице или только в конце?
21 catena
 
01.02.18
09:43
Если на каждой странице, логика такая:

"скажи мне, милый адинэс, если я выведу вот эту строку, у меня потом еще подвал поместится? Да? Тогда вывожу строку. Нет? Тогда вывожу подвал, а вот эту строку печатаю на следующей странице"
22 catena
 
01.02.18
09:46
(18)Нет, в том-то и дело, если текущая строка+подвал не помещаются, то выводится только подвал, а текущая строка выводится на следующей странице.
23 Злопчинский
 
01.02.18
09:47
Я так нихрена не понял чтоиавтору надо. Так мутно описать мог только восьмерочник
24 K1RSAN
 
01.02.18
09:49
(19) Да
25 K1RSAN
 
01.02.18
09:49
(20) Подвал только на первой странице
26 K1RSAN
 
01.02.18
09:50
(23) Таким образом, если в этой таблице еще не был выведен подвал ни разу - он проверяет, поместится ли подвал и еще одна строка. Если не помещается - выводит подвал, а на новой странице - заново выводится шапка и потом заполняется строка. А если подвал уже был выведен - то уже проверяет только на "влезаемость" строки. Но что-то идет не так и не срабатывает как надо
27 K1RSAN
 
01.02.18
09:50
(21) Типа такого
28 Злопчинский
 
01.02.18
09:56
Выводит в черновик сначала и на нем проверяй вывод, если влезло - выводит в чистовик.
В черновик вывести подвал СНАЧАЛА, а потом выводить строки и проверять вывод на черновика. Если влезло - тогда выводишь строку в чистовик. Если не влезло - выводишь в чистовик подвал.
29 Йохохо
 
01.02.18
10:00
так то
Если Подвал = Истина Тогда
ВыводимыеОбласти.Добавить(ОбластьДанные3);
    ВыводимыеОбласти.Добавить(ОбластьПодвал3);
Иначе
ВыводимыеОбласти.Добавить(ОбластьДанные3);
КонецЕсли;
но до сих пор не написали что же не так идет
и видимо (25) читать как "подвал выводится один раз для одной таблицы, которых в табдок потом много"
30 K1RSAN
 
01.02.18
10:02
(29) Идет не так - Почему-то выводит шапку не каждый раз, а 1 в 3 страницы, что является неверным.
Знание как не надо вам все равно лишнее. Я подозреваю, что неправильно использую метод, а для этого вроде достаточно выведено
31 Мимохожий Однако
 
01.02.18
10:02
(29) Не все телепаты... А полного кода никто не видел..Даже ТС ))
32 K1RSAN
 
01.02.18
10:04
(31) Я вывел код, ответственный за вывод на страницы именно проблемной части. Думаю, вас не заинтересует процесс получения областей из макетов, а расчеты не мои, я правлю уже сделанный отчет, у которого поменялась форма в новом году.
33 K1RSAN
 
01.02.18
10:05
(32) + ну и проблема не в расчетах, заполняются области правильно, проблема только с выводом.
34 catena
 
01.02.18
10:07
(32)Это чистый код, изнутри ничего не удалялось? Заполнение областей идет в какой момент?
35 K1RSAN
 
01.02.18
10:07
Я уже подумываю начать химичить с вещами типа высоты. Сказали, что подвал ладно, главное шапку выводить в начале каждой страницы.
36 catena
 
01.02.18
10:08
Ориентация печати при просмотре не отличается от программной?
37 K1RSAN
 
01.02.18
10:09
(34) Заполнение областей идет в начале цикла. Сначала заполняется через Параметры.Заполнить(), потом ручками. (сделано до меня, переписывать пока задачи нет, потом еще свои косяки искать)
(36) это посмотрю
38 Злопчинский
 
01.02.18
10:11
Над (28) лень подумать, видимо...
39 dezss
 
01.02.18
10:13
А отступы и т.п. у тебя в табдоке настроены так же, как и в предварительном просмотре?
40 K1RSAN
 
01.02.18
10:14
(36) Спасибо проблема оказалась настолько банальной... Отчет формируется с ориентацией ландшафт, а перед формированием не указывается явно.
(38) На это у меня не хватает мозгов, я же восьмерошник, и вообще знаю о существовании уанасса полгода.
41 Злопчинский
 
01.02.18
10:28
(40) алгоритм
Инициализировать  чистовик и черновик
Вывести в чистовик и черновик все что нужно для первой страницы включая заголовок таблицы
Вывести в черновик подвал
Цикл
   Вывести в черновик строку
   Если  черновик.проверитьвывод() < 2страниц тогда
  Вывести строку в чистовик
  Иначе
     Ввести в чистовик подвал
     Прервать цикл
  Конецесли
  Конеццикла
42 catena
 
01.02.18
10:36
(41)ПроверитьВывод() чем не устраивает?
43 Злопчинский
 
01.02.18
10:41
(42) лично меня - почти всем. Что не устраивает автора - хз
44 Злопчинский
 
01.02.18
10:47
(42) я хз. В клюшках пока вывод в макет не сделаешь - с легонца не поймешь влезло или нет на страницу. А отменить сделанный вывод нельзя.
Если в снеговике проверить вывод работает без реального вывода в проверяемых макет - тоивообще лепота
Ещё не знаю есть ли в снеговика такая настройка как в клюшках типа "вместе со следующим" - тогда ряд задач по выводу ещё проще можно сделать
45 assasu
 
01.02.18
10:49
(0) если по какой-то причине  отвалится принтер , то на этой строчке все встанет и не увидишь печатную форму. надо это иметь ввиду
46 catena
 
01.02.18
11:00
(44)Работает именно без вывода. В этом и прелесть.
"Вместе со следующим" не помню что такое, я клюшки последний раз в 2010 году открывала))
47 alxxsssar
 
01.02.18
11:05
А кто-нибудь делал большие документы с оглавлением и указанием номеров страниц в начале? ахаха
48 K1RSAN
 
01.02.18
11:21
(41) Спасибо
49 K1RSAN
 
01.02.18
11:34
(47) Это типа фиктивно печатать документ и в момент начала глав выводить главу в реальный документ?
50 alxxsssar
 
01.02.18
11:42
(49) большой документ с динамически формируемым текстом (неизвестное количество строк, рисунки, таблицы и т.д.) разделен на главы. В начале текста- оглавление с указанием реальных номеров страниц. 2 макета и проверить вывод() помогли.
51 K1RSAN
 
01.02.18
11:58
(50) Может не 2 макета, а 2 табличных документа по одному макету?
52 alxxsssar
 
01.02.18
12:07
(51) конечно