Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 02:31

Помогите с запросом

Автор digo, 13 янв 2011, 09:33

0 Пользователей и 1 гость просматривают эту тему.

digo

День добрый все знающий All
Мне с 8-кой не приходилось плотно работать, а тут попросили подправить отчет. УПП 8.1 сильно переделанная.
Мне нужно изменить формирование одного поля в запросе. Добавить в запрос выборку из документа и получить итоговые суммы по контрагентам

Вот изначальны запрос

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


Вот это я добавляю в запрос

       |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            |                ХН_НачислениеРетробонусовИМаркетинговыхВыплатКонтрагенты.Контрагент,
            |                СУММА(ХН_НачислениеРетробонусовИМаркетинговыхВыплатКонтрагенты.Сумма) КАК СуммаРетробонусов
            |            ИЗ Документ.ХН_НачислениеРетробонусовИМаркетинговыхВыплат.Контрагенты КАК ХН_НачислениеРетробонусовИМаркетинговыхВыплатКонтрагенты
            |            СГРУППИРОВАТЬ ПО
            |                 ХН_НачислениеРетробонусовИМаркетинговыхВыплатКонтрагенты.Контрагент) КАК ТаблицаРетробонусы
            |        ПО ТаблицаРегистра.ДоговорКонтрагента.Владелец = ТаблицаРетробонусы.Контрагент

Поле, заполнение которого нужно изменить Ретробонусы

Вместо

         //|   ВЫБОР
         //|      КОГДА ТаблицаРегистра.ДокументПродажи.ХН_РетроБонус = ИСТИНА
         //|         ТОГДА ТаблицаРегистра.СтоимостьОборот
         //|      ИНАЧЕ 0
         //|   КОНЕЦ КАК Ретробонусы,

делаю
              | ТаблицаРетробонусы.СуммаРетробонусов КАК Ретробонусы,


Создаю тестовый документ НачислениеРетробонусовИМаркетинговыхВыплатКонтрагенты. В итоге в отчете выводится не коррекктная сумма(мне кажется проблема в группировке... происходит многократное суммирование... )

Помогите плиз советом...

cska-fanat-kz

Сильно не вдавался в текст...
На уровне предположения...

Если происходит многократное суммирование, то замените функцию СУММА на МАКСИМУМ или СРЕДНЕЕ.

Вместо
            |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            |                ХН_НачислениеРетробонусовИМаркетинговыхВыплатКонтрагенты.Контрагент,
            |                СУММА(ХН_НачислениеРетробонусовИМаркетинговыхВыплатКонтрагенты.Сумма) КАК СуммаРетробонусов
            |            ИЗ Документ.ХН_НачислениеРетробонусовИМаркетинговыхВыплат.Контрагенты КАК ХН_НачислениеРетробонусовИМаркетинговыхВыплатКонтрагенты
            |            СГРУППИРОВАТЬ ПО
            |                 ХН_НачислениеРетробонусовИМаркетинговыхВыплатКонтрагенты.Контрагент) КАК ТаблицаРетробонусы
            |        ПО ТаблицаРегистра.ДоговорКонтрагента.Владелец = ТаблицаРетробонусы.Контрагент

написать

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

digo

Нет, ни МАКСИМУМ ни МИНИМУМ не помогли..

решил максимально сократить запрос и поэкспериментировать... и вот что вышло

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

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

УПОРЯДОЧИТЬ ПО
   Покупатель

Если в оборотах не указывать Регистратора, то запрос отрабатывает нормально, если же указать его
РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, Регистратор ) КАК ПродажиОбороты
, то суммируется не верно

Подскажите плиз как можно обойти эту проблему

Спасибо

progmikon

А для чего вам регистратор нужен, если вы его даже не выбираете?

digo

Дело в том, что в исходном варианте запроса этот регистратор используется, и мне нужно слегка изменить этот запрос, так чтобы поле Ретробонусы заполнялось суммами из документов НачислениеРетробонусовИМаркетинговыхВыплатКонтрагенты.

Думаю что этот регистратор нужен в исходном запросе для дальнейших расшифровок. Этот запрос используется в отчете.

Вот я и ломаю голову как бы мне изменить этот запрос чтобы заполнить это поле данными из нужного мне документа...
((

digo


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск