Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
17 Дек 2017, 19:04
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: В таблице отчета не отображается секция "Подвал"  (Прочитано 2676 раз)

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

Оффлайн IpolitV

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Я ведь только учусь...
  • Регистрация: 2014-06-04
  • Сайт: 
  • Профессия: Ученик 1С
Платформа 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

  • Модератор
  • *****
  • Сообщений: 1308
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
Почему секция подвал выводиться в циклах, а шапка за циклом? Это точно так и надо?
Почему секции Клиент и КлиентСумма также должно выводиться в каждой строке или там все таки должна выводиться только секция Строка?
Для начала попробуйте вывести секцию Подвал после всех циклов, может все таки так Вам необходимо.
И если не секрет, то покажите результат который вы получаете, т.е. саму печатную форму.

Оффлайн Кошки рулят

  • ***
  • Сообщений: 109
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-01-07
  • Сайт: 
Почему секция подвал выводиться в циклах

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

Оффлайн IpolitV

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Я ведь только учусь...
  • Регистрация: 2014-06-04
  • Сайт: 
  • Профессия: Ученик 1С
Цитата: has link=topic=40288.msg113169#msg113169
Почему секция подвал выводиться в циклах, а шапка за циклом? Это точно так и надо?
Почему секции Клиент и КлиентСумма также должно выводиться в каждой строке или там все таки должна выводиться только секция Строка?
Для начала попробуйте вывести секцию Подвал после всех циклов, может все таки так Вам необходимо.
И если не секрет, то покажите результат который вы получаете, т.е. саму печатную форму.
За секцию в циклах это я просмотрел, простите. Я исправил и вынес функцию за цикл но секция "подвал" так и не появилась в отчете.

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

Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1308
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
Я исправил и вынес функцию за цикл но секция "подвал" так и не появилась в отчете.
Код покажите. И скрин таблицы в конфигураторе тоже желательно


Оффлайн IpolitV

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Я ведь только учусь...
  • Регистрация: 2014-06-04
  • Сайт: 
  • Профессия: Ученик 1С
Я исправил и вынес функцию за цикл но секция "подвал" так и не появилась в отчете.
Код покажите. И скрин таблицы в конфигураторе тоже желательно
Процедура Сформировать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

  • Модератор
  • *****
  • Сообщений: 1308
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
Может итоговых сумм нету просто? Вобще отладчиком пройтись и посмотреть

Оффлайн IpolitV

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Я ведь только учусь...
  • Регистрация: 2014-06-04
  • Сайт: 
  • Профессия: Ученик 1С
Может сумм и нет но хоть что-то должно вывести в секции, хотя бы слово "итого:". Но ничего же не выводится. Попробую отладчиком пройтись конечно, в общем посмотри что этот даст. Спасибо за советы. По результату отпишусь может кому то пригодится в будущем.
Добавлено: 13 Июн 2014, 17:50

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

Последний раз редактировалось: IpolitV; 13 Июн 2014, 17:50. Причина: Объединение сообщений

Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1308
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
То код который я показывал почему то не учитывался в обработке, а считалась совсем другая процедура вывода данных. Вот как то так.
"Интересно девки пляшут"©


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
145 Сообщений
AIFrame
63 Сообщений
ilyay ilyay
63 Сообщений
alex0402
50 Сообщений
andron81_81
44 Сообщений
oleg-x
42 Сообщений
BuhRust
32 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
Golickoff Golickoff
28 Сообщений
alexandr_ll
24 Сообщений

* Кто онлайн

  • Точка Гостей: 261
  • Точка Скрытых: 0
  • Точка Пользователей: 7
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal