Вход | Регистрация



ПроверитьВывод() как правильно использовать?

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

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

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

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

            Перенос = Истина;
            ТабличныйДокумент.Вывести(ОбластьДоп);
            ТабличныйДокумент.Вывести(ОбластьШапка3);
            
        КонецЕсли;
        ТабличныйДокумент.Вывести(ОбластьДанные3);
   K1RSAN
 
8 - 01.02.18 - 08:38
Небольшая опечатка
Если Подвал = Истина Тогда
    ВыводимыеОбласти.Добавить(ОбластьПодвал3);
КонецЕсли;
ВыводимыеОбласти.Добавить(ОбластьДанные3);


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

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

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

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

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует