Печать счет-фактуры

1. Eugenered 11.07.13 11:05 Сейчас в теме
Может быть у кого-то такая же проблема. С недавнего времени при печати выданного счет-фактуры в БП 2.0 (на данный момент 2.0.49.15) происходит непонятное разбитие страницы при печати документа с большим количеством позиций. При нажатии кнопки "печать" вылазит красивая печатная форма счет-фактуры, а при выводе на печать на принтер эти страницы дополнительно разбиваются. Есть предположение, что неправильно работает механизм проверки влазит ли информация на страницу. Получается, например, изначально программа счет-фактуру на 2 страницы. Но при печати 1 страница не влазит полностью, она переносится на 2-ую, выводит например несколько строк, потом печатается 2-ая страница на следующем листе. напечатанной она выглядит так - на первой странице полностью забит лист, на второй например наполовину, на 3-ей опять полностью и так далее.
Может быть кто-то сталкивался с таким? Проблема не у меня одного, а еще у многих знакомых.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. melenaspb 208 11.07.13 11:18 Сейчас в теме
(1) Eugenered,

У нас такое было, но как-то самоликвидировалось.
Я так и не нашла причину, тоже очень хотелось было понять.
4. lamelioss 143 11.07.13 11:21 Сейчас в теме
(1) Eugenered, смотри настройки принтера, скорее всего он поля или колонтитулы свои вставляет
2. Guyer 20 11.07.13 11:08 Сейчас в теме
У меня такое было только если когда выводится печатная форма ориентация одна а при непосредственной печати ориентация уже другая.
Если потом опять вывести на печать уже с верной (последней запомненной) то все ок.
5. Guyer 20 11.07.13 11:29 Сейчас в теме
Самоликвидация заключается только в том что 1С запоминает для каждого вида документа последнюю настройку печати, поэтому когда конфа обновилась настройки слетели, или пользователь стал новым, восстановили вот Вам и самоликвидация. Здесь другйо вопрос здесь именно расчет того поместится или нет. Я долго по коду лазил. Там есть расчет но логику его понять было очень трудно.
6. lamelioss 143 11.07.13 11:32 Сейчас в теме
(5) Guyer, слушай, какой расчет? у с/ф на макете стоит разделитель. Если данных больше - переносит на новую. Вот тебе и весь расчет
9. melenaspb 208 11.07.13 11:55 Сейчас в теме
(6) lamelioss,

Проблема не в том. Саму печатную форму программа формирует правильно, на новые страницы переход сделан вовремя,
но эта же форма в предварительном просмотре выглядит уже так красиво - первая страница нормально, на второй одна или две строки, потом снова более-менее нормальная страница, потом опять несколько строк.
Т.е программно разбито на страницы правильно, разделитель вставлен куда нужно, а при выводе на печать все плывет и не помещается. Почему не помещается , и что влияет , вот вопрос.
Стандартная функция ТабДокумент.ПроверитьВывод должна же использовать настройки принтера?
10. lamelioss 143 11.07.13 12:00 Сейчас в теме
(9) melenaspb, кстати не факт =) смотря какой принтер.
7. Guyer 20 11.07.13 11:36 Сейчас в теме
Ну а как он определяет что данных больше?
8. lamelioss 143 11.07.13 11:48 Сейчас в теме
(7) Guyer, еще раз говорю, копай настройки печати и насттройки самого принтера. если полстраницы переносится на другой лист это одно, а если пару строк снизу уходят - это другое. а определяет не 1с, а менеджер печати винды, ну или линухи, смотря что у тебя стоит. единственный вариант - это настройка самого макета на разделители и переносы, но у СФ это все стандартное
11. Eugenered 11.07.13 12:06 Сейчас в теме
melenaspb, да, вы меня правильно поняли. вот только в чем проблема, не понятно. почему при начальном расчете разбивает страницы по одному, а при самой печати по-другому. проблема у многих знакомых, причем возникла буквально недавно, ни у кого больше нет этой проблемы?
12. Aleksey_3 11.07.13 13:03 Сейчас в теме
У меня похожее в 3.0, правда не полстраницы а всего лишь 1 + итог, причем и в торг-12 и фактуре (особенно когда много строк с длинным наименованием товара). Пока что лечу это костылями, т.е. в коде в месте проверитьВывод тупо добавляю пару строк в области для проверки

// Проверим вывод
СтрокаСПодвалом = Новый Массив;
Если НомерСтроки = 1 Тогда
СтрокаСПодвалом.Добавить(ОбластьМакетаЗаголовокТаблицы); // если первая строка, то должен
КонецЕсли; // помещаться заголовок
СтрокаСПодвалом.Добавить(ОбластьМакетаСтрока);

//костыль добавим еще пару строк
СтрокаСПодвалом.Добавить(ОбластьМакетаСтрока);
СтрокаСПодвалом.Добавить(ОбластьМакетаСтрока);


СтрокаСПодвалом.Добавить(ОбластьМакетаИтогоПоСтранице);
...
Если НЕ ОбщегоНазначенияБПВызовСервера.ПроверитьВыводТабличногоДокумента(ТабличныйДокумент, СтрокаСПодвалом) Тогда
13. Aleksey_3 12.07.13 18:12 Сейчас в теме
А вот и у моих бухов на 2.0 такая же печалька постигла

на первый страниц 19 позиций
на второй странице 8 позиций
и на третий 5 позиций

причем это именно не попадание на листа, как в БП 3.0, он каждый лист подписывает, лист 2, лист 3. т.е. будем разбираться
14. Eugenered 15.07.13 10:10 Сейчас в теме
Aleksey_3, если что отписывайтесь, тоже интересует решение этой проблемы. Думаю она у всех, просто еще не все заметили.
15. Akuji 22 15.07.13 16:48 Сейчас в теме
то же недавно вылезла (после одного из обновлений) пользователь не менялся и принтер то же, но печатает криво
16. Akuji 22 16.07.13 09:56 Сейчас в теме
ап, у кого еще в 2.0.49.15 криво печатается с большим количеством строк?
17. melenaspb 208 16.07.13 10:55 Сейчас в теме
(16) Akuji,

Собственно 2.0.49.15 здесь ни причем, у нас проблема вылезла давно, еще в прошлом году.
Мне казалось это пошло когда 1С переделала печать счета-фактуры, стали разбивать на страницы автоматом, как в ТОРГ-12.
18. Akuji 22 16.07.13 11:07 Сейчас в теме
(17) melenaspb, может и не при чем но появилось как и с автором темы после одного из недавних обновлений. На разных компьютерах, базах, пользователях...
19. Eugenered 16.07.13 11:10 Сейчас в теме
а у нас вот как раз недавно вылезло, и у всех знакомых, не в последнем, конечно, релизе, но совсем недавно
20. Akuji 22 16.07.13 11:47 Сейчас в теме
вот если переместить несколько строк из одного места программы в другое то печатает хорошо, но хотелось бы оставить типовой
21. Паланик 8 17.07.13 06:39 Сейчас в теме
Никто не писал письмо в 1С по этому поводу? Тоже у нескольких клиентов после обновления такая хлебня.
(20) Akuji, в чем причина-то говоришь?
22. Eugenered 17.07.13 08:03 Сейчас в теме
похоже обращений либо не было, либо они еще не обработаны, т.к. в проблемных ситуациях релиза ничего не говорится о печати сч/ф.(20)Akuji, да, хотелось бы знать что на это влияет, какие строки нужно переместить?
23. Akuji 22 17.07.13 09:22 Сейчас в теме
В модуле документа СчетФактураВыданный
в функции ПечатьСчетФактуры1137
Перед началом цикла
Для каждого Строчка Из ВыборкаСтрокТовары Цикл
НомерСТроки = НомерСтроки + 1;
ОбластьМакета.Параметры.Заполнить(Строчка); 

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

	Если ТипЗнч(ДокументОснование) <> Тип("ДокументСсылка.ОказаниеУслуг") Тогда
		ТабДокумент.ВерхнийКолонтитул.Выводить          = Истина;
		ТабДокумент.ВерхнийКолонтитул.НачальнаяСтраница = 2;
		ТабДокумент.ВерхнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Низ;
		ТабДокумент.ВерхнийКолонтитул.ТекстСлева   = ЗаголовокДляПечати;
		ТабДокумент.ВерхнийКолонтитул.ТекстСправа  = "Лист [&НомерСтраницы]";
	КонецЕсли;

Показать
31. Aleksey_3 24.07.13 01:26 Сейчас в теме
Итак для исправления этого безобразия нам понадобиться внести изменения в конфигураторе, а именно в модуле объекта счет-фактуры выданной. Ищем там функцию ПечатьСчетаФактуры1137 и в третей строкой вставляем...

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

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

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

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


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


И всё проблема решена. (спасибо Akuji, в (23) он правильно нашел кусок кода)



А теперь немного порассуждаем что же происходит

Итак 1С в начале процедуры инициализирует макет, далее в процессе вывода она проверяет а помещается ли наша строка на страницу, и если не помещается, то создает новую страницу, и на новой страницы выводит заголовок и очередную строку

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

Вот для этого в самом начале мы говорим 1С какие поля должны быть у нашего документа, и после этого 1С уже корректно сделает разбивку по страницам. Собственно чем полнее и точнее мы зададим параметры страницы тем правильнее будет отрабатывать функция проверитьВывод, вот поэтому мы и добавили размер колонтитула и автомасштаб



Пару слов по поводу удаления последних строк в конце функции. Я так и не смог корректно заставить работать функцию "ИмяПараметровПечати" (хотя начиная с версии 8.2 правильнее писать КлючПараметровПечати, но это так к слово), т.е. ему пофиг на мои параметры, как только я пишу ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура1137", то он удаляет все мои настройки печати и "восстанавливает" свои сохраненые, из за этого несмотря на то что разбивка идет по другому, но на экран в параметры страницы записываются совсем уж левые параметры, которые сохранены в ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура1137" и как их там программно менять я не нашел (меняются только при интерактивном изменении параметров страницы). Поэтому для достижения стабильного результата, удаляем эту строку от греха подальше. Это приведет лишь к тому что он не будет сохранять изменения параметров заданных вручную пользователем, а всегда будет выводить новую печатную форму исходя из тех параметров которые мы задали в начале процедуры.

P.S. Загрузил изменения в рабочую базу, посмотрим что бухи скажут
MikZ; melenaspb; Koles; +3 Ответить
24. Akuji 22 17.07.13 09:25 Сейчас в теме
ну может это не оптимально... но как то так...
по ходу проблема в верхних колонтитулах, в блоке Если
25. rus1979 18.07.13 07:53 Сейчас в теме
Счет-фактура и корректировочный счет-фактура
Прикрепленные файлы:
SF_1137_19012012.rar
26. Eugenered 18.07.13 08:02 Сейчас в теме
(25)rus1979, вы прикрепили сч/ф с исправлением обсуждаемой ошибки, или это просто сохранившийся вариант правильно работающей печатной формы?
27. rus1979 19.07.13 16:28 Сейчас в теме
Это счет фактура выложенная в пользовательском сайте 1с.
28. Akuji 22 19.07.13 16:38 Сейчас в теме
29. Akuji 22 19.07.13 16:43 Сейчас в теме
хотя от 190112... наврен это не то
30. likelol.91 19.07.13 16:46 Сейчас в теме
Добрый день! у моих клиентов та же проблема, что же делать? ждать новый релиз?
32. Akuji 22 24.07.13 09:03 Сейчас в теме
"в ближайших релизах" обещали исправить...
33. Eugenered 24.07.13 15:05 Сейчас в теме
Спасибо Aleksey_3 и Akuji за помощь в разборе ситуации и нахождении обхода этой ошибки, думаю многим будет полезно до выхода релиза.
34. Паланик 8 15.08.13 14:54 Сейчас в теме
Кстати, клиент обновился на последних релизах, но проблема не ушла. Походу конфу таки придется править...
35. Чужой 16.08.13 00:16 Сейчас в теме
(34) Паланик, а внешней печатной формой не проще сделать? и конфу править не придется
36. Aleksey_3 16.08.13 00:23 Сейчас в теме
(35) нет не проще.

сколько у тебя уйдет на копипаст модулей во внешнюю форму. Плюс переписывание под логику внешней печатной формы. Ну полчаса как минимум уйдёт на написания и отладку.

А тут работы на 10 секунд, скопипастить код и заремить вторую часть.

И ты спрашиваешь не проще ли то что можно сделать за 10 секунд сделать за полчаса?
37. CnupT 69 16.08.13 09:34 Сейчас в теме
(36) Aleksey_3, во-первых, на сайте 1С есть готовая внешняя печатная форма СФ1137, т.е. копировать ничего не придется.
Во-вторых, время, потраченное на анализ изменений модулей и в 2-3 увеличившееся время анализа конфигураций при обновлении перечеркнет всю вашу 10ти секундную выгоду.
39. Aleksey_3 16.08.13 17:08 Сейчас в теме
(37) а что там анализировать, он же по каждой процедуре показывает, накрайняк обновил все, потом 5секунд на копипаст
38. Чужой 16.08.13 11:41 Сейчас в теме
(36) Aleksey_3, и в третьих, вот рекомендую, не на правах рекламы, http://infostart.ru/public/162019/
очень неплохая вещь. С ее помощью получить внешнюю печатную форму практически любого документа - ну минут пять. Вначале не понял, но потом разобрался как работает и мне понравилось. И я предпочитаю из-за таких мелочей не снимать конфу с типовой. Согласен с (37), чем больше изменений тем сложнее анализировать. Тем более когда запарки и время поджимает.
40. Aleksey_3 01.09.13 14:52 Сейчас в теме
Ура в версии 2.0.51 1С переделали вывод на печать


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

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

Если ТипЗнч(ДокументОснование) <> Тип("ДокументСсылка.ОказаниеУслуг") Тогда
ТабДокумент.ВерхнийКолонтитул.Выводить = Истина;
ТабДокумент.ВерхнийКолонтитул.НачальнаяСтраница = 2;
ТабДокумент.ВерхнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Низ;
ТабДокумент.ВерхнийКолонтитул.ТекстСлева = ЗаголовокДляПечати;
ТабДокумент.ВерхнийКолонтитул.ТекстСправа = "Лист [&НомерСтраницы]";
КонецЕсли;


Для реализации товаров почему то не работает ((
FaKer1980; +1 Ответить
42. Brovin 04.09.13 08:19 Сейчас в теме
опа, тупанул, не туда код вставил, пардон
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот