Имя: Пароль:
1C
1С v8
Помогите с запросом
0 НеПапоКарло
 
17.09.19
16:09
Необходимо получить продажи с анализом прихода на выбранные склады в разрезе организаций.
Приведённый ниже запрос выводит дублирующие строки количества для каждой организации по каждой найденной номенклатуре в приходе.
Как исключить дубли? Заранее спасибо.

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ПродажиОбороты.Организация КАК Организация,
    ПродажиОбороты.Номенклатура КАК Номенклатура,
    ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,
    ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот,
    ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход
ИЗ
    РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, , ) КАК ПродажиОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , Склад В (&Склад)) КАК ТоварыНаСкладахОстаткиИОбороты
        ПО ПродажиОбороты.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура
1 bootini
 
17.09.19
16:22
Что такое продажи с анализом прихода?
Как должен выглядеть результат, если была одна продажа и 10 поступлений за выбранный период?
2 HardBall
 
17.09.19
16:35
(0) Сгрупировать.
3 НеПапоКарло
 
17.09.19
16:35
(1) Организация        Номенклатура    КоличествоОборот    СтоимостьОборот    КоличествоПриход
    Организация 1    Товар                  624,000                12 547,20          22,000
    Организация 2    Товар                  155,000                 2 702,22          22,000

По товару был приход по выбранному складу, он принадлежит первой организации, но приход дублируется и для второй организации, т.е. во второй строке должно быть в поле приход NULL.
4 НеПапоКарло
 
17.09.19
16:40
(1) 10 Поступлений суммируются
5 bootini
 
17.09.19
16:46
(4) в (2) ответили
6 Aleksandr N
 
17.09.19
16:48
"По товару был приход по выбранному складу, он принадлежит первой организации, но приход дублируется и для второй организации, т.е. во второй строке должно быть в поле приход NULL."
Вторую связь по организации добавить не пробовали?
7 Kashey
 
17.09.19
16:48
(4) В ТоварыНаСкладах есть измерение Организация? Если есть, то попробовать соединять по номенклатуре И организации, иначе заменить регистр на ТоварыОрганизаций или подобный.
8 НеПапоКарло
 
17.09.19
16:49
(2), (5) - всё равно не получается

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

СГРУППИРОВАТЬ ПО
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Организация,
    ПродажиОбороты.КоличествоОборот,
    ПродажиОбороты.СтоимостьОборот,
    ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход
9 piter3
 
17.09.19
16:50
сунуть из где в параметры видимо
10 bootini
 
17.09.19
16:51
(8) ну при группировке суммировать надо. Группировать по номенклатуре и организации, и Сумма(КоличествоОборот) по количествам
11 dezss
 
17.09.19
16:51
РегистрНакопления.Продажи - а там разве склада нет?
Тоже надо наложить отбор по складу и соединить по нему таблицы.
12 bootini
 
17.09.19
16:52
да и в КоличествоОборот у вас будут только продажи а в приходе и Поступления и Перемещения и Возвраты
13 НеПапоКарло
 
17.09.19
16:57
(10) Тоже не получается

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

СГРУППИРОВАТЬ ПО
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Организация
14 НеПапоКарло
 
17.09.19
17:00
(11) В Регистре.Продажи склада нет.
15 novichok79
 
17.09.19
17:05
тогда надо строить отчет по регистру ПартииТоваровНаСкладах
16 НеПапоКарло
 
17.09.19
17:10
(6) НЕ получается, Противоречивая связь #1
ПО ПродажиОбороты.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура
ПО ПродажиОбороты.Организация = ТоварыНаСкладахОстаткиИОбороты.Склад.Организация
17 dezss
 
17.09.19
17:12
ПО ПродажиОбороты.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура
И, а не ПО ПродажиОбороты.Организация = ТоварыНаСкладахОстаткиИОбороты.Склад.Организация
18 НеПапоКарло
 
17.09.19
17:12
Спасибо.

Итог:

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

СГРУППИРОВАТЬ ПО
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Организация
19 Aleksandr N
 
17.09.19
17:12
(16) И вместо ПО
У регистра ТоварыНаСкладахОстаткиИОбороты нет измерения организация?
Тогда это хреновая связь.
20 НеПапоКарло
 
17.09.19
17:18
(19) Нет измерения Организация...
21 craxx
 
17.09.19
17:20
(0) Два подзапроса надо будет делать, и организацию для второго из документов вытягивать. Иначе никак
22 Kashey
 
17.09.19
17:20
Вместо ТоварыНаСкладах.ОстаткиИОбороты можно ТоварыНаСкладах.Обороты использовать в данном случае. Всё побыстрее будет.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший