Имя: Пароль:
1C
1С v8
Не Взлетает Отчет
0 Popkorm
 
03.11.11
15:49
Как правельно связать 2 таблице Запроса.Делаю так,то сильная погрешность в продажиФирма,группировка нужна именно по Контрагенту,и самое главное поле Процент(из чего и строится отчет):
ВЫБРАТЬ
   ЕСТЬNULL(ПродажиФирма.Номенклатура, ПродажиКонтрагент.Номенклатура) КАК Номенклатура,
   МАКСИМУМ(ПродажиКонтрагент.Цена) КАК Цена,
   СУММА(ПродажиКонтрагент.Сумма) КАК Сумма,
   СУММА(ПродажиКонтрагент.КолВо) КАК КолВо,
   ПродажиКонтрагент.Контрагент КАК Контрагент,
   СУММА(ПродажиФирма.КолОбщПродажа) КАК КолОбщПродажа,
   СУММА(ПродажиФирма.СуммаОбщПродажа) КАК СуммаОбщПродажа
ПОМЕСТИТЬ Объединение
ИЗ
   (ВЫБРАТЬ
       ДвиженияТовараПрошлыхПериодовОбороты.Номенклатура КАК Номенклатура,
       СУММА(ДвиженияТовараПрошлыхПериодовОбороты.КоличествоОборот) КАК КолОбщПродажа,
       СУММА(ДвиженияТовараПрошлыхПериодовОбороты.СуммаОборот * ЦеныНоменклатурыСрезПоследних.Цена) КАК СуммаОбщПродажа
   ИЗ
       РегистрНакопления.ДвиженияТовараПрошлыхПериодов.Обороты(&ДатаНачало, &ДатаКонец, Запись, ) КАК ДвиженияТовараПрошлыхПериодовОбороты
           ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
           ПО ДвиженияТовараПрошлыхПериодовОбороты.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
               И (ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен)
   ГДЕ
       ДвиженияТовараПрошлыхПериодовОбороты.ВидДвиженияПриходРасход = &Расход
       И ДвиженияТовараПрошлыхПериодовОбороты.ВидОперацииСТоваром = &КупляПродажи
       И ДвиженияТовараПрошлыхПериодовОбороты.Номенклатура В ИЕРАРХИИ(&КнигиФеникс)
   
   СГРУППИРОВАТЬ ПО
       ДвиженияТовараПрошлыхПериодовОбороты.Номенклатура) КАК ПродажиФирма
       ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           ДвижКонтрагентов.Номенклатура КАК Номенклатура,
           ДвижКонтрагентов.Цена КАК Цена,
           ДвижКонтрагентов.КолВо * ДвижКонтрагентов.Цена КАК Сумма,
           ДвижКонтрагентов.КолВо КАК КолВо,
           ДвижКонтрагентов.Контрагент КАК Контрагент
       ИЗ
           (ВЫБРАТЬ
               СУММА(ДвиженияТовараУКонтрагентовОбороты.КоличествоОборот) КАК КолВо,
               ДвиженияТовараУКонтрагентовОбороты.Номенклатура КАК Номенклатура,
               ДвиженияТовараУКонтрагентовОбороты.Контрагент КАК Контрагент,
               МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена
           ИЗ
               РегистрНакопления.ДвиженияТовараУКонтрагентов.Обороты(&ДатаНачало, &ДатаКонец, Запись, ) КАК ДвиженияТовараУКонтрагентовОбороты
                   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
                   ПО ДвиженияТовараУКонтрагентовОбороты.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
                       И (ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен)
           ГДЕ
               ДвиженияТовараУКонтрагентовОбороты.ВидДвиженияПриходРасход = &Расход
               И ДвиженияТовараУКонтрагентовОбороты.ВидОперацииСТоваром = &КупляПродажи
           
           СГРУППИРОВАТЬ ПО
               ДвиженияТовараУКонтрагентовОбороты.Номенклатура,
               ДвиженияТовараУКонтрагентовОбороты.Контрагент) КАК ДвижКонтрагентов) КАК ПродажиКонтрагент
       ПО ПродажиФирма.Номенклатура = ПродажиКонтрагент.Номенклатура

СГРУППИРОВАТЬ ПО
   ПродажиКонтрагент.Контрагент,
   ЕСТЬNULL(ПродажиФирма.Номенклатура, ПродажиКонтрагент.Номенклатура)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Объединение.Номенклатура КАК Номенклатура,
   Объединение.Цена КАК Цена,
   Объединение.Сумма КАК СуммаКонтрагент,
   Объединение.КолВо КАК КолКонтрагент,
   Объединение.Контрагент КАК Контрагент,
   Объединение.КолОбщПродажа КАК КолФирма,
   Объединение.СуммаОбщПродажа КАК СуммаФирма,
   ВЫРАЗИТЬ(100 * (Объединение.КолВо / Объединение.КолОбщПродажа) КАК ЧИСЛО(15, 2)) КАК Процент
ИЗ
   Объединение КАК Объединение

УПОРЯДОЧИТЬ ПО
   Номенклатура
ИТОГИ
   СУММА(Цена),
   СУММА(СуммаКонтрагент),
   СУММА(КолКонтрагент),
   СУММА(КолФирма),
   СУММА(СуммаФирма),
   100 * СУММА(КолФирма) / СУММА(КолКонтрагент) КАК Процент
ПО
   Контрагент

Пробовал через объединить,тоже лажа:

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

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

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

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

СГРУППИРОВАТЬ ПО
   Объединение.Контрагент,
   Объединение.НоменклатураКонтрагент,
   Объединение.НоменклатураФирма
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЕСТЬNULL(ВТ.НоменклатураКонтрагент, ВТ.НоменклатураФирма) КАК НоменклатураКонтрагент,
   ВТ.КолОбщПродажа КАК КолОбщПродажа,
   ВТ.СуммаОбщПродажа КАК СуммаОбщПродажа,
   ВТ.КолВо КАК КолВо,
   ВТ.Сумма КАК Сумма,
   ВЫБОР
       КОГДА ВТ.КолВо > 0
               И ВТ.КолОбщПродажа > 0
           ТОГДА 100 * (ВТ.КолВо / ВТ.КолОбщПродажа)
       ИНАЧЕ 0
   КОНЕЦ КАК Процент,
   ВТ.Контрагент КАК Контрагент
ИЗ
   ВТ КАК ВТ

УПОРЯДОЧИТЬ ПО
   НоменклатураКонтрагент
ИТОГИ
   СУММА(КолОбщПродажа),
   СУММА(СуммаОбщПродажа),
   СУММА(КолВо),
   СУММА(Сумма),
   ВЫБОР
       КОГДА СУММА(ВТ.КолВо) > 0
               И СУММА(ВТ.КолОбщПродажа) > 0
           ТОГДА 100 * (СУММА(ВТ.КолВо) / СУММА(ВТ.КолОбщПродажа))
       ИНАЧЕ 0
   КОНЕЦ КАК Процент
ПО
   ОБЩИЕ,
   Контрагент
АВТОУПОРЯДОЧИВАНИЕ
1 Irbis
 
03.11.11
15:54
крылья у отчета есть?
2 Popkorm
 
03.11.11
16:01
(1)перьев не хватает,вот и обращаюсь чтоб подкинули,
3 catena
 
03.11.11
16:06
Пробелы в названии лишние.
4 Popkorm
 
03.11.11
16:09
Все походу пиво маринуют
5 Axel2009
 
03.11.11
16:20
в чем лажа то?
6 Popkorm
 
03.11.11
16:30
в первом варианте погрешность в продажиФирма,т.е. выглядит так: НоменклФирма1(7рублей) НоменклКонтрагент1 (3 рубл)
НоменклФирма1(7рублей) НоменклКонтрагент2 (5 рубл)
НоменклФирма1(7рублей) НоменклКонтрагент3 (10 рубл)
НоменклФирма1 ОбщИтого:21 руб НоменклКонтрагент1 ОбщИтого:3 рубл
НоменклКонтрагент2 ОбщИтого:5 рубл,НоменклКонтрагент3 ОбщИтого:10 рубл.
Понял что СКД тут неподойдет,попробую в Цикле Свернуть и там уж получить Итоги
7 Shurjk
 
03.11.11
16:41
(0) Чтоб взлететь нужно убрать ногу с педали тормоза.
8 Popkorm
 
03.11.11
17:02
(7)я без тормозов
9 МишельЛагранж
 
03.11.11
19:17
(6) формулы, по которым счиатете - разные? разные
вот вам и разные результаты для фирмы и для контрагента...
Программист всегда исправляет последнюю ошибку.