Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
11 дек 2024, 10:27

Проблема при выводе на печать внешнего отчета

Автор DelphiN91, 13 авг 2014, 09:46

0 Пользователей и 1 гость просматривают эту тему.

DelphiN91

Добрый день!

Прошу помощи с проблемой при выводе на печать и просмотре бланка внешнего отчета. Проблема в следующем: делаю внешний отчет на основе "Справки о дебиторах" в "Регламентированных отчетах" типовой конфы "Бухгалтерия предприятия 2.0". Нужно было убрать ненужные столбцы и добавить строку "ИТОГО". При формировании отчета все проходит без ошибок, но при просмотре бланка или выводе его на печать строка "ИТОГО" многократно копируется (я так понял, чтобы заполнить область до низа печатной страницы).
Подозреваю, что где-то в коде модуля выбирается строка следующая после последней строки исходной таблицы (как на скриншоте - 25 строка таблицы) и клонируется чтобы заполнить место до низа страницы. Подозреваю, что где-то в этом коде нужно поставить "+1", чтобы выбиралась строка следующая после строки "ИТОГО". Но где поставить эту "+1" понять не могу.
Подскажите пожалуйста! Какой нужно код - предоставлю.

freez1301

у вас в макете параметр Итого (или как-то так) есть. И вот при формировании табличного док-та этот параметр выводится в цикле.
просто уберите из цикла его

DelphiN91

Подсчет суммы ИТОГО введен в цикл в процедуре ЗаполнитьАвто(). Вывод значения в отчет вынесен за цикл.

Цитировать
{...}

СуммаОтчета = 0;

{...}

мФормаОтчета.Области["П010000101004" + СтрСтр].Значение = ИтоговаяСумма;

СуммаОтчета = СуммаОтчета + ИтоговаяСумма;

КонецЦикла;

мФормаОтчета.Области["СуммаОтчета"].Значение = СуммаОтчета;

{...}

КонецПроцедуры


DelphiN91

Проблему решил. Убрал строку, которую добавлял в таблицу руками и добавил в код модуля автоматическое заполнение ИТОГО в конце таблицы.
ЦитироватьмФормаОтчета.Области["П010000101001" + СтрСтр].Значение = ТекПозиция;
   мФормаОтчета.Области["П010000101002" + СтрСтр].Значение = "ИТОГО:";
   мФормаОтчета.Области["П010000101003" + СтрСтр].Значение = СуммаОтчета;

Возник другой вопрос.
В случае, когда отчет не умещается на одну страницу, при разбиении на страницы, на каждой странице выводится шапка и подвал. Мне необходимо сделать чтобы на первой странице не выводился подвал, на промежуточных страницах (в случае, когда страниц больше двух) не выводились ни шапка, ни подвал, и на последней странице не выводилась шапка. Подскажите, в сторону каких функций/процедур мне посмотреть?

cska-fanat-kz

Цитата: DelphiN91 от 18 авг 2014, 10:22Мне необходимо сделать чтобы на первой странице не выводился подвал, на промежуточных страницах (в случае, когда страниц больше двух) не выводились ни шапка, ни подвал, и на последней странице не выводилась шапка. Подскажите, в сторону каких функций/процедур мне посмотреть?

1. Выводите шапку
2. В цикле выводите строки
3. Выводите подвал

в результате выполнятся все Ваши условия...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

DelphiN91

Я не пишу отдельный отчет, я, фактически, редактирую регламентированный отчет, выдраный из типовой конфы. Все функции/процедуры вывода на печать там уже есть, их мне и надо подправить. Но я никак не додумаюсь в какой конкретно процедуре мне копаться, все слишком непрозрачно. Либо сформированный табличный документ передается на разбиение и печать куда-то еще, в какие-то процедуры, не прописанные в модуле.

TreeDogNight

Скинь сюда все процедуры, связанные с печатью. Посмотрим что надо исправить..

DelphiN91

Понять бы еще какие вообще процедуры за это отвечают...

Цитата: Процедура Печать// Процедура управляет выводом отчета на печать.
//
// Параметры:
//  ВидПечати - строка, задающая способ печати:
//              "ПоказатьБланк" - непосредственный вывод на печать;
//              "ПечататьСразу" - с предварительным просмотром.
//
Процедура Печать(ВидПечати, ЧтоИскать = Неопределено) Экспорт

   Если ЧтоИскать = Неопределено Тогда
      Отказ = Ложь;
      РегламентированнаяОтчетность.ПередПечатьюРегламентированногоОтчета(ЭтаФорма, Отказ);
      Если Отказ Тогда
         Возврат;
      КонецЕсли;
   КонецЕсли;

   Если ЧтоИскать = Неопределено И НЕ РегламентированнаяОтчетность.ПринтерДоступен() Тогда
      Предупреждение("Перед формированием печатных форм необходимо определить в системе принтер и
                  |задать его в качестве используемого по умолчанию!");
      Возврат;
   КонецЕсли;
   
   Если ЧтоИскать <> Неопределено Тогда
      СтруктураПоиска = Новый Структура("ИмяТабличногоПоля, НаименованиеЛиста, ЧтоИскать", "ПолеТабличногоДокументаФормаОтчета", "Перечень предприятий-кредиторов", ЧтоИскать);
      РегламентированнаяОтчетность.роНайтиЗначение(ЭтаФорма, СтруктураПоиска);
      Возврат;
   КонецЕсли;
   
   мПечатныеФормы.Очистить();
   
   СтруктураПараметров = Новый Структура;
   СтруктураПараметров.Очистить();
   СтруктураПараметров.Вставить("НаименованиеЛиста",  "Перечень предприятий-кредиторов");
   СтруктураПараметров.Вставить("ОриентацияЛиста",    ОриентацияСтраницы.Портрет);
   СтруктураПараметров.Вставить("ИмяТабличногоПоля",  "ПолеТабличногоДокументаФормаОтчета");
   Структурапараметров.Вставить("ИмяОбластиТаблПоля", "");
   СтруктураПараметров.Вставить("ВидПечати",          ВидПечати);

   РегламентированнаяОтчетность.ВывестиНаПечатьЛистОбщая(ЭтаФорма, СтруктураПараметров);
   
   РегламентированнаяОтчетность.ПроставитьНомераЛистов(ЭтаФорма, ВидПечати, Ложь);

КонецПроцедуры // Печать()

Собственно, ничего больше непосредственно по печати в коде нет.
Есть подозрение, что строка
ЦитироватьРегламентированнаяОтчетность.ВывестиНаПечатьЛистОбщая(ЭтаФорма, СтруктураПараметров);
как раз и отвечает за передачу сформированного табличного документа куда-то наружу для предварительного просмотра и вывода на печать.

TreeDogNight

Хм... Можешь ещё выложить сюда скриншот самого макета.

DelphiN91

Этот?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск