Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отчет за период с выводом на экран разбивкой по месяцам
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Constantus
Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)

Пусть имеется некий отчет, сделанный в Обработке с помощью запроса на базе некоего Макета...

Заголовок: с 01.01.2017 по 31.12.2017

Контрагент | Кол-во продаж |


Отчет работает. Как можно автоматически сделать этот же отчет, но только с разбивкой колонки "Кол-во продаж" по месяцам?

Аналогично типовому отчету "Продажи" с группировкой колонок по периоду "Месяц"

Т.е., у меня в макете прорисована колонка "Кол-во продаж", а тут получается ее надо будет типа клонировать...


Bernet
Constantus @ Сегодня, 11:31 необходимо зарегистрироваться для просмотра ссылки ,
В макет добавляете область. В шапке будете выводить например Месяц, в строке таб. части необходимую сумму. Область называете "ПродажиМесяц".
Запрос необходимо изменить таким образом чтобы был итог по ПериодуМесяцу. При обходе результата запроса в блоке обхода по месяцам каждый раз получаете область "ПродажиМесяц" - в шапке выводите просто месяц, в строке таб части выводите сумму.
В табличный документ выводите с помощью функции Присоеденить(), а не Вывести() чтобы не было переноса строки
Constantus
Bernet @ Сегодня, 13:38 необходимо зарегистрироваться для просмотра ссылки ,

А если у меня отчет делается по документам, а не регистрам, соответственно там нет итогов по ПериодМесяц?

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


Далее у меня идет перебор всех записей по данным условиям и их подсчет... Кол-во записей и выводится как итог кол-ва всех заказов... Как быть в этом случае с разбивкой по периоду?
salton
А может всетаки сделать по регистрам с отбором по типу док ЗаказПокупателя?
Bernet
Constantus @ Сегодня, 11:55 необходимо зарегистрироваться для просмотра ссылки ,
Запрос будет иметь примерно такой вид
Запрос = Новый Запрос;
Запрос.Текст =
    "ВЫБРАТЬ
    |    НАЧАЛОПЕРИОДА(ЗаказПокупателя.Ссылка.Дата, МЕСЯЦ) КАК ПериодМесяц,
    |    КОЛИЧЕСТВО( РАЗЛИЧНЫЕ ЗаказПокупателя.Ссылка) КАК Количество
    |ИЗ
    |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
    |ГДЕ
    |    ЗаказПокупателя.Проведен = ИСТИНА
    |    И ЗаказПокупателя.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Дата1, ДЕНЬ) И КОНЕЦПЕРИОДА(&Дата2, ДЕНЬ)
    |    И ЗаказПокупателя.Контрагент.Родитель = &Родитель
    |    И ЗаказПокупателя.Товары.Номенклатура В ИЕРАРХИИ(&Номенклатура)
    |СГРУППИРОВАТЬ ПО
    |    НАЧАЛОПЕРИОДА(ЗаказПокупателя.Ссылка.Дата, МЕСЯЦ)
    |ИТОГИ
    |ПО
    |    ПериодМесяц
    |";


выборка такой:
// в шапке по аналогии получаете область и выводите дату, столько раз сколько у вас месяцев в периоде

ВыборкаПоМесяцам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоМесяцам.Следующий() Цикл // ПРИСОЕДИНЕНИЕ КОЛОНКИ С КАЖДЫМ МЕСЯЦЕМ
    
    ОбластьМесяц = Макет.ПолучитьОбласть("ПериодМесяц");
    ОбластьМесяц.Параметры.Колво = ВыборкаПоМесяцам.Количество;
    ТабДок.Присоеденить(ОбластьМесяц);
    
КонецЦикла;
Constantus
Bernet @ Сегодня, 14:21 необходимо зарегистрироваться для просмотра ссылки ,


Метод объекта не обнаружен (Присоеденить)
ТабДок.Присоеденить(ОбластьМесяц);

Пишет вот такое...
Bernet
Constantus @ Сегодня, 13:34 необходимо зарегистрироваться для просмотра ссылки ,
ТабДок - это должен быть ваш табличный документ или поле табличного документа на форме, я дли примера написал, у вас имя скорее всего отличается,
ОбластьМесяц - это область из макета, назовите её "ПериодМесяц", получите как в коде:
Цитата
ОбластьМесяц = Макет.ПолучитьОбласть("ПериодМесяц");
и затем выводите куда надо
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.