Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
15 апр 2025, 13:31

В таблице отчета не отображается секция "Подвал"

Автор IpolitV, 04 июн 2014, 16:26

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

IpolitV

Платформа 7.7 (7.70.027) конфигурация Склад(самописная)
Проблема довольно таки интересная. В коде все прописано как по мне правильно. При формировании таблицы нужно вывести секцию "подвал" в которой подбиваются итоги по колонкам. Секция в таблице есть она заполнена, в коте она прописана но в таблицу после формирования секция "подвал" не выводится. В чем может быть проблема?
Код процедуры формирования таблицы:
[size=12pt]Процедура Сформировать2()         Перем стр;     Перем зпр;     Перем таб;        Перем ОтчОплатил;     Перем ОтчДолг;     Перем ОтчСумма;     Перем ПП;                    Перем а;     Перем клиент;     Перем клиентВыв;            Перем ОтчСумма2;        Перем ОтчОплатил2;     Перем ОтчДолг2;         таб = СоздатьОбъект("Таблица");     таб.ВывестиСекцию("Шапка");         зпр = СоздатьОбъект("Запрос");         стр = "Период С НаДату По ПоДату;     |QПартнер = Документ.СписаниеПартий.Партнер;     |QДок = Документ.СписаниеПартий.ТекущийДокумент;     |QДокОплата = Документ.СписаниеПартий.Оплата;     |QОплатаДок = Документ.СписаниеПартий.ОплатаДок;     |Группировка QПартнер Упорядочить по QПартнер.Наименование Без Групп;     |Группировка QДок;     |Условие (ПроверитьПредставителя(QДок) = 1);";         клиент = 0;         Если зпр.Выполнить(стр) = 1 Тогда                 Пока зпр.Группировка("QПартнер") = 1 Цикл                         ОтчСумма2 = 0;             ОтчОплатил2 = 0;             ОтчДолг2 = 0;             ПП = 0;                         клиентВыв = 0;                          клиентВыв2 = 0;                         Пока зпр.Группировка("QДок") = 1 Цикл                                 ОтчСумма = зпр.QДок.Итог("Сумма");                                 Если ПустоеЗначение(зпр.QОплатаДок) = 1 Тогда                     ОтчОплатил = 0;                     ОтчДолг = ОтчСумма;                              Иначе                            ОтчОплатил = ВзятьОплату(зпр.QОплатаДок, 0);                     ОтчДолг = ОтчСумма - ОтчОплатил;                 КонецЕсли;                                 а = 1;                                    Если (ПоказыватьНоли = 0) и (Окр(ОтчДолг, 3)  = 0) Тогда                                        а = 0;                                    КонецЕсли;                                 ОтчСумма2 = ОтчСумма2 + ОтчСумма;                 ОтчОплатил2 = ОтчОплатил2 + ОтчОплатил;                 ОтчДолг2 = ОтчДолг2 + ОтчДолг;                                 Если а = 1 Тогда                                                              Если клиент <> зпр.QПартнер Тогда                         Если клиентВыв = 0 Тогда                     Если (СчетчикСтрок > КолСтрок) Тогда                         СчетчикСтрок = 0;                             таб.ВывестиСекцию("Клиент");                             клиентВыв = 1;                         КонецЕсли;                     КонецЕсли;                  КонецЕсли;                                         ПП = ПП + 1;                     таб.ВывестиСекцию("Строка");                     Если Расшифровка = 1 Тогда                         ВзятьОплату(зпр.QОплатаДок, таб)                     КонецЕсли;                                     КонецЕсли;             КонецЦикла;                                          Если клиент <> зпр.QПартнер Тогда                 Если клиентВыв = 1 Тогда                     таб.ВывестиСекцию("КлиентСумма");                                         КонецЕсли;             КонецЕсли;                                      клиент = зпр.QПартнер;             ИтогоДолг = ИтогоДолг + Окр(ОтчДолг2, 2, 0);             ИтогоОплата = ИтогоОплата + Окр(ОтчОплатил2, 2, 0);            ИтогоСумма = ИтогоСумма + Окр(ОтчСумма2, 2, 0);            СчетчикСтрок = СчетчикСтрок + 1;               таб.ВывестиСекцию("Подвал");     таб.ТолькоПросмотр(1);     таб.ПараметрыСтраницы(1,100,1);     таб.Показать("");             КонецЦикла;     КонецЕсли;         Если (ПечатьАктаСверки = 0) И (ПоказыватьНоли = 0) И (Расшифровка = 0) Тогда        ФорматСуммы = Формат(ИтогоДолг, "Ч12.2"); //       ФорматСуммы = Формат(ИтогоОплата, "Ч12.2"); //       ФорматСуммы = Формат(ИтогоСумма, "Ч12.2"); //        ЧислоПередЗапятой = Сред(ФорматСуммы, 1, СтрДлина(ФорматСуммы)-3); //        ЧислоПослеЗапятой = Сред(ФорматСуммы, СтрДлина(ФорматСуммы) - 1, СтрДлина(ФорматСуммы)); //           КонецЕсли;         КонецПроцедур[/size]

has

Почему секция подвал выводиться в циклах, а шапка за циклом? Это точно так и надо?
Почему секции Клиент и КлиентСумма также должно выводиться в каждой строке или там все таки должна выводиться только секция Строка?
Для начала попробуйте вывести секцию Подвал после всех циклов, может все таки так Вам необходимо.
И если не секрет, то покажите результат который вы получаете, т.е. саму печатную форму.

Кошки рулят

Цитата: has от 05 июн 2014, 12:11Почему секция подвал выводиться в циклах

Он и показывает таблицу в цикле. Походу мультфильм рисует. Я вот сейчас тоже обдумываю одну похожую идейку с комиксом ...

IpolitV

Цитата: has link=topic=40288.msg113169#msg113169
Почему секция подвал выводиться в циклах, а шапка за циклом? Это точно так и надо?
Почему секции Клиент и КлиентСумма также должно выводиться в каждой строке или там все таки должна выводиться только секция Строка?
Для начала попробуйте вывести секцию Подвал после всех циклов, может все таки так Вам необходимо.
И если не секрет, то покажите результат который вы получаете, т.е. саму печатную форму.
За секцию в циклах это я просмотрел, простите. Я исправил и вынес функцию за цикл но секция "подвал" так и не появилась в отчете.

Цитата: has link=topic=40288.msg113169#msg113169Почему секции Клиент и КлиентСумма также должно выводиться в каждой строке или там все таки должна выводиться только секция Строка?
Так и должно быть. в примере печатной форме формы вы сейчас увидите. http://yadi.sk/d/zgJH8H_ZSMoKD
а такой по идее должна выглядеть печатная форма отчета (прошу прощения за мои художества) http://yadi.sk/d/EvzlAQJFSMoLA

has

Цитата: IpolitV от 05 июн 2014, 14:40Я исправил и вынес функцию за цикл но секция "подвал" так и не появилась в отчете.
Код покажите. И скрин таблицы в конфигураторе тоже желательно


IpolitV

Цитата: has от 06 июн 2014, 06:18
Цитата: IpolitV от 05 июн 2014, 14:40Я исправил и вынес функцию за цикл но секция "подвал" так и не появилась в отчете.
Код покажите. И скрин таблицы в конфигураторе тоже желательно
Процедура Сформировать2()         Перем стр;     Перем зпр;     Перем таб;        Перем ОтчОплатил;     Перем ОтчДолг;     Перем ОтчСумма;     Перем ПП;                    Перем а;     Перем клиент;     Перем клиентВыв;            Перем ОтчСумма2;        Перем ОтчОплатил2;     Перем ОтчДолг2;         таб = СоздатьОбъект("Таблица");     таб.ВывестиСекцию("Шапка");         зпр = СоздатьОбъект("Запрос");         стр = "Период С НаДату По ПоДату;     |QПартнер = Документ.СписаниеПартий.Партнер;     |QДок = Документ.СписаниеПартий.ТекущийДокумент;     |QДокОплата = Документ.СписаниеПартий.Оплата;     |QОплатаДок = Документ.СписаниеПартий.ОплатаДок;     |Группировка QПартнер Упорядочить по QПартнер.Наименование Без Групп;     |Группировка QДок;     |Условие (ПроверитьПредставителя(QДок) = 1);";         клиент = 0;         Если зпр.Выполнить(стр) = 1 Тогда                 Пока зпр.Группировка("QПартнер") = 1 Цикл                         ОтчСумма2 = 0;             ОтчОплатил2 = 0;             ОтчДолг2 = 0;             ПП = 0;                         клиентВыв = 0;                          клиентВыв2 = 0;                         Пока зпр.Группировка("QДок") = 1 Цикл                                 ОтчСумма = зпр.QДок.Итог("Сумма");                                 Если ПустоеЗначение(зпр.QОплатаДок) = 1 Тогда                     ОтчОплатил = 0;                     ОтчДолг = ОтчСумма;                              Иначе                            ОтчОплатил = ВзятьОплату(зпр.QОплатаДок, 0);                     ОтчДолг = ОтчСумма - ОтчОплатил;                 КонецЕсли;                                 а = 1;                                    Если (ПоказыватьНоли = 0) и (Окр(ОтчДолг, 3)  = 0) Тогда                                        а = 0;                                    КонецЕсли;                                 ОтчСумма2 = ОтчСумма2 + ОтчСумма;                 ОтчОплатил2 = ОтчОплатил2 + ОтчОплатил;                 ОтчДолг2 = ОтчДолг2 + ОтчДолг;                                 Если а = 1 Тогда                                                              Если клиент <> зпр.QПартнер Тогда                         Если клиентВыв = 0 Тогда                     Если (СчетчикСтрок > КолСтрок) Тогда                         СчетчикСтрок = 0;                             таб.ВывестиСекцию("Клиент");                             клиентВыв = 1;                         КонецЕсли;                     КонецЕсли;                  КонецЕсли;                                         ПП = ПП + 1;                     таб.ВывестиСекцию("Строка");                     Если Расшифровка = 1 Тогда                         ВзятьОплату(зпр.QОплатаДок, таб)                     КонецЕсли;                                     КонецЕсли;             КонецЦикла;                                          Если клиент <> зпр.QПартнер Тогда                 Если клиентВыв = 1 Тогда                     таб.ВывестиСекцию("КлиентСумма");                                         КонецЕсли;             КонецЕсли;                                      клиент = зпр.QПартнер;             ИтогоДолг = ИтогоДолг + Окр(ОтчДолг2, 2, 0);             ИтогоОплата = ИтогоОплата + Окр(ОтчОплатил2, 2, 0);            ИтогоСумма = ИтогоСумма + Окр(ОтчСумма2, 2, 0);            СчетчикСтрок = СчетчикСтрок + 1;                           КонецЦикла;     КонецЕсли;         Если (ПоказыватьНоли = 0) И (Расшифровка = 0) Тогда        ФорматСуммы = Формат(ИтогоДолг, "Ч12.2"); //       ФорматСуммы = Формат(ИтогоОплата, "Ч12.2"); //       ФорматСуммы = Формат(ИтогоСумма, "Ч12.2");         ЧислоПередЗапятой = Сред(ФорматСуммы, 1, СтрДлина(ФорматСуммы)-3);         ЧислоПослеЗапятой = Сред(ФорматСуммы, СтрДлина(ФорматСуммы) - 1, СтрДлина(ФорматСуммы));       // таб.ВывестиСекцию("Подвал")   КонецЕсли;   таб.ВывестиСекцию("Подвал");     таб.ТолькоПросмотр(1);     таб.ПараметрыСтраницы(1,100,1);     таб.Показать("")
Скрин отчета с конфигуратора
Ну и собственно сама обработка если кому интересно тут

has

Может итоговых сумм нету просто? Вобще отладчиком пройтись и посмотреть

IpolitV

Может сумм и нет но хоть что-то должно вывести в секции, хотя бы слово "итого:". Но ничего же не выводится. Попробую отладчиком пройтись конечно, в общем посмотри что этот даст. Спасибо за советы. По результату отпишусь может кому то пригодится в будущем.
Добавлено: 13 июн 2014, 17:50


Решение проблемы пришло после листинга в отладчике (Спасибо has ).
Если кому интересно. То код который я показывал почему то не учитывался в обработке, а считалась совсем другая процедура вывода данных. Вот как то так.

has

Цитата: IpolitV от 13 июн 2014, 09:00То код который я показывал почему то не учитывался в обработке, а считалась совсем другая процедура вывода данных. Вот как то так.
"Интересно девки пляшут"©

Теги:

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

Рейтинг@Mail.ru

Поиск