Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Проблема с запросом, помогите разобратся

Проблема с запросом, помогите разобратся
Я
   location
 
05.09.16 - 15:51
В общем проблема с запросиком. Помогите новичку разобратся, что где не так в связях. Уже всю голову сломал. ЕСЛИ поставить в последнем запросе ВЫБРАТЬ РАЗЛИЧНЫЕ то всего 30 строк, если без слова различные то 3600 строк. Собственно сам запрос: помогите плизик.

ВЫБРАТЬ
    &ОрганизацияГлавная КАК Организация,
    &ТипЦеныГО КАК ТипЦены
ПОМЕСТИТЬ ВТОрганизацииТипыЦен

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

ВЫБРАТЬ
    &ОрганизацияВторая,
    &ТипЦеныВО

ИНДЕКСИРОВАТЬ ПО
    Организация,
    ТипЦены
;

////////////////////////////////////////////////////////////////////////////////

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

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

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

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВТПродажи.Номенклатура,
    ВТПродажи.Организация
ПОМЕСТИТЬ ВТНоменклатура
ИЗ
    ВТПродажи КАК ВТПродажи
;

////////////////////////////////////////////////////////////////////////////////

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

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

////////////////////////////////////////////////////////////////////////////////

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

ИНДЕКСИРОВАТЬ ПО
    Номенклатура,
    ТипЦен
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ТаблицаНоменклатуры.Номенклатура,
    ТаблицаНоменклатуры.ТипЦены
ПОМЕСТИТЬ ВТСпецификацииНаДату
ИЗ
    (ВЫБРАТЬ
        ВТНоменклатура.Номенклатура КАК Номенклатура,
        ВТОрганизацииТипыЦен.ТипЦены КАК ТипЦены
    ИЗ
        ВТНоменклатура КАК ВТНоменклатура
            ЛЕВОЕ СОЕДИНЕНИЕ ВТОрганизацииТипыЦен КАК ВТОрганизацииТипыЦен
            ПО ВТНоменклатура.Организация = ВТОрганизацииТипыЦен.Организация) КАК ТаблицаНоменклатуры
        ЛЕВОЕ СОЕДИНЕНИЕ ВТЦеныНоменклатурыСрез КАК ВТЦеныНоменклатурыСрез
        ПО ТаблицаНоменклатуры.Номенклатура = ВТЦеныНоменклатурыСрез.Номенклатура
            И ТаблицаНоменклатуры.ТипЦены = ВТЦеныНоменклатурыСрез.ТипЦен
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВТСпецификацииНаДату.Номенклатура,
    ВТСпецификацииНаДату.ТипЦены,
    ВТЦеныНоменклатурыСрез.Цена
ПОМЕСТИТЬ ВТЦенаСпецификации
ИЗ
    ВТСпецификацииНаДату КАК ВТСпецификацииНаДату
        ЛЕВОЕ СОЕДИНЕНИЕ ВТЦеныНоменклатурыСрез КАК ВТЦеныНоменклатурыСрез
        ПО ВТСпецификацииНаДату.Номенклатура = ВТЦеныНоменклатурыСрез.Номенклатура
            И ВТСпецификацииНаДату.ТипЦены = ВТЦеныНоменклатурыСрез.ТипЦен
;

////////////////////////////////////////////////////////////////////////////////

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

СГРУППИРОВАТЬ ПО
    ПоступлениеТоваровУслугТовары.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////

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

СГРУППИРОВАТЬ ПО
    ВтСгруппированныеЦены.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ РАЗЛИЧНЫЕ
    ВТПродажи.Артикул,
    ВТПродажи.Номенклатура,
    ВТПродажи.ГруппаТовара,
    ВТПродажи.Склад,
    ВТПродажи.ДокументПродажи,
    ВЫБОР
        КОГДА ВтСредЦенаПостуления.СредняяЦена = 0
            ТОГДА 0
        ИНАЧЕ ВтСредЦенаПостуления.СредняяЦена
    КОНЕЦ КАК СреднеучетнаяЦенаПрихода
ИЗ
    ВТПродажи КАК ВТПродажи
        ЛЕВОЕ СОЕДИНЕНИЕ ВтСредЦенаПостуления КАК ВтСредЦенаПостуления
        ПО ВТПродажи.Номенклатура = ВтСредЦенаПостуления.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ ВТЦенаСпецификации КАК ВТЦенаСпецификации
        ПО ВТПродажи.Номенклатура = ВТЦенаСпецификации.Номенклатура
ГДЕ
    ВТПродажи.Номенклатура = &Номенклатура

 
 
   polosov
 
1 - 05.09.16 - 15:57
Чего хотел то?
   mkalimulin
 
2 - 05.09.16 - 15:59
(0) А в чем вопрос? РАЗЛИЧНЫЕ убирает дубли.
Вот если бы с РАЗЛИЧНЫМИ было 3600, а без них 30 строк, тогда был бы вопрос.
   mkalimulin
 
3 - 05.09.16 - 16:00
+(2) Ты не ломай голову, а лучше потренируйся.
http://catalog.mista.ru/public/533557/
   location
 
4 - 05.09.16 - 16:03
(2) Так вроде ж не корректно если результат без выбрать различные выдает 3600 строк. Это ж на одной номенклатуре так, сколько ж будет данный отчет формироваться если их больше 1000 и вообще сформируется ли он когда нибудь, поэтому и прошу помощи.
   igork1966
 
5 - 05.09.16 - 16:06
Вот тут нужно "РАЗЛИЧНЫЕ"

ВЫБРАТЬ
    ВТПродажи.Номенклатура,
    ВТПродажи.Организация
ПОМЕСТИТЬ ВТНоменклатура
ИЗ
    ВТПродажи КАК ВТПродажи
;

иначе при соединении записи будут множится
   location
 
6 - 05.09.16 - 16:09
(5) спс, с данной штукой получилось уже 240 строк и запрос значительно быстрее отработал, но еще строки повтоярются (
   igork1966
 
7 - 05.09.16 - 16:14
Количество записей умножается там где на одну номенклатуру несколько организаций:

ИЗ
    (ВЫБРАТЬ РАЗЛИЧНЫЕ
        ВТНоменклатура.Номенклатура КАК Номенклатура,
        ВТНоменклатура.Организация КАК Организация
    ИЗ
        ВТНоменклатура КАК ВТНоменклатура) КАК НоменклатураУн
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период010816, ) КАК ЦеныНоменклатурыСрезПоследних
        ПО НоменклатураУн.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
   ejikbeznojek
 
8 - 05.09.16 - 16:16
Организацию в суммируемое поле переводи
Максимум (Организация)
xD
   igork1966
 
9 - 05.09.16 - 16:16
И кстати, получать данные (для отчета?) из документов, как-бы сильно нехорошо
   igork1966
 
10 - 05.09.16 - 16:17
Судя по всему автору стоит почитать умных книжек по SQL
 
 Рекламное место пустует
   location
 
11 - 05.09.16 - 16:24
(8) Перевел Организацию в суммируемое поле но кол-во строк осталось прежним 240 шт.
   location
 
12 - 05.09.16 - 16:25
(9) как бы да, но все документе в базе не проведены.
   location
 
13 - 05.09.16 - 16:26
(12) это база как черновик, там все без движений, но данные нужно достать из документов.
   location
 
14 - 05.09.16 - 16:30
(7) у меня только может быть 2 организации на одну номенклатуру, но в регистре цены номенклатуры нет организации.
   igork1966
 
15 - 05.09.16 - 16:41
(14) В выражении ВЫБРАТЬ там нет организации. Значит записей будет больше чем ожидалось.
   igork1966
 
16 - 05.09.16 - 16:41
(15) + или должно быть так:

ИЗ
    (ВЫБРАТЬ РАЗЛИЧНЫЕ
        ВТНоменклатура.Номенклатура КАК Номенклатура
    ИЗ
        ВТНоменклатура КАК ВТНоменклатура) КАК НоменклатураУн
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период010816, ) КАК ЦеныНоменклатурыСрезПоследних
        ПО НоменклатураУн.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
   location
 
17 - 05.09.16 - 16:48
(16) добавлял сюда РАЗЛИЧНЫЕ количество строк осталось неизменным
   Catseye
 
18 - 05.09.16 - 17:00
Если в РегистрСведений.ЦеныНоменклатуры есть измерение организация, то добавь в условие соединения отбор по организации
ВЫБРАТЬ
    НоменклатураУн.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыСрезПоследних.ТипЦен КАК ТипЦен,
    ЦеныНоменклатурыСрезПоследних.Цена
ПОМЕСТИТЬ ВТЦеныНоменклатурыСрез
ИЗ
    (ВЫБРАТЬ РАЗЛИЧНЫЕ
        ВТНоменклатура.Номенклатура КАК Номенклатура,
        ВТНоменклатура.Организация КАК Организация
    ИЗ
        ВТНоменклатура КАК ВТНоменклатура) КАК НоменклатураУн
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период010816, ) КАК ЦеныНоменклатурыСрезПоследних
        ПО НоменклатураУн.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
             И НоменклатураУн.Организация= ЦеныНоменклатурыСрезПоследних.Организация
   Catseye
 
19 - 05.09.16 - 17:03
Соответственно и ниже, где идет соединение с таблицами по документам в условиях соединений должен быть отбор по организациям

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует