Имя: Пароль:
1C
1С v8
Функция ПроверитьВывод() в поле табличного документа
0 mishula2005
 
10.05.17
18:43
Нужна помощь: вывожу данные в поле табличного документа. Программно формирую текст, вставляю в ячейку и делаю проверку функцией ПроверитьВывод() на входжение на страницу. НО не всегда срабатывает эта функция. В отладчике проверяла - вроде ячейка уже должна перенестись на новую страницу - а результат проверки "Истина" - в итоге при сохранении документа в *.pdf выводится криво.
Принтер не установлен, поэтому не знаю какие настройки еще установить...

Процедура ПроверитьВыводНаСтраницу(ПроверяемаяОбласть,ОбластьШтамп)
    МассивОбластей  = Новый Массив;
    МассивОбластей.Добавить(ПроверяемаяОбласть);
    МассивОбластей.Добавить(ОбластьШтамп);
    
    Если не ОсновноеТабличноеПоле.ПроверитьВывод(МассивОбластей) Тогда
    
        ВывестиШтампВКонцеСтраницы(ОбластьШтамп);
ОсновноеТабличноеПоле.Вывести(ПроверяемаяОбласть);
        МассивОбластей.очистить();
    КонецЕсли;
    
    ОсновноеТабличноеПоле.Вывести(ПроверяемаяОбласть);
    
    
КонецПроцедуры
1 catena
 
10.05.17
18:46
Приведенного кода недостаточно. Неизвестно, что происходит в ВывестиШтампВКонцеСтраницы(), а ПроверяемаяОбласть в некоторых случаях выводится дважды...
2 catena
 
10.05.17
18:47
Ну и не видно, что массив областей заполняется перед проверкой.
3 mishula2005
 
10.05.17
18:55
(1) вот так вывожу штамп в конце страницы
Процедура ВывестиШтампВКонцеСтраницы(ОбластьПустаяСтрока,ОбластьШтамп,НомСтр)
    МассивОбластей = Новый Массив;
    МассивОбластей.Добавить(ОбластьШтамп);
    МассивОбластей.Добавить(ОбластьПустаяСтрока);
    Пока ОсновноеТабличноеПоле.ПроверитьВывод(МассивОбластей) Цикл
        ОсновноеТабличноеПоле.Вывести(ОбластьПустаяСтрока);
    КонецЦикла;
    ОсновноеТабличноеПоле.Вывести(ОбластьШтамп);
    ОсновноеТабличноеПоле.ВывестиГоризонтальныйРазделительСтраниц();
КонецПроцедуры

А по выводу проверяемойОбласти - поняла. исправлю..
4 mishula2005
 
10.05.17
18:57
(2) Массив заполняется, в отладчике проверяла..
МассивОбластей  = Новый Массив;
МассивОбластей.Добавить(ПроверяемаяОбласть);
МассивОбластей.Добавить(ОбластьШтамп);
5 Ц_У
 
10.05.17
18:57
(3) может стоит добавить еще и ранее выведенную область?
6 catena
 
10.05.17
19:03
(4)Не массив. Для проверки должны ыть заполнены сами области. Но судя по тому, что они сразу выводятся, там должно быть все в порядке.
7 mishula2005
 
10.05.17
19:11
(5) Процедура вывода штампа в конце страницы отрабатывает хорошо, проблема в выводе (1) - ни в какую не проверяет что область не входит на страницу
8 mishula2005
 
10.05.17
19:13
(6) Да, сами области заполняются нормально, вот только не переносятся на следующую станицу...
9 Злопчинский
 
11.05.17
01:24
Если принтер не установлен тоткак система тебе отрисует страницу чтобы проверить влащит это или нет
10 catena
 
11.05.17
06:13
(9)Ну, в справке написано, что без принтера будет вываливаться исключение.
11 BoberKurit Bambuk
 
11.05.17
06:20
(10) Скорее всего есть виртуальный Adobe PDF принтер.
12 catena
 
11.05.17
06:23
(11)Это не важно, виртуальный или физический. Главное, что ПроверитьВывод() отлично отрабатывает, если ее правильно готовить.
13 Злопчинский
 
11.05.17
06:40
(12) отсюда вопрос как правильно готовить?
14 catena
 
11.05.17
06:45
(13)Сложно сказать, потому что автор врет. В (3) совсем не та процедура ВывестиШтампВКонцеСтраницы, что используется в (0).
15 catena
 
11.05.17
06:45
+(14)В смысле, сложно сказать, как готовят в данном случае)) А в целом все просто строго по документации: заполнить и проверить. Проверить то, что заполняем и выводить то, что проверяем.
16 Fedor-1971
 
11.05.17
09:05
(0) Заполни массив так:
- уже выведенное в табличный документ (большущая область предыдущего вывода)
- область которую хочешь сейчас выводить
- область штампа (что-бы штамп не остался на пустой странице)

иначе, то что ты выводишь всегда влезет на страницу (одна строка и штамп - редко занимают больше одной страницы)

Если тебе не нужно выводить некую информацию в конце страницы, например, часть бланка то используй ВывестиГоризонтальныйРазделительСтраниц(), а не выводи пустые строки
17 catena
 
11.05.17
09:09
18 Fedor-1971
 
11.05.17
09:22
(17) да попутал малость, ранее выведенный документ в массиве не нужен.
В примере есть нюанс - в массив добавлена пустая область, а в реале она может занимать больше места чем в макете
2 + 2 = 3.9999999999999999999999999999999...