Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Як в запросі сформувати рейтинг ?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
alex-l1904
Доброго дня,
треба сформувати рейтинг менеджерів по кількості виписаних документів.
Хто виписав найбільше в того рейтинг 1.
Хочу зробити запросом.
Роблю наростаючий підсумок, але є питання коли кілька менеджерів менеджерів випасали однакову
кількість документів.

Приклад як має бути

Кількість Документів Рейтинг
100 1
95 2
90 3
90 3
80 4
80 4

А наростаючий підсумок робить

Кількість Документів Рейтинг
100 1
95 2
90 4
90 4
80 6
80 6

ВЫБРАТЬ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВнутреннийЗаказ.Ссылка) КАК КолВоДокументов,
    ВнутреннийЗаказ.Сформировал КАК Сформировал
ПОМЕСТИТЬ ВрТабл
ИЗ
    Документ.ВнутреннийЗаказ КАК ВнутреннийЗаказ
ГДЕ
    ВнутреннийЗаказ.Дата >= &Дата
    И ВнутреннийЗаказ.Сформировал <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)

СГРУППИРОВАТЬ ПО
    ВнутреннийЗаказ.Сформировал
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВрТабл.Сформировал КАК Сформировал,
    ВрТабл.КолВоДокументов КАК КолВоДокументов,
    1  КАК Рейтинг
ПОМЕСТИТЬ ВрТабл2
ИЗ
    ВрТабл КАК ВрТабл
        
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВрТабл2.Сформировал КАК Сформировал,
    МАКСИМУМ(ВрТабл2.КолВоДокументов) КАК КолВоДокументов,
    СУММА(ЕСТЬNULL(ВрТабл21.Рейтинг, 0)) КАК Рейтинг1
ИЗ
    ВрТабл2 КАК ВрТабл2
        ЛЕВОЕ СОЕДИНЕНИЕ ВрТабл2 КАК ВрТабл21
        ПО ВрТабл2.КолВоДокументов <= ВрТабл21.КолВоДокументов

СГРУППИРОВАТЬ ПО
    ВрТабл2.Сформировал

УПОРЯДОЧИТЬ ПО
    Рейтинг1

alex-l1904
зробив так. те що треба
ВЫБРАТЬ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВнутреннийЗаказ.Ссылка) КАК КолВоДокументов,
    ВнутреннийЗаказ.Сформировал КАК Сформировал
ПОМЕСТИТЬ ВрТабл
ИЗ
    Документ.ВнутреннийЗаказ КАК ВнутреннийЗаказ
ГДЕ
    ВнутреннийЗаказ.Дата >= &Дата
    И ВнутреннийЗаказ.Сформировал <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)

СГРУППИРОВАТЬ ПО
    ВнутреннийЗаказ.Сформировал
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВрТабл.КолВоДокументов КАК КолВоДокументов,
    МАКСИМУМ(ВрТабл.Сформировал) КАК ОдинМенедж
ПОМЕСТИТЬ ТаблОдогоМенедж
ИЗ
    ВрТабл КАК ВрТабл

СГРУППИРОВАТЬ ПО
    ВрТабл.КолВоДокументов
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВрТабл.Сформировал КАК Сформировал,
    ВрТабл.КолВоДокументов КАК КолВоДокументов,
    ВЫБОР
        КОГДА ТаблОдогоМенедж.ОдинМенедж = ВрТабл.Сформировал
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ КАК Рейтинг
ПОМЕСТИТЬ ВрТабл2
ИЗ
    ВрТабл КАК ВрТабл
        ЛЕВОЕ СОЕДИНЕНИЕ ТаблОдогоМенедж КАК ТаблОдогоМенедж
        ПО ВрТабл.КолВоДокументов = ТаблОдогоМенедж.КолВоДокументов
            И ВрТабл.Сформировал = ТаблОдогоМенедж.ОдинМенедж
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВрТабл2.Сформировал КАК Сформировал,
    МАКСИМУМ(ВрТабл2.КолВоДокументов) КАК КолВоДокументов,
    СУММА(ЕСТЬNULL(ВрТабл21.Рейтинг, 0)) КАК Рейтинг1
ИЗ
    ВрТабл2 КАК ВрТабл2
        ЛЕВОЕ СОЕДИНЕНИЕ ВрТабл2 КАК ВрТабл21
        ПО ВрТабл2.КолВоДокументов <= ВрТабл21.КолВоДокументов

СГРУППИРОВАТЬ ПО
    ВрТабл2.Сформировал

УПОРЯДОЧИТЬ ПО
    Рейтинг1
TohaMonster
alex-l1904 @ 21.07.23, 12:09 необходимо зарегистрироваться для просмотра ссылки ,

А если так? Штука весьма полезная при округлениях

ВЫБРАТЬ
    ВрТабл2.Сформировал КАК Сформировал,
    МАКСИМУМ(ВрТабл2.КолВоДокументов) КАК КолВоДокументов,
    СУММА(ЕСТЬNULL(ВрТабл21.Рейтинг, 0)) КАК Рейтинг1
ИЗ
    ВрТабл2 КАК ВрТабл2
        ЛЕВОЕ СОЕДИНЕНИЕ ВрТабл2 КАК ВрТабл21

        ПО ВрТабл2.КолВоДокументов < ВрТабл21.КолВоДокументов
             ИЛИ ВрТабл2.КолВоДокументов = ВрТабл21.КолВоДокументов
                      И ВрТабл2.Сформировал < ВрТабл21.Сформировал


СГРУППИРОВАТЬ ПО
    ВрТабл2.Сформировал

УПОРЯДОЧИТЬ ПО
    Рейтинг1
Batchir
Привет.
В платформе есть АВТОНОМЕРЗАПИСИ и неявная сортировка временных таблиц

ВЫБРАТЬ ПЕРВЫЕ 999999999999
    ВнутреннийЗаказ.Сформировал КАК Сформировал,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВнутреннийЗаказ.Ссылка) КАК КолВоДокументов,
    АВТОНОМЕРЗАПИСИ() КАК Рейтинг
ПОМЕСТИТЬ ВрТабл
ИЗ
    Документ.ВнутреннийЗаказ КАК ВнутреннийЗаказ
ГДЕ
    ВнутреннийЗаказ.Дата >= &Дата
    И ВнутреннийЗаказ.Сформировал <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)

СГРУППИРОВАТЬ ПО
    ВнутреннийЗаказ.Сформировал

УПОРЯДОЧИТЬ ПО
    КолВоДокументов УБЫВ
;    
Выбрать * Из ВрТабл


UPD: Не обратил внимание что должен выводиться одинаковый рейтинг для одинаковых количеств документов.
В случае выше просто увеличивается номер согласно сортировки, но запрос оставил для истории, может кому пригодиться.
Если по задаче, то можно сформировать отдельную таблицу рейтингов согласно количеству документов и уже с ней соединяться

ВЫБРАТЬ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВнутреннийЗаказ.Ссылка) КАК КолВоДокументов,
    ВнутреннийЗаказ.Сформировал КАК Сформировал
ПОМЕСТИТЬ ВрТабл
ИЗ
    Документ.ВнутреннийЗаказ КАК ВнутреннийЗаказ
ГДЕ
    ВнутреннийЗаказ.Дата >= &Дата
    И ВнутреннийЗаказ.Сформировал <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)

СГРУППИРОВАТЬ ПО
    ВнутреннийЗаказ.Сформировал
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 999999999
    ВрТабл.КолВоДокументов КАК КолВоДокументов,
    АВТОНОМЕРЗАПИСИ() КАК Рейтинг
ПОМЕСТИТЬ ВрРейтинг
ИЗ
    ВрТабл КАК ВрТабл

СГРУППИРОВАТЬ ПО
    ВрТабл.КолВоДокументов

УПОРЯДОЧИТЬ ПО
    КолВоДокументов УБЫВ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВрТабл.Сформировал КАК Сформировал,
    ВрТабл.КолВоДокументов КАК КолВоДокументов,
    ВрРейтинг.Рейтинг КАК Рейтинг
ИЗ
    ВрТабл КАК ВрТабл
        ЛЕВОЕ СОЕДИНЕНИЕ ВрРейтинг КАК ВрРейтинг
        ПО ВрТабл.КолВоДокументов = ВрРейтинг.КолВоДокументов
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.