Имя: Пароль:
1C
1С v8
Подсчет и вывод сумму по колонке в отчете
0 max805
 
26.07.17
03:07
Помогите пожалуйста вывести сумму по колонке в печатной форме. Уже голову сломал((
Процедура Отчет(ТабДок, Дата1, Дата2, Организация) Экспорт
    //{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(Отчет)
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

    Макет = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("Отчет");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Доверенность.Представление,
    |    Доверенность.Номер КАК Номер,
    |    Доверенность.Дата,
    |    Доверенность.ДатаОкончанияДействия как ДатаДействия,
    |   Доверенность.СуммаДокумента как СуммаДоверенности,
    |    СУММА(Доверенность.СуммаДокумента) КАК СуммаДокумента,
    |    Доверенность.ФизЛицо,
    |    ПРЕДСТАВЛЕНИЕ(Доверенность.ФизЛицо),
    |    Доверенность.Контрагент,
    |    ВЫРАЗИТЬ(Доверенность.Контрагент.НаименованиеПолное КАК СТРОКА(200)) КАК КонтрагентПредставление,
    |    ВЫРАЗИТЬ(Доверенность.ПоДокументу КАК СТРОКА(200)) КАК ПоДокументу,
    |    NULL КАК Расписка,
    |    NULL КАК Отметка,
    |    Доверенность.Ссылка
    |ИЗ
    |    Документ.ДоверенностьВыданная КАК Доверенность
    |ГДЕ
    |    Доверенность.Организация = &Организация
    |    И Доверенность.Дата МЕЖДУ &Дата1 И &Дата2"+
    ?(ЗначениеЗаполнено(Отчет.Контрагент),"    И Доверенность.Контрагент В ИЕРАРХИИ (&Контрагент)","")+
    ?(ЗначениеЗаполнено(Отчет.ФизЛицо),"    И Доверенность.ФизЛицо В ИЕРАРХИИ (&ФизЛицо)","")+    "
    |
    |СГРУППИРОВАТЬ ПО
    |    ВЫРАЗИТЬ(Доверенность.ПоДокументу КАК СТРОКА(200)),
    |    Доверенность.Представление,
    |    Доверенность.Номер,
    |    Доверенность.Дата,
    |    Доверенность.ДатаОкончанияДействия,
    |   Доверенность.СуммаДокумента,
    |    Доверенность.ФизЛицо,
    |    ВЫРАЗИТЬ(Доверенность.Контрагент.НаименованиеПолное КАК СТРОКА(200)),
    |    Доверенность.Ссылка,
    |    Доверенность.Контрагент
    |
    |УПОРЯДОЧИТЬ ПО
    |    Номер";

    //?(ЗначениеЗаполнено(Контрагент),"    И Доверенность.Контрагент В ИЕРАРХИИ &Контрагент","")+
    //?(ЗначениеЗаполнено(ФизЛицо),"    И Доверенность.ФизЛицо В ИЕРАРХИИ &ФизЛицо","")+    "

    Запрос.УстановитьПараметр("Дата1", НачалоДня(Дата1));
    Запрос.УстановитьПараметр("Дата2", КонецДня(Дата2));
    Запрос.УстановитьПараметр("Организация", Отчет.Организация);
    Запрос.УстановитьПараметр("Контрагент", Отчет.Контрагент);
    Запрос.УстановитьПараметр("ФизЛицо", Отчет.ФизЛицо);

    Результат = Запрос.Выполнить();

    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьПодвалТаблицы.Параметры.ИтогоСумма = Отчет.Итого("СуммаДокумента");
ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Очистить();
    ОбластьЗаголовок.Параметры.Организация = Отчет.Организация;
    ОбластьЗаголовок.Параметры.ЗаПериод = "период: "+ПредставлениеПериода(НачалоДня(Дата1), КонецДня(Дата2), "ФП = Истина");
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();

    ВыборкаДетали = Результат.Выбрать();

    Пока ВыборкаДетали.Следующий() Цикл
        ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали);
        ОбластьДетальныхЗаписей.Параметры.ФизЛицоПредставление = СокрЛП(ВыборкаДетали.ФизЛицоПредставление);
        ОбластьДетальныхЗаписей.Параметры.КонтрагентПредставление = СокрЛП(ВыборкаДетали.КонтрагентПредставление);
        ОбластьДетальныхЗаписей.Параметры.ПоДокументу = СокрЛП(ВыборкаДетали.ПоДокументу);
        ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетали.Уровень());
    КонецЦикла;

    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    
    ///Подвал
    ФИО = "";
    Должность = "";
    
    ТекПользователь = ПараметрыСеанса.ТекущийПользователь;
    
    Если ЗначениеЗаполнено(ТекПользователь) и Метаданные.Имя = "БухгалтерияПредприятия" и ЗначениеЗаполнено(ТекПользователь.ФизЛицо)  Тогда
        ДанныеФЛ = ОбщегоНазначения.ДанныеФизЛица(Организация,ТекПользователь.ФизЛицо,Дата2);
        ФИО=ДанныеФЛ.Представление;
        Должность=ДанныеФЛ.Должность;
    Иначе
        ФИО = СокрЛП(ТекПользователь);
    КонецЕсли;
    
    ОбластьПодвал.Параметры.ФИО = ФИО;
    ОбластьПодвал.Параметры.Должность = Должность;
    
    ТабДок.Вывести(ОбластьПодвал);

    //}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ
КонецПроцедуры
1 1dvd
 
26.07.17
06:10
Есть два варианта: простой и правильный.

1. В переменной просуммировать все суммыдокумента в отдельной переменной, затем засунуть в ОбластьПодвалТаблицы

2. В запрос добавить итоги общие, переписать обход результата запроса
2 max805
 
26.07.17
06:16
А вы может помоч как это сделать? я готов даже заплатить какую то сумму за помощ
3 Рэйв
 
26.07.17
06:30
(2)
//---------

ИтогСумма=0;
ВыборкаДетали = Результат.Выбрать();

Пока ВыборкаДетали.Следующий() Цикл
    .Заполнить(ВыборкаДетали);
    ОбластьДетальныхЗаписей.Параметры.ФизЛицоПредставление = СокрЛП(ВыборкаДетали.ФизЛицоПредставление);
    ОбластьДетальныхЗаписей.Параметры.КонтрагентПредставление = СокрЛП(ВыборкаДетали.КонтрагентПредставление);
    ОбластьДетальныхЗаписей.Параметры.ПоДокументу = СокрЛП(ВыборкаДетали.ПоДокументу);
    ИтогСумма=ИтогСумма+ВыборкаДетали.СуммаДокумента;
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетали.Уровень());
КонецЦикла;

ТабДок.ЗакончитьАвтогруппировкуСтрок();
//в область ОбластьПодвалТаблицы вставь параметр ИтогСумма

ОбластьПодвалТаблицы.Параметры.ИтогСумма=ИтогСумма;

ТабДок.Вывести(ОбластьПодвалТаблицы);
//---

деньги можешь перечислить в фонд мира:-)
4 max805
 
26.07.17
06:55
Огромное спасибо
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший