Имя: Пароль:
1C
1С v8
Итоги запроса
,
0 GOshaSaveiko
 
05.03.12
09:55
Добрый день.
Все воскресенье промучался, помогите, пожалуйста.
Есть такой вот запрос

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

ЗаказыПокупателей.ЗаказПокупателя.ДатаОтгрузки МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ)

СГРУППИРОВАТЬ ПО
   ЗаказыПокупателей.ЗаказПокупателя.Контрагент,
   ЗаказыПокупателей.Номенклатура.Ссылка,
   ЗначенияСвойствОбъектовКомплектация.Значение,
   ЗаказыПокупателей.ЗаказПокупателя.Ссылка

УПОРЯДОЧИТЬ ПО
   ЗаказыПокупателей.ЗаказПокупателя.Контрагент.Наименование,
   ЗаказыПокупателей.Номенклатура.Наименование,
   ЗначенияСвойствОбъектовКомплектация.Значение,
   ЗаказыПокупателей.ЗаказПокупателя.Дата
ИТОГИ
   СРЕДНЕЕ(Цена),
   СУММА(Количество),
   СУММА(СуммаВЦенах)
ПО
   ОБЩИЕ,
   ЗаказПокупателяКонтрагент,
   НоменклатураСсылка,
   Комплектация,
   ЗаказПокупателяСсылка

Как результат, получаем счетверенные итоги. Т.е. по некоторым заказам "количество" будет записано как 4, вместо 1.
Таблица результата Запроса по одному контрегенту и изделию выглядит примерно так:

Контрагент  |       |    |       | 4 | 500 | 2000
Контрегент  | Диван |    |       | 4 | 500 | 2000
Контрегент  | Диван | 1м |       | 4 | 500 | 2000
Контрегент  | Диван | 1м | Зак№1 | 4 | 500 | 2000

А должно быть диван 1 шт. 500 руб = 500 руб.
Уверен, что накосячил с группировками - ткните носом, пожалуйста, где.
1 hhhh
 
05.03.12
10:09
ну похоже ваш диван этот встречается сразу в четырех заказах. Вы скажите им там, что нельзя один и тот же диван четыре раза заказывать, суммы четверятся.
4 Omskdizel
 
05.03.12
10:28
(1) Малость не пойму, зачем тебе левое соединение "ЗначенияСвойствОбъектовГруппа" если она не используется?

Ну вообще стандартный путь - Консоль запросов и убираешь кусочки из запроса, смотришь на результат, делаешь выводы.
5 GOshaSaveiko
 
05.03.12
10:42
ПО ЗаказыПокупателей.Номенклатура = ЦеныНоменклатуры.Номенклатура
           И ЦеныНоменклатуры.Комплектация = ЗначенияСвойствОбъектовКомплектация.Значение
           И ЦеныНоменклатуры.Группа = ЗначенияСвойствОбъектовГруппа.Значение

Цены завязаны на Номенклатура + Комплектация + Группа
6 GOshaSaveiko
 
05.03.12
10:47
2 hhhh: Диван в одном заказе. Это 100%.
7 chingiz
 
05.03.12
11:41
Накосячил скорее с СУММА(ЗаказыПокупателей.Количество) КАК Количество,
   СУММА(ЗаказыПокупателей.Количество * ЦеныНоменклатуры.Цена) КАК СуммаВЦенах
8 Omskdizel
 
05.03.12
12:00
(5) Упс, пропустил.

Ну ты консолькой прогонял?

У меня просто УТ пока нет под рукой, посмотреть не могу.
9 GOshaSaveiko
 
05.03.12
12:10
Прогнал сейчас. Он странным образом выбирает количество, причем я пока логики не понял, чем он руководствуется...
10 GOshaSaveiko
 
05.03.12
12:39
Скорее всего косяк в соединениях. Когда их нет - выбирает правильно.
11 GOshaSaveiko
 
05.03.12
14:03
но странно - они все левые, и внутренние - почему выбор по соединениям умножает результат?
12 Rovan
 
гуру
05.03.12
14:25
(0) надо так

ВЫБРАТЬ
...
(
ВЫБРАТЬ
   ЗаказыПокупателей.ЗаказПокупателя.Контрагент.Ссылка КАК ЗаказПокупателяКонтрагент,
   ЗаказыПокупателей.Номенклатура.Ссылка КАК НоменклатураСсылка,
   ЗаказыПокупателей.ЗаказПокупателя.Ссылка КАК ЗаказПокупателяСсылка,
   СРЕДНЕЕ(ЦеныНоменклатуры.Цена) КАК Цена,
   СУММА(ЗаказыПокупателей.Количество) КАК Количество,
   СУММА(ЗаказыПокупателей.Количество * ЦеныНоменклатуры.Цена) КАК СуммаВЦенах
ИЗ
   РегистрНакопления.ЗаказыПокупателей КАК ЗаказыПокупателей
СГРУППИРОВАТЬ ПО
   ЗаказыПокупателей.ЗаказПокупателя.Контрагент,
   ЗаказыПокупателей.Номенклатура.Ссылка,
   ЗаказыПокупателей.ЗаказПокупателя.Ссылка
) КАК НЕЧТО

ЛЕВОЕ СОЕДИНЕНИЕ....
13 GOshaSaveiko
 
05.03.12
15:09
Ув. Rovan, поясните, пожалуйста, мой косяк и, по возможности, напишите запрос полностью - т.к. мне не понятно, откуда возьмется ЦеныНоменклатуры, и как вообще этот запрос отрабатывать. (
14 Rovan
 
гуру
05.03.12
15:24
(13) сначала сгруппируй и получи свернутые кол-во и суммы
а уже потом стыкуй др. таблицы (свойства)
15 GOshaSaveiko
 
05.03.12
15:30
Не получится. Цена получается из временной таблицы ЦеныНоменклатуры, ПО Номенклатура + Комплектация + Группа. Я не могу получить цену и суммы, не соединяя таблицы.
16 Rovan
 
гуру
05.03.12
16:02
(15) значит сумму тоже потом
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой