Всем доброго времени суток!
Имеется отчет, содержащие данные по продажам (количество), с группировкой по контрагенту
Необходимо сформировать и вывести колонку "не хватает до лидера", она равна разности между контрагентом с максимальными продажами с текущим контрагентом
Номенклатура однотипная, вся в штуках

Контрагент Продано До лидера
Контрагент 1 10 0
 Номенклатура 1 5
 Номенклатура 2 3
 Номенклатура 3 2
Контрагент 2 6 4
 Номенклатура 2 5
 Номенклатура 4 1
Контрагент 3 3 7
 Номенклатура 2 3

Может кто помочь?
---
Гуррыч, то что в (10) попробовали?
Вот такая картинка получается:
---
в запросе присобачить левое соединение таблицы продаж с той же таблицей, где

```1c
    выбрать
    контрагент,
    макс(продано) как макс_продано
    сгруппировать по
    контрагент
```

и добавить поле

```1c
    макс_продано - продано как НеХватает
```
---
Упс, да ту еще За решение данного вопроса предусмотрено вознаграждение в размере 5 $m.!
Запрос в студию, сам все соединения присобачу.
---
Отчет называется "Выручка и себестоимость продаж" - в типовой УТ 11
запрос там не хотелось бы исправлять, а воспользоваться только ресурсами и пользовательскими полями
---
Гуррыч, а вы его сохраните в файл, подкорректируйте и во внешние добавьте.
---
есть функции ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений, думаю что с их помощью можно решить данную задачу
запрос по определенный причинам править очень нежелательно, как и делать внешний отчет

Этими функциями я не пользовался, поэтому сейчас подзастрял
---
Гуррыч, http://infostart.ru/public/86764/)/

Вообще, я такое делал через вычисление максимального количества у контрагента. Потом вычитал из максимума текущее значение.
---
starik-2005, там все для вычисляемых полей. В пользовательских будет работать?
Я думаю, должно быть вроде
```1c
    ВычислитьВыражение("Максимум(Количество)", "Контрагент") - Количество
```
. Другое дело, что в примере из публикации 86764 указаны настоящие имена полей компоновки, тут же надо всё на стороне пользователя сделать, а там псевдонимы.
---
starik-2005, Как получить максимальное значение из всех группировок?
---
```1c
    ВычислитьВыражение("Максимум(Количество)",,"ОбщийИтог")-Количество
```
---
ditp, это будет для всех полей текущей группировки без учета иерархии, если второй параметр пустой, а третий - итог?
---
По идее так:

```1c
    ВычислитьВыражение("Максимум(ВычислитьВыражениеСГруппировкойМассив("Сумма(СтоимостьОборот)", "Контрагент")))","ОбщийИтог") - Сумма(СтоимостьОборот)
```

Но у меня почему-то возвращает Null.
---
Выражение для пользовательского поля:

```1c
    Выбор
    Когда [К выплате на конец периода] <= 0
    Тогда 0
    Иначе ВычислитьВыражение("Максимум([К выплате на конец периода])", "ОбщийИтог") - [К выплате на конец периода]
    Конец
```

Как выглядит в отчете см. в приложенном файле.
---
superkuzja, моя проблема в том, что мне нужен максимальный итог по группировке, а не просто максимальное значение в колонке
---
Гуррыч, то что в (10) попробовали?
Вот такая картинка получается:
---
ditp, да, пробовал, не совсем то
мне нужно итоги по группировкам сравнивать, то есть один контрагент продал разных номенклатур 30 штук, а другой 40. вот тот кто продал 40 и есть лидер, и сравнивается с общим количеством всех проданных этим контрагентом номенклатур. В Вашем отчете идет сравнение в разрезе номенклатур

нарисовал в экселе что мне нужно на выходе получить
---
Гуррыч, а мой вариант из (8) пробовали? Поле добавляете только в группировку контрагента, и как раз вроде должно получиться.
---
ditp, вы натолкнули меня на мысль, результат я получил
если кому-то нужно будет решать подобную задачу, без изменения запроса, я сделал следующее
добавил группировку верхнего уровня, в моем случае это Организация
ввел 2 вычисляемых поля
ДоЛидера - 0
ИтогоПоПартнеруКоличество Максимум(ВЫЧИСЛИТЬВыражениесгруппировкоймассив("Сумма(Количество)","Партнер"))
и в ресурсах следующее
ДоЛидера Максимум(ВычислитьВыражениеСГруппировкойМассив("ИтогоПоПартнеруКоличество","Партнер")) Рассчитывать по Организация
ДоЛидера ВычислитьВыражение("ИтогоПоПартнеруКоличество","Организация","ОбщийИтог") - Сумма(Количество) Рассчитывать по Партнер

в результате получил на уровне группировок Партнер необходимую цифру

всем спасибо за участие, приз отправляется ditp
---
Гуррыч, спасибо.

Я пытался сделать что-то подобное с запихиванием в ресурс, но додумать до конца не успел.
---
Запрос или какая конфа?
---
Можно пойти таким путем:
1. В запросе получить максимум по верхней группировке, "Контрагент", таким образом получим лидера.
2. Соединить слева полученную таблицу и вычислить значение поля "До лидера".

```1c
    ВЫБРАТЬ
    ПродажиОбороты.Контрагент,
    МАКСИМУМ(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот
    ПОМЕСТИТЬ Лидер
    ИЗ
    РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаКончала, , ) КАК ПродажиОбороты

    СГРУППИРОВАТЬ ПО
    ПродажиОбороты.Контрагент
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.ХарактеристикаНоменклатуры,
    ПродажиОбороты.ЗаказПокупателя,
    ПродажиОбороты.ДоговорКонтрагента,
    ПродажиОбороты.ДокументПродажи,
    ПродажиОбороты.Подразделение,
    ПродажиОбороты.Проект,
    ПродажиОбороты.Организация,
    ПродажиОбороты.Контрагент,
    ПродажиОбороты.КоличествоОборот,
    ПродажиОбороты.СтоимостьОборот,
    ПродажиОбороты.СтоимостьБезСкидокОборот,
    ПродажиОбороты.НДСОборот
    ПОМЕСТИТЬ ТабЛидера
    ИЗ
    РегистрНакопления.Продажи.Обороты(
    &ДатаНачала,
    &ДатаКончала,
    ,
    Контрагент В
    (ВЫБРАТЬ
    Таб.Контрагент
    ИЗ
    Лидер КАК Таб)) КАК ПродажиОбороты
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.ХарактеристикаНоменклатуры,
    ПродажиОбороты.ЗаказПокупателя,
    ПродажиОбороты.ДоговорКонтрагента,
    ПродажиОбороты.ДокументПродажи,
    ПродажиОбороты.Подразделение,
    ПродажиОбороты.Проект,
    ПродажиОбороты.Организация,
    ПродажиОбороты.Контрагент,
    ПродажиОбороты.КоличествоОборот,
    ПродажиОбороты.СтоимостьОборот,
    ПродажиОбороты.СтоимостьБезСкидокОборот,
    ПродажиОбороты.НДСОборот,
    ТабЛидера.КоличествоОборот - ПродажиОбороты.КоличествоОборот КАК ДоЛидераКоличество
    ИЗ
    РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаКончала, , ) КАК ПродажиОбороты
    ЛЕВОЕ СОЕДИНЕНИЕ ТабЛидера КАК ТабЛидера
    ПО ПродажиОбороты.Номенклатура = ТабЛидера.Номенклатура
    И ПродажиОбороты.Организация = ТабЛидера.Организация

    как то так...
```

Если лидера нужно по номенклатуре определять добавляем в таблицу "Лидер" группировку номенклатуру.

p.s. Запрос не проверял. По соединениям сами сможете я думаю с ориентироваться по чему соединять по чему что нет.