Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как избежать дублирование в запросе
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
kostya77
Добрый день. Есть запрос

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


Результат запроса
ЗаказПокупателя1 / СтоимостьОборот / Регистратор /СуммаУпрОборот
ЗаказПокупателя 1 / СтоимостьОборот/ Регистратор /СуммаУпрОборот

ЗаказПокупателя2 / СтоимостьОборот / Регистратор /СуммаУпрОборот
ЗаказПокупателя 2 / СтоимостьОборот/ Регистратор /СуммаУпрОборот

Как избежать дублирования заказов?
AnryMc
kostya77 @ Сегодня, 12:54 необходимо зарегистрироваться для просмотра ссылки ,


Пробовали?
СГРУППИРОВАТЬ ПО
kostya77
AnryMc @ Сегодня, 14:17 необходимо зарегистрироваться для просмотра ссылки ,
Не помогает
sava1
kostya77 @ Сегодня, 13:54 необходимо зарегистрироваться для просмотра ссылки ,
убрать Регистратор из Левого соединения
kostya77
мен нужно чтобы не дулировалась СтоимостьОборот

sava1 @ Сегодня, 14:22 необходимо зарегистрироваться для просмотра ссылки ,
В результаті потрібен регістратор
AnryMc
Цитата(kostya77 @ 15.04.25, 13:35) необходимо зарегистрироваться для просмотра ссылки
В результаті потрібен регістратор


А в чем разница между "ЗаказПокупателя " и "Регистратор" если:
ПО ПродажиОбороты.ЗаказПокупателя = ВзаиморасчетыСКонтрагентамиОбороты.Сделка
Profi_1C77
kostya77 @ Сегодня, 13:54 необходимо зарегистрироваться для просмотра ссылки ,
Это все левое соединение.
Загоните результат в Временную, а ее потом сгруппируйте используя функции Максимум / Среднее, и тд
sava1
Цитата(kostya77 @ 15.04.25, 14:35) необходимо зарегистрироваться для просмотра ссылки
В результаті потрібен регістратор


Тогда "дублирование" обязательно - на одну реализацию 2-3 проплаты - как Вы собираетесь решать проблему?

Цитата(Profi_1C77 @ 15.04.25, 17:25) необходимо зарегистрироваться для просмотра ссылки
Загони результат в Временную, а ее потом сгруппируй используя функции Максимум / Среднее, и тд


так все равно будут дубли

может проблема с обработкой результата выборки?
alex1c
Ви можете написати, що від вас вимагають отримати, або на прикладі в екселі виведіть картинку...
TohaMonster
Продолжаю продвигать тему с объединением запросов )
А если как-то так?

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПродажиОбороты.ЗаказПокупателя КАК ЗаказПокупателя,
    ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,
    ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот,
    0 КАК СуммаУпрОборот,
    НЕОПРЕДЕЛЕНО КАК Регистратор
ИЗ
    ВТПродажиОбороты КАК ПродажиОбороты

ОБЪЕДИНИТЬ ВСЕ

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


Для СКД нормально потом все сгруппируется
Единственно - это будет не очень информативно, если в Сделке более одной Номенклатуры
sava1
TohaMonster @ Сегодня, 15:38 необходимо зарегистрироваться для просмотра ссылки ,

Здесь еще хуже - Сделка регистра не обязательно Заказ.
Даже если предположить, что Сделка только Заказы - по одному заказу может быть несколько строк с разными Регистраторами.
И мы опять втыкаемся в т.н. "дублирование".
TohaMonster
sava1, А в чем дублирование? Каждая запись что из одного регистра, что из другого попадет в результат один раз. В отличии от варианта с соединением.
Другое дело - это то, в каком виде потом нужно скомпоновать результат. Если это отчет в СКД и регистратор - это поле для расшифровки, то тут и думать не надо - СКД все прекрасно сделает. Ну, а другой вариант - нужно спросить у Автора, что в точности он хочет от Запроса? Каков конечный результат?
sava1
TohaMonster @ Сегодня, 11:55 необходимо зарегистрироваться для просмотра ссылки ,

потому. что в ЗаказПокупателя попадают другие документы - Сделка из Взаиморасчетов НЕ ОБЯЗАТЕЛЬНО ЗаказПокупателя
TohaMonster
sava1 @ Сегодня, 16:18 необходимо зарегистрироваться для просмотра ссылки ,
Ну дык, я для этого спецом выделил ВТПродажиОбороты и сделал условие
Сделка В
                (ВЫБРАТЬ РАЗЛИЧНЫЕ
                    ВТПродажиОбороты.ЗаказПокупателя
                ИЗ
                    ВТПродажиОбороты)
в выборке

Думаю, наш спор тут малоконструктивен: нужна рецензия от Автора. А он, похоже, проблему уже решил и забыл про ету ветку

Всех с праздником Пасхи!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.