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

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

Автор 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

Поиск