Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Несколько периодов в одном отчете          
Михрутка Подменю пользователя
сообщение 01.04.17, 18:00
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 311
Из: Харьков
Спасибо сказали: 7 раз
Рейтинг: 0

1С 8.3 УТП 1.2.27.6
Делается выборка из РТиУ за заданный период. В таблицу выводиться количество документов за день и средняя сумма документов в заданном диапазоне суммы документов, т.е. например в диапазоне от 25 до 50 грн. получаем 20 документов и их среднее равно 33 грн. Необходимо выводить в отчете несколько периодов сразу, например 25-50 грн, 50-100 грн, 100-200 грн. и т.д. подскажите как это сделать?
Вот код для одного периода, как сделать несколько?
ВЫБРАТЬ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РеализацияТоваровУслуг.Ссылка) КАК Ссылка,
    РеализацияТоваровУслуг.Дата КАК Дата,
    НАЧАЛОПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ) КАК ДеньУчета,
    РеализацияТоваровУслуг.СуммаДокумента КАК СуммаДокумента,
    РеализацияТоваровУслуг.Подразделение КАК Подразделение,
    РеализацияТоваровУслуг.Склад,
    РеализацияТоваровУслугТовары.Номенклатура,
    ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Номенклатура),
    РеализацияТоваровУслуг.Представление,
    РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ), РеализацияТоваровУслуг.Дата, ЧАС) КАК Час
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        ПО РеализацияТоваровУслугТовары.Ссылка = РеализацияТоваровУслуг.Ссылка
ГДЕ
    РеализацияТоваровУслуг.Проведен = ИСТИНА

СГРУППИРОВАТЬ ПО
    РеализацияТоваровУслуг.Дата,
    РеализацияТоваровУслуг.Подразделение,
    РеализацияТоваровУслуг.Склад,
    РеализацияТоваровУслугТовары.Номенклатура,
    РеализацияТоваровУслуг.СуммаДокумента,
    РеализацияТоваровУслуг.Представление

УПОРЯДОЧИТЬ ПО
    Ссылка,
    СуммаДокумента
ИТОГИ
    СУММА(Ссылка),
    ВЫРАЗИТЬ(СРЕДНЕЕ(СуммаДокумента) КАК ЧИСЛО(6, 2)) КАК СуммаДокумента
ПО
    ОБЩИЕ,
    ДеньУчета,
    Подразделение,
    Дата,
    Час

Нонна Подменю пользователя
сообщение 03.04.17, 7:03
Сообщение #2

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 214
Из: Харьков
Спасибо сказали: 50 раз
Рейтинг: 0

Михрутка @ 01.04.17, 18:00 * ,
Можно попробовать поэкспериментировать с оператором ВЫБОР. Например, для подсчета количества документов в выбранных диапазонах:
ВЫБОР
        КОГДА Реализация.СуммаДокумента <= 50
                И Реализация.СуммаДокумента > 0
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ КАК Меньше50,
    ВЫБОР
        КОГДА Реализация.СуммаДокумента <= 250
                И Реализация.СуммаДокумента > 50
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ КАК Между50И250,
    ВЫБОР
        КОГДА Реализация.СуммаДокумента <= 10000000
                И Реализация.СуммаДокумента > 250
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ КАК Между250И100000


В итогах просуммировать единички, получается количество документов.

Примерно также с суммой по документу:

ВЫБОР
        
        КОГДАРеализация.СуммаДокумента<= 50
                И Реализация.СуммаДокумента > 0
            ТОГДА Реализация.СуммаДокумента
        ИНАЧЕ 0
    КОНЕЦ КАК Средняя50,
    ВЫБОР
        КОГДА Реализация.СуммаДокумента<= 250
                И Реализация.СуммаДокумента > 50
            ТОГДА Реализация.СуммаДокумента
        ИНАЧЕ 0
    КОНЕЦ КАК Средняя50И250,
    ВЫБОР
        КОГДА Реализация.СуммаДокумента <= 10000000
                И Реализация.СуммаДокумента > 250
            ТОГДА Реализация.СуммаДокумента
        ИНАЧЕ 0
    КОНЕЦ КАК Средняя250И100000


Здесь уже считать не сумму а среднее.

sava1 Подменю пользователя
сообщение 03.04.17, 7:30
Сообщение #3

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Добавить РС ИнтервалыЦен
К запросу прицепить эту таблицу
Добавить итоги по Интервалу.

Vofka Подменю пользователя
сообщение 03.04.17, 8:23
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

sava1, если отвечаете, то, пожалуйста, отвечайте более конкретно. Если непонятно что я имею ввиду, то можете посмотреть ответ от Нонны выше.

sava1 Подменю пользователя
сообщение 03.04.17, 8:34
Сообщение #5

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Цитата(Михрутка @ 01.04.17, 19:00) *
Необходимо выводить в отчете несколько периодов сразу, например 25-50 грн, 50-100 грн, 100-200 грн. и т.д. подскажите как это сделать?

Цитата(Vofka @ 03.04.17, 9:23) *
sava1, если отвечаете, то, пожалуйста, отвечайте более конкретно.


Написать код?

Vofka Подменю пользователя
сообщение 03.04.17, 9:00
Сообщение #6

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Цитата(sava1 @ 03.04.17, 9:34) *
Написать код?

Напишите.

Михрутка Подменю пользователя
сообщение 03.04.17, 10:30
Сообщение #7

Оратор
*****
Группа: Пользователи
Сообщений: 311
Из: Харьков
Спасибо сказали: 7 раз
Рейтинг: 0

Да, код бы не помешал, хотя бы как пример. ))

sava1 Подменю пользователя
сообщение 03.04.17, 11:33
Сообщение #8

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

чуть позжей

Вот пример по дебиторке:

Запрос.Текст = "
    |ВЫБРАТЬ
    |    Интервалы.Начало,
    |   Интервалы.Окончание,
    |   Интервалы.Представление
    |ПОМЕСТИТЬ ИнтервалыСроковЗадолженностей
    |ИЗ
    |    &тзИнтервалы КАК Интервалы
    |;
    |ВЫБРАТЬ
    |    ВзаиморасчетыСКонтрагентамиОстатки.Организация,
    |    ВзаиморасчетыСКонтрагентамиОстатки.Контрагент,
    |    ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента,
    |    ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток
    |ПОМЕСТИТЬ ВзаиморасчетыСКонтрагентамиОстатки
    |ИЗ
    |    РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&ДатаОтчета) КАК ВзаиморасчетыСКонтрагентамиОстатки
    |ГДЕ ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток > 0
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ВзаиморасчетыСКонтрагентами.Организация,
    |    ВзаиморасчетыСКонтрагентами.Контрагент,
    |    ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента,
    |    СУММА(ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов) КАК СуммаВзаиморасчетов
    |ПОМЕСТИТЬ ВзаиморасчетыСКонтрагентамиПогашено
    |ИЗ
    |    РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК ВзаиморасчетыСКонтрагентами
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВзаиморасчетыСКонтрагентамиОстатки КАК ВзаиморасчетыСКонтрагентамиОстатки
    |        ПО (ВзаиморасчетыСКонтрагентамиОстатки.Организация = ВзаиморасчетыСКонтрагентами.Организация)
    |            И (ВзаиморасчетыСКонтрагентамиОстатки.Контрагент = ВзаиморасчетыСКонтрагентами.Контрагент)
    |            И (ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента = ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента)
    |ГДЕ
    |    ВзаиморасчетыСКонтрагентами.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
    |    И ВзаиморасчетыСКонтрагентами.Период < &ДатаОтчета
    |
    |СГРУППИРОВАТЬ ПО
    |    ВзаиморасчетыСКонтрагентами.Организация,
    |    ВзаиморасчетыСКонтрагентами.Контрагент,
    |    ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ВзаиморасчетыСКонтрагентами.Организация КАК Организация,
    |    ВзаиморасчетыСКонтрагентами.Контрагент КАК Контрагент,
    |    ВзаиморасчетыСКонтрагентами.Контрагент.ОсновнойМенеджерПокупателя КАК ОсновнойМенеджерПокупателя,
    |    ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента КАК ДоговорКонтрагента,
    |    ВЫРАЗИТЬ(ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента.Комментарий КАК Строка(250)) КАК Комментарий,
    |    ВзаиморасчетыСКонтрагентами.Регистратор КАК Регистратор,
    |    ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов КАК Задолженность,
    |    ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиПогашено.СуммаВзаиморасчетов, 0)             КАК СуммаВзаиморасчетовПогашено,
    |    РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентами.Регистратор.Дата, &ДатаОтчета, ДЕНЬ)     КАК СрокЗадолженности,
    |    РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентами.Регистратор.Дата, &ДатаОтчета, ДЕНЬ)
    |        - ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности КАК СрокПросроченнойЗадолженности,
    |    ВЫБОР
    |        КОГДА ИнтервалыСроковЗадолженностей.Представление IS NULL
    |        ТОГДА
    |            ВЫБОР
    |                КОГДА ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности > 0
    |                ТОГДА
    |                    ВЫБОР
    |                        КОГДА РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентами.Регистратор.Дата, &ДатаОтчета, ДЕНЬ) <= ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности
    |                        ТОГДА ""В рамках договора""
    |                        ИНАЧЕ ""Безнадежная""
    |                    КОНЕЦ
    |                ИНАЧЕ ""Безнадежная""
    |            КОНЕЦ
    |        ИНАЧЕ
    |            ВЫБОР
    |                КОГДА ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности > 0
    |                ТОГДА
    |                    ВЫБОР
    |                        КОГДА РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентами.Регистратор.Дата, &ДатаОтчета, ДЕНЬ) <= ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности
    |                        ТОГДА ""* В рамках договора""
    |                        ИНАЧЕ ИнтервалыСроковЗадолженностей.Представление
    |                    КОНЕЦ
    |                ИНАЧЕ ИнтервалыСроковЗадолженностей.Представление
    |            КОНЕЦ
    |    КОНЕЦ КАК КатегорияЗадолженности
    |ИЗ
    |    РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК ВзаиморасчетыСКонтрагентами
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВзаиморасчетыСКонтрагентамиОстатки КАК ВзаиморасчетыСКонтрагентамиОстатки
    |        ПО (ВзаиморасчетыСКонтрагентамиОстатки.Организация = ВзаиморасчетыСКонтрагентами.Организация)
    |            И (ВзаиморасчетыСКонтрагентамиОстатки.Контрагент = ВзаиморасчетыСКонтрагентами.Контрагент)
    |            И (ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента = ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента)
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВзаиморасчетыСКонтрагентамиПогашено КАК ВзаиморасчетыСКонтрагентамиПогашено
    |        ПО (ВзаиморасчетыСКонтрагентамиПогашено.Организация = ВзаиморасчетыСКонтрагентами.Организация)
    |            И (ВзаиморасчетыСКонтрагентамиПогашено.Контрагент = ВзаиморасчетыСКонтрагентами.Контрагент)
    |            И (ВзаиморасчетыСКонтрагентамиПогашено.ДоговорКонтрагента = ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента)
    |        ЛЕВОЕ СОЕДИНЕНИЕ ИнтервалыСроковЗадолженностей КАК ИнтервалыСроковЗадолженностей
    |        ПО РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентами.Регистратор.Дата, &ДатаОтчета, ДЕНЬ) МЕЖДУ ИнтервалыСроковЗадолженностей.Начало И ИнтервалыСроковЗадолженностей.Окончание
    //Если есть условие по договору перенеправим в первый интервал
    //|        ИЛИ (РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентами.Регистратор.Дата, &ДатаОтчета, ДЕНЬ) <= ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности
    //|            И ИнтервалыСроковЗадолженностей.Начало = 0
    //|            И ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности > 0)
    |ГДЕ
    |    ВзаиморасчетыСКонтрагентами.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
    |    И ВзаиморасчетыСКонтрагентами.Период < &ДатаОтчета
    |
    |УПОРЯДОЧИТЬ ПО
    |    Организация,
    |    Контрагент,
    |    ДоговорКонтрагента,
    |    Регистратор.Дата
    |";


Ключевое :

|        ЛЕВОЕ СОЕДИНЕНИЕ ИнтервалыСроковЗадолженностей КАК ИнтервалыСроковЗадолженностей
    |        ПО РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентами.Регистратор.Дата, &ДатаОтчета, ДЕНЬ) МЕЖДУ ИнтервалыСроковЗадолженностей.Начало И ИнтервалыСроковЗадолженностей.Окончание


Чтобы не формировать всякий раз тзИнтервалы - проще загнать данные в РС.
Скормить текст запроса СКД, горизонтальную группировку сделать по интервалам

Или вручную добавить в запрос Итоги по интервалам и при выводе обходить их.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 20.04.24, 0:15
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!