7.7 Итог по столбцу

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем pavilion, 14 апр 2015.

  1. TopicStarter Overlay
    pavilion
    Offline

    pavilion

    Регистрация:
    14 апр 2015
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Возникла необходимость подсчитать Сумму по столбцу по каждой фирме.
    По первой колонке получилась считать, но как то не правильно считалось,
    Колонок может быть одна, а может быть и 5.
    Все пересмотрел, ничего не получается.

    Код:
    Процедура Сформировать()
        Запрос = СоздатьОбъект("Запрос");
        ТекстЗапроса =
        "//{{ЗАПРОС(Сформировать)
        |Период с НачДата по КонДата;
        //|Без Итогов;
        |Обрабатывать НеПомеченныеНаУдаление;
        |Контрагент    = Регистр.ВзаиморасчетыПокупателей.Контрагент,        Регистр.ВзаиморасчетыПоставщиков.Контрагент;
        |Фирма         = Регистр.ВзаиморасчетыПокупателей.Фирма,            Регистр.ВзаиморасчетыПоставщиков.Фирма;
        |ДолгПокуп    = Регистр.ВзаиморасчетыПокупателей.Долг;
        |ДолгПост    = Регистр.ВзаиморасчетыПоставщиков.Долг;
        |Условие (Фирма в ВыбФирма);
        |Условие (Контрагент в ВыбКлиенты);
        |Функция КонДолг = КонОст(ДолгПокуп);
        |Функция КонДолгПост = КонОст(ДолгПост);
        |Группировка Контрагент без групп;
        |Группировка Фирма Все ВошедшиеВзапрос;
        |"
        ;
    
        Если Запрос.Выполнить(ТекстЗапроса)=0 тогда
            Предупреждение("Запрос по Контрагентам не выполнился!");
            Возврат;
        КонецЕсли;
        Таб = СоздатьОбъект("Таблица");
        н=0;
        ТЗ = СоздатьОбъект("ТаблицаЗначений");
        Запрос.Выгрузить(ТЗ);
        ТЗ.ВыбратьСтроку();
    
        Таб.ИсходнаяТаблица("Взаиморасчеты");
        Таб.ВывестиСекцию("Шапка|Список");
        Пока Запрос.Группировка(1)=1 Цикл
                Пока Запрос.Группировка(2)=1 Цикл
                    Таб.ПрисоединитьСекцию("Шапка|Фирм");
                КонецЦикла;
                Прервать;
        КонецЦикла;
        Запрос.вНачалоВыборки();      
        Пока Запрос.Группировка(1)=1 Цикл
            н=н+1;
            Таб.ВывестиСекцию("Строка|Список");
                Пока Запрос.Группировка(2)=1 Цикл
                    Таб.ПрисоединитьСекцию("Строка|Фирм");
                КонецЦикла;
        КонецЦикла;
    
    Таб.Опции(1,1,10,,,,,);
    Таб.Показать("Взаиморасчеты", "");
    КонецПроцедуры
    Последнее редактирование модератором: 14 апр 2015
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    О каких колонках идет речь и где не заполняется? Там где вы смотрите в ТаблицеЗначений или уже после вывода в обычную таблицу?
  3. Artem_A
    Offline

    Artem_A

    Регистрация:
    16 июн 2016
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Подскажите пожалуйста. Как решили проблему?
  4. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.443
    Симпатии:
    376
    Баллы:
    104
    а чём там сложность то? ТС изначально запрос написал без итогов
    Код:
        //|Без Итогов;
    потом это дело закомментировал, типа включил

    но вывод то строки "Итого" сам по себе не появится же, не так ли?
  5. Artem_A
    Offline

    Artem_A

    Регистрация:
    16 июн 2016
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    У меня ситуация чуть другая. Мне нужно выводить итоги по группам товара. При условии что колонок "Мес" может быть сколько угодно.
    Запрос=СоздатьОбъект("Запрос");
    Если КонДата>ПолучитьДатуТА() Тогда
    Сообщить("Период задан некорректно !!!");
    Возврат;
    ИначеЕсли КонДата<=ПолучитьДатуТА() Тогда
    ТекстЗапроса="
    |Период С Начдата По КонДата;";
    КонецЕсли;
    ТекстЗапроса=ТекстЗапроса+"
    |ОбрабатыватьДокументы Проведенные;
    |Покупатель=
    |Документ.ПродажаНал.Партнер,
    |Документ.ПродажаКредит.Партнер,
    |Документ.яВозвратПродажиСВыплатой.Партнер,
    |Документ.ВозвратПродажиБезВыплаты.Партнер;
    |Док=Документ.ПродажаНал.ТекущийДокумент,
    |Документ.ПродажаКредит.ТекущийДокумент,
    |Документ.яВозвратПродажиСВыплатой.ТекущийДокумент,
    |Документ.ВозвратПродажиБезВыплаты.ТекущийДокумент;
    |Склад=Документ.ПродажаНал.Склад2,
    |Документ.ПродажаКредит.Склад2,
    |Документ.яВозвратПродажиСВыплатой.Склад2,
    |Документ.ВозвратПродажиБезВыплаты.Склад2;
    |Прих=Документ.ПродажаНал.Прих,
    |Документ.ПродажаКредит.Прих,
    |Документ.яВозвратПродажиСВыплатой.Прих,
    |Документ.ВозвратПродажиБезВыплаты.Прих;
    |Товар=Документ.ПродажаНал.Товар,
    |Документ.ПродажаКредит.Товар,
    |Документ.яВозвратПродажиСВыплатой.товар,
    |Документ.ВозвратПродажиБезВыплаты.товар;
    |ТоргПр=Документ.ПродажаНал.ТоргПр,
    |Документ.ПродажаКредит.ТоргПр,
    |Документ.яВозвратПродажиСВыплатой.ТоргПр,
    |Документ.ВозвратПродажиБезВыплаты.ТоргПр;
    |ПрихЦена=Документ.ПродажаНал.ПрихЦена,
    |Документ.ПродажаКредит.ПрихЦена,
    |Документ.яВозвратПродажиСВыплатой.ПрихЦена,
    |Документ.ВозвратПродажиБезВыплаты.ПрихЦена;
    |ОтпЦена=Документ.ПродажаНал.ОтпЦена,
    |Документ.ПродажаКредит.ОтпЦена,
    |Документ.яВозвратПродажиСВыплатой.ОтпЦена,
    |Документ.ВозвратПродажиБезВыплаты.ОтпЦена;
    |Кол=Документ.ПродажаНал.КолШт,
    |Документ.ПродажаКредит.КолШт;
    ////|КолШтВозвр=Документ.яВозвратПродажиСВыплатой.КолШт,
    //// |Документ.ВозвратПродажиБезВыплаты.КолШт;
    |";
    ДобавитьУсловияЗапроса();
    //
    ТекстЗапроса=ТекстЗапроса+"
    |Группировка Товар все вошедшиеВзапрос;
    |Группировка "+СписПериоды.ПолучитьЗначение(СписПериоды.ТекущаяСтрока())+" все;
    |Функция НачОстКол=НачОст(Кол);
    |Функция ПрихКол=Приход(Кол);
    |Функция РасхКол=Расход(Кол);
    |Функция КонОстКол=КонОст(Кол);
    |Функция ОбщКол=Сумма(Кол*ПрихЦена);
    |";
    Флаг=Запрос.Выполнить(ТекстЗапроса);
    Если Флаг=0 Тогда Возврат; КонецЕсли;
    ЧислоСтрок=0;
    ПрихСуммаРасх=0;
    //
    Пока Запрос.Группировка(1) = 1 Цикл
    Если Запрос.Товар.ЭтоГруппа()=1 тогда
    Если Запрос.Товар.Уровень()=1 тогда
    Наме=запрос.товар;
    Таб.ВывестиСекцию("Группа|Основа");

    Продолжить;
    ИначеЕсли Запрос.Товар.Уровень()=2 тогда
    Наме=запрос.товар;
    Таб.ВывестиСекцию("ПодГруппа|Основа");
    Продолжить;
    КонецЕсли;
    КонецЕсли;

    Таб.ВывестиСекцию("Строка|Основа");
    Пока Запрос.Группировка(2) = 1 Цикл
    Таб.ПрисоединитьСекцию("Строка|Месяц");
    КонецЦикла;
    Таб.ПрисоединитьСекцию("Строка|КонОст");
    КонецЦикла;
    --- Объединение сообщений, 20 июн 2016 ---
    Если не сложно подскажите как сделать итоги по группам
    Последнее редактирование: 20 июн 2016
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Выгружать в таблицузначений и сворачивать
    Николай7 нравится это.

Поделиться этой страницей