Может быть у кого-то такая же проблема. С недавнего времени при печати выданного счет-фактуры в БП 2.0 (на данный момент 2.0.49.15) происходит непонятное разбитие страницы при печати документа с большим количеством позиций. При нажатии кнопки "печать" вылазит красивая печатная форма счет-фактуры, а при выводе на печать на принтер эти страницы дополнительно разбиваются. Есть предположение, что неправильно работает механизм проверки влазит ли информация на страницу. Получается, например, изначально программа счет-фактуру на 2 страницы. Но при печати 1 страница не влазит полностью, она переносится на 2-ую, выводит например несколько строк, потом печатается 2-ая страница на следующем листе. напечатанной она выглядит так - на первой странице полностью забит лист, на второй например наполовину, на 3-ей опять полностью и так далее.
Может быть кто-то сталкивался с таким? Проблема не у меня одного, а еще у многих знакомых.
У меня такое было только если когда выводится печатная форма ориентация одна а при непосредственной печати ориентация уже другая.
Если потом опять вывести на печать уже с верной (последней запомненной) то все ок.
Самоликвидация заключается только в том что 1С запоминает для каждого вида документа последнюю настройку печати, поэтому когда конфа обновилась настройки слетели, или пользователь стал новым, восстановили вот Вам и самоликвидация. Здесь другйо вопрос здесь именно расчет того поместится или нет. Я долго по коду лазил. Там есть расчет но логику его понять было очень трудно.
Проблема не в том. Саму печатную форму программа формирует правильно, на новые страницы переход сделан вовремя,
но эта же форма в предварительном просмотре выглядит уже так красиво - первая страница нормально, на второй одна или две строки, потом снова более-менее нормальная страница, потом опять несколько строк.
Т.е программно разбито на страницы правильно, разделитель вставлен куда нужно, а при выводе на печать все плывет и не помещается. Почему не помещается , и что влияет , вот вопрос.
Стандартная функция ТабДокумент.ПроверитьВывод должна же использовать настройки принтера?
(7) Guyer, еще раз говорю, копай настройки печати и насттройки самого принтера. если полстраницы переносится на другой лист это одно, а если пару строк снизу уходят - это другое. а определяет не 1с, а менеджер печати винды, ну или линухи, смотря что у тебя стоит. единственный вариант - это настройка самого макета на разделители и переносы, но у СФ это все стандартное
melenaspb, да, вы меня правильно поняли. вот только в чем проблема, не понятно. почему при начальном расчете разбивает страницы по одному, а при самой печати по-другому. проблема у многих знакомых, причем возникла буквально недавно, ни у кого больше нет этой проблемы?
У меня похожее в 3.0, правда не полстраницы а всего лишь 1 + итог, причем и в торг-12 и фактуре (особенно когда много строк с длинным наименованием товара). Пока что лечу это костылями, т.е. в коде в месте проверитьВывод тупо добавляю пару строк в области для проверки
// Проверим вывод
СтрокаСПодвалом = Новый Массив;
Если НомерСтроки = 1 Тогда
СтрокаСПодвалом.Добавить(ОбластьМакетаЗаголовокТаблицы); // если первая строка, то должен
КонецЕсли; // помещаться заголовок
СтрокаСПодвалом.Добавить(ОбластьМакетаСтрока);
//костыль добавим еще пару строк
СтрокаСПодвалом.Добавить(ОбластьМакетаСтрока);
СтрокаСПодвалом.Добавить(ОбластьМакетаСтрока);
СтрокаСПодвалом.Добавить(ОбластьМакетаИтогоПоСтранице);
...
Если НЕ ОбщегоНазначенияБПВызовСервера.ПроверитьВыводТабличногоДокумента(ТабличныйДокумент, СтрокаСПодвалом) Тогда
Собственно 2.0.49.15 здесь ни причем, у нас проблема вылезла давно, еще в прошлом году.
Мне казалось это пошло когда 1С переделала печать счета-фактуры, стали разбивать на страницы автоматом, как в ТОРГ-12.
(17) melenaspb, может и не при чем но появилось как и с автором темы после одного из недавних обновлений. На разных компьютерах, базах, пользователях...
похоже обращений либо не было, либо они еще не обработаны, т.к. в проблемных ситуациях релиза ничего не говорится о печати сч/ф.(20)Akuji, да, хотелось бы знать что на это влияет, какие строки нужно переместить?
Итак для исправления этого безобразия нам понадобиться внести изменения в конфигураторе, а именно в модуле объекта счет-фактуры выданной. Ищем там функцию ПечатьСчетаФактуры1137 и в третей строкой вставляем...
И всё проблема решена. (спасибо Akuji, в (23) он правильно нашел кусок кода)
А теперь немного порассуждаем что же происходит
Итак 1С в начале процедуры инициализирует макет, далее в процессе вывода она проверяет а помещается ли наша строка на страницу, и если не помещается, то создает новую страницу, и на новой страницы выводит заголовок и очередную строку
И всё бы хорошо, до того момента пока не доходим до конца вывода, где мы говорим, что "а теперь нужно отсупить сверху 13 строк (ТабДокумент.ПолеСверху = 13;)", НО (!) у нас же уже создана своя разбивка под старые границы, вот и получается что с новыми параметрами у нас строки "съезжают" на следующую страницу.
Вот для этого в самом начале мы говорим 1С какие поля должны быть у нашего документа, и после этого 1С уже корректно сделает разбивку по страницам. Собственно чем полнее и точнее мы зададим параметры страницы тем правильнее будет отрабатывать функция проверитьВывод, вот поэтому мы и добавили размер колонтитула и автомасштаб
Пару слов по поводу удаления последних строк в конце функции. Я так и не смог корректно заставить работать функцию "ИмяПараметровПечати" (хотя начиная с версии 8.2 правильнее писать КлючПараметровПечати, но это так к слово), т.е. ему пофиг на мои параметры, как только я пишу ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура1137", то он удаляет все мои настройки печати и "восстанавливает" свои сохраненые, из за этого несмотря на то что разбивка идет по другому, но на экран в параметры страницы записываются совсем уж левые параметры, которые сохранены в ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура1137" и как их там программно менять я не нашел (меняются только при интерактивном изменении параметров страницы). Поэтому для достижения стабильного результата, удаляем эту строку от греха подальше. Это приведет лишь к тому что он не будет сохранять изменения параметров заданных вручную пользователем, а всегда будет выводить новую печатную форму исходя из тех параметров которые мы задали в начале процедуры.
P.S. Загрузил изменения в рабочую базу, посмотрим что бухи скажут
сколько у тебя уйдет на копипаст модулей во внешнюю форму. Плюс переписывание под логику внешней печатной формы. Ну полчаса как минимум уйдёт на написания и отладку.
А тут работы на 10 секунд, скопипастить код и заремить вторую часть.
И ты спрашиваешь не проще ли то что можно сделать за 10 секунд сделать за полчаса?
(36) Aleksey_3, во-первых, на сайте 1С есть готовая внешняя печатная форма СФ1137, т.е. копировать ничего не придется.
Во-вторых, время, потраченное на анализ изменений модулей и в 2-3 увеличившееся время анализа конфигураций при обновлении перечеркнет всю вашу 10ти секундную выгоду.
(36) Aleksey_3, и в третьих, вот рекомендую, не на правах рекламы, http://infostart.ru/public/162019/ очень неплохая вещь. С ее помощью получить внешнюю печатную форму практически любого документа - ну минут пять. Вначале не понял, но потом разобрался как работает и мне понравилось. И я предпочитаю из-за таких мелочей не снимать конфу с типовой. Согласен с (37), чем больше изменений тем сложнее анализировать. Тем более когда запарки и время поджимает.