Добрый день!
Запросом получаю первых 5 популярных контрагента по закупкам, все остальные объединены как контрагент "Прочее". Запрос выводит все правильно, но в отчет выводятся какие-то левые контрагенты. Конфигурация БП 3.0.73.54

```1c
    ВЫБРАТЬ ПЕРВЫЕ 5
    ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто1 КАК Справочник.Контрагенты) КАК Контрагент,
    ХозрасчетныйОбороты.Организация КАК Организация,
    СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК Сумма
    ПОМЕСТИТЬ СписокПоставщиков
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Авто, Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПоставщикамиИПодрядчиками)), , , КорСчет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Товары)), ) КАК ХозрасчетныйОбороты

    СГРУППИРОВАТЬ ПО
    ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто1 КАК Справочник.Контрагенты),
    ХозрасчетныйОбороты.Организация

    УПОРЯДОЧИТЬ ПО
    Сумма УБЫВ
    ;

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

    СГРУППИРОВАТЬ ПО
    ХозрасчетныйОбороты.Организация,
    ХозрасчетныйОбороты.ПериодДень,
    ВЫБОР
    КОГДА СписокПоставщиков.Контрагент ЕСТЬ NULL
    ТОГДА "Прочее"
    ИНАЧЕ СписокПоставщиков.Контрагент
    КОНЕЦ
```
---
Да, Вы правы, консоль сначала из выборки получает первые 5, а потом уже упорядочивает эти 5 по суммам. Решилось все сменой пакетов запросов на вложенный запрос

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

    СГРУППИРОВАТЬ ПО
    ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто1 КАК Справочник.Контрагенты),
    ХозрасчетныйОбороты.Организация

    УПОРЯДОЧИТЬ ПО
    Сумма УБЫВ) КАК ВложенныйЗапрос
    ПО (ВложенныйЗапрос.Контрагент = ХозрасчетныйОбороты.Субконто1)
    И (ВложенныйЗапрос.Организация = ХозрасчетныйОбороты.Организация)

    СГРУППИРОВАТЬ ПО
    ХозрасчетныйОбороты.Организация,
    ВЫБОР
    КОГДА ВложенныйЗапрос.Контрагент ЕСТЬ NULL
    ТОГДА "Прочее"
    ИНАЧЕ ВложенныйЗапрос.Контрагент
    КОНЕЦ,
    ХозрасчетныйОбороты.ПериодДень
```
---
Нельзя в СКД использовать последний запрос с группировками - СКД "умная", поэтому группирует сама, по каким-то своим соображениям.

Сделайте из второй таблицы временную, сделайте 3 пакет с простейшей выборкой из 2-ой временной таблицы.
---
Пробовала, не получилось, результат тот же
---
У вас то получилось все? как сделали?
---
Не пойму я вас, как не крути, данные абсолютно идентичные, по крайней мере по суммам.
---
Возможно Автор имел ввиду, что несколько строчек с "Прочее" ...
По крайней мере я так его понял...
---
Скорее всего так и было.
---
```1c
    ВЫБРАТЬ ПЕРВЫЕ 5
    ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто1 КАК Справочник.Контрагенты) КАК Контрагент,
    ХозрасчетныйОбороты.Организация КАК Организация,
    СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК Сумма
    ПОМЕСТИТЬ СписокПоставщиков
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Авто, Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПоставщикамиИПодрядчиками)), , , КорСчет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Товары)), ) КАК ХозрасчетныйОбороты

    СГРУППИРОВАТЬ ПО
    ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто1 КАК Справочник.Контрагенты),
    ХозрасчетныйОбороты.Организация

    УПОРЯДОЧИТЬ ПО
    Сумма УБЫВ
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ХозрасчетныйОбороты.Субконто1 КАК Субконто1,
    ХозрасчетныйОбороты.Организация КАК Организация,
    СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК Сумма
    ПОМЕСТИТЬ ВТ_Прочее
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Авто, Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПоставщикамиИПодрядчиками)), , , КорСчет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Товары)), ) КАК ХозрасчетныйОбороты

    СГРУППИРОВАТЬ ПО
    ХозрасчетныйОбороты.Организация,
    ХозрасчетныйОбороты.Субконто1
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВЫБОР
    КОГДА СписокПоставщиков.Контрагент ЕСТЬ NULL
    ТОГДА "Прочее"
    ИНАЧЕ СписокПоставщиков.Контрагент
    КОНЕЦ КАК Контрагент,
    ВТ_Прочее.Организация КАК Организация,
    СУММА(ВТ_Прочее.Сумма) КАК Сумма
    ИЗ
    ВТ_Прочее КАК ВТ_Прочее
    ЛЕВОЕ СОЕДИНЕНИЕ СписокПоставщиков КАК СписокПоставщиков
    ПО (ВТ_Прочее.Субконто1 = СписокПоставщиков.Контрагент)

    СГРУППИРОВАТЬ ПО
    ВЫБОР
    КОГДА СписокПоставщиков.Контрагент ЕСТЬ NULL
    ТОГДА "Прочее"
    ИНАЧЕ СписокПоставщиков.Контрагент
    КОНЕЦ,
    ВТ_Прочее.Организация
```
---
Временные таблицы еще индексировать нужно грамотно :)
---
безусловно!
я навскидку написал, то что примерно хотел автор...
---
Левое на правое поменяй как минимум.
И никогда слева не ставь виртуальные таблицы!
---
Не помогло
---
объясните пожалуйста почему виртуальные таблица нельзя ставить слева.
Можно например поставить какой-то регистр сведений поставить слева , а виртуальную таблицу поставить справа и сделать правое соединение?
---
слева - это слева в ЛЕВОМ соединении
или по другому ставить ПЕРВЫМ в ЛЕВОМ СОЕДИНЕНИИ
---
Можно получить бред и никогда не поймешь почему оно бредит...
---
То есть вы сейчас предлагаете вместо вывода всех данных из РБ за период, с выделением 5 контрагентов, вывести данные по 5 контагентам, а остальное не выводить.
Вы вот щас серьезно?
---
Я сербезно считаю, что первой в Левом соединении Виртуальная таблица может стоять только в самых Исключительных случаях.
В рассматриваемом варианте , я не совсем дал рекомендацию поменять левое на правое, но думаю, если перенести виртуальную таблицу во временную , то результат будет другим.
В смысле слева сделать не виртуальную , а временную из виртуальной...
---
Можно получить бред и никогда не поймешь почему оно бредит...
 а если основная таблица находится в виртуальной таблице?
---
Вы сначала уточните что в вашем понимании есть Виртуальная таблица...
---
И никогда слева не ставь виртуальные таблицы!
Плохая примета? Или что?
---
товарищ чушь просто написал.
---
а параметры верные? в запросе конечный период какой указываете? 11.11.2019 23:59:59?
а в скд, просто стандартный период? или как приводите конец периода к концу дня?
---
в запросе конечный период 31.10.2019 23:59:59, а в СКД стандартный период
---
исходный отчет сделан с нуля? или взят с какого-то?
Отчет был внесен во внешние отчеты ранее?
я к чему, если отчет сохранен во внешних отчетах, и его сохранить во внешнем отчете и вносить изменения он будет тянуть настройки СКД из ранее сохраненных, решение переименовать Отчет и "Сохранить КАК" другим файлом отчета.
---
Отчет написан с нуля, пока открывается через файл-открыть
---
отчетов с таким же названием нет во внешних
---
попробуйте убрать "ПЕРВЫЕ 5" и сверьте результат. Отчета и запроса
---
одинаковые
---
значит проблема в этом. ввидимо СКД и консоль получают разные "Первые 5"
можете в самой настройке СКД ограничить вывод по количеству записей https://yadi.sk/i/dyZGoNgJ5DEetg
---
Да, Вы правы, консоль сначала из выборки получает первые 5, а потом уже упорядочивает эти 5 по суммам. Решилось все сменой пакетов запросов на вложенный запрос

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

    СГРУППИРОВАТЬ ПО
    ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто1 КАК Справочник.Контрагенты),
    ХозрасчетныйОбороты.Организация

    УПОРЯДОЧИТЬ ПО
    Сумма УБЫВ) КАК ВложенныйЗапрос
    ПО (ВложенныйЗапрос.Контрагент = ХозрасчетныйОбороты.Субконто1)
    И (ВложенныйЗапрос.Организация = ХозрасчетныйОбороты.Организация)

    СГРУППИРОВАТЬ ПО
    ХозрасчетныйОбороты.Организация,
    ВЫБОР
    КОГДА ВложенныйЗапрос.Контрагент ЕСТЬ NULL
    ТОГДА "Прочее"
    ИНАЧЕ ВложенныйЗапрос.Контрагент
    КОНЕЦ,
    ХозрасчетныйОбороты.ПериодДень
```
---
Еще неплохо бы указать одинаковый метод дополнения, т.к. в СКД по-умолчанию с движениями, а в консоли - границы периода.
---
для начинающих программистов - плохая...
Можно получить бред и никогда не поймешь почему оно бредит...
---
ну не знаю. пример Получаем цены номенклатуры (Ценыноменклатуры.СрезПоследних) и к нему левым соединяем справочник Валюты чтобы пересчитать цены валютные в рубли. пример из типовых конфигураций.
---
Я попробую поискать рекомендации гуру про неоптимальность ставить на первое место Виртуальную таблицу....
Пока некогда, но в подсознании отложилось давно...
---
вот из https://infostart.ru/public/204054/
Виртуальные таблицы , позволяют получить практически готовые данные для большинства прикладных задач.(СрезПервых,СрезПоследних,Остатки,Обороты,ОстаткиИОбороты) Ключевое слово здесь виртуальные. Эти таблицы не являются физическими, а компонуются системой налету, т.е. при получении данных из виртуальных таблиц система собирает данные из итоговых таблиц регистров, компонует, группирует и выдает пользователю.

Т.е. при соединении с виртуальной таблицей происходит соединение с подзапросом. В этом случае оптимизатор СУБД может также выбрать неоптимальный план соединения. Если запрос формируется недостаточно быстро и в запросе испольуются соединения в виртуальными таблицами, то реклмендуется вынести обращение к виртуальным таблицам во временную таблицу, а затем в произвести соедининие между двумя временными таблицами. Перепишем предыдущий запрос.

И это не единственный источник....
Их много, я не на основании единственного сделал себе установку...
---
Спасибо, ну тут не совсем то. неоптимальность да. Не нельзя, а то что может замедлить получение данных, и потребуется оптимизировать запрос.это скорее рекомендация по проблеме и метод оптимизации
---
ну я не претендую в данной теме на окончательную истину.
Но когда не знаешь в чем проблема, ну почему они по разному отрабатывают, то можно попробовать и сделать через Временные таблицы...
---
мало того я уже думаю , что именно временная таблица из Виртуальной и решит проблему автора.....
---
Надо смотреть какой запрос реально выполняется, например, в консоли СКД.
---
нужно попробовать у полей Организация и ПериодДень в описании набора в колонке Роль установить признак "Обязательное"
---
Вместо 2х запросов можно предложить воспользоваться одним запросом и функцией МестоВПорядке.
---
Забавно, что ТС уже давно нет в теме, а обсуждение идет))
---
А вы не замечали именно такую особенность нашего форума?
Такое случается почти в половине случаев если не чаще ;-)))))))
---
Просто у меня рабочий день давно закончился) это не значит, что я не перечитаю это все на следующий день) на момент Вашего сообщения у меня уже 9 часов вечера было)