Имя: Пароль:
1C
1С v8
счет фактура из нескольких листов разбивает неправильно на листы почему?
,
0 Cerera
 
24.07.13
16:29
В типовой БП2.0 при печати Счет фактур с большим числом строк, неравномерно распределяется по страницам. На первой страницы много строк, на следующей странице остаток - несколько, на третьей снова много строк, а потом опять. Вот как с этим бороться? Скорее всего это из-за того, что часть названий номенклатуры слишком длинные и переносятся на другую строчку и по этой причине задуманное количество строк не умещается на страницу. Но как с этим бороться то? Это же у всех такое возникает.
1 Aleksey
 
24.07.13
16:32
да у всех
2 Широкий
 
24.07.13
16:33
Переписать обработку печати?
3 Aleksey
 
24.07.13
16:34
собственно на соседнем форуме мы уже ковырялись с этой проблемой. Только переписывать обработку печати. Для этого в модуле объекта счет-фактуры выданной ищем функцию ПечатьСчетаФактуры1137 и в третей строкой вставляем...


Функция ПечатьСчетаФактуры1137(ДанныеДляПечати) Экспорт
 
  ТабДокумент = Новый ТабличныйДокумент;

  Макет = ПолучитьОбщийМакет("СчетФактура1137");

//------Начало вставки  
  ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
  ТабДокумент.ПолеСверху = 13;
  ТабДокумент.ПолеСлева  = 0;
  ТабДокумент.ПолеСнизу  = 0;
  ТабДокумент.ПолеСправа = 0;
   ТабДокумент.РазмерКолонтитулаСнизу = 0;
   ТабДокумент.РазмерКолонтитулаСверху= 10;
  ТабДокумент.АвтоМасштаб  = Истина;

//------Конец вставки  



Ну и в конце функции после "// Устанавливаем параметры печати и колонтитулы" удаляем


  // Устанавливаем параметры печати и колонтитулы
 
  //ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
  //ТабДокумент.ПолеСверху = 13;
  //ТабДокумент.ПолеСлева  = 0;
  //ТабДокумент.ПолеСнизу  = 0;
  //ТабДокумент.ПолеСправа = 0;
  //ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура1137";



И всё проблема решена.
4 Aleksey
 
24.07.13
16:35
Собственно там это косяк типовой. Как я это понимаю - 1С в начале процедуры инициализирует макет, далее в процессе вывода она проверяет а помещается ли наша строка на страницу, и если не помещается, то создает новую страницу, и на новой страницы выводит заголовок и очередную строку

И всё бы хорошо, до того момента пока не доходим до конца вывода, где мы говорим, что "а теперь нужно отсупить сверху 13 строк (ТабДокумент.ПолеСверху = 13;)", НО (!) у нас же уже создана своя разбивка под старые границы, вот и получается что с новыми параметрами у нас строки "съезжают" на следующую страницу.

Вот для этого в самом начале мы говорим 1С какие поля должны быть у нашего документа, и после этого 1С уже корректно сделает разбивку по страницам. Собственно чем полнее и точнее мы зададим параметры страницы тем правильнее будет отрабатывать функция проверитьВывод, вот поэтому мы и добавили размер колонтитула и автомасштаб
5 Aleksey
 
24.07.13
16:37
Заодно спрошу тут у знающих как пользоваться ИмяПараметровПечати (КлючПараметровПечати), а точнее как корректно заставить её работать. Ибо сейчас ему пофиг на мои параметры, как только я пишу ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура1137", то он удаляет все мои настройки печати и "восстанавливает" свои сохраненые, из за этого несмотря на то что разбивка идет по другому, но на экран в параметры страницы записываются совсем уж левые параметры, которые сохранены в ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура1137" и как их там программно менять я не нашел (меняются только при интерактивном изменении параметров страницы). Поэтому для достижения стабильного результата и удаляем эту строку от греха подальше. Это приведет лишь к тому что он не будет сохранять изменения параметров заданных вручную пользователем, а всегда будет выводить новую печатную форму исходя из тех параметров которые мы задали в начале процедуры.
6 Cerera
 
24.07.13
16:43
(4)достойный ответ.
7 dkonakov
 
29.07.13
12:24
Спасибо, очень помогло!
8 Ненавижу 1С
 
гуру
29.07.13
12:26
а КОГДА уже это исправят?
9 ptiz
 
29.07.13
12:28
Т.е. они меняют параметры страницы после использования .ПроверитьВывод()?
Ну и олени :)
10 dkonakov
 
29.07.13
12:37
(8) вроде такая элементарщина, а похоже, что тянется уже давно.
11 Масянька
 
29.07.13
12:47
Я в ТиС'е переписала и счет-фактуру и Торг-12: наименование номенклатуры - разбивается на строки заданной длины, кол-во строк на странице - зашито четко. Короче, долбилась долго.
12 Aleksey
 
29.07.13
12:48
(11) В 7-ке нет функции ПроверитьВывод. Вот и приходится извращаться с фиксированным макетом