Имя: Пароль:
1C
1С v8
Зависает при выполнении запроса(
0 Droning1C
 
15.07.19
15:51
Доброго времени суток! Подскажите, пожалуйста, в чем беда? при выполнении запроса программа зависает...

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

СГРУППИРОВАТЬ ПО
    РеализацияТоваровУслуг.Сделка

ОБЪЕДИНИТЬ

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

СГРУППИРОВАТЬ ПО
    ОтчетПроизводстваЗаСменуПродукция.ЗаказРезерв.Ссылка
1 RomaH
 
naïve
15.07.19
15:52
вложеных запросов быть не должно - используйте временные таблицы
2 RomaH
 
naïve
15.07.19
15:54
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ОтчетПроизводстваЗаСменуПродукция.ЗаказРезерв.Ссылка
ИЗ
    Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ОтчетПроизводстваЗаСменуПродукция
ГДЕ
    ВЫБОР
            КОГДА &ЗаказПокупателя = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
                ТОГДА ОтчетПроизводстваЗаСменуПродукция.ЗаказРезерв.Ссылка В
                        (ВЫБРАТЬ РАЗЛИЧНЫЕ
                            ОтчетПроизводстваЗаСменуПродукция.ЗаказРезерв.Ссылка
                        ИЗ
                            Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ОтчетПроизводстваЗаСменуПродукция
                        ГДЕ
                            ОтчетПроизводстваЗаСменуПродукция.Ссылка.Дата > &НачалоПериода
                            И ОтчетПроизводстваЗаСменуПродукция.ЗаказРезерв.Дата МЕЖДУ ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, -365) И &НачалоПериода)
            ИНАЧЕ ОтчетПроизводстваЗаСменуПродукция.ЗаказРезерв.Ссылка = &ЗаказПокупателя
        КОНЕЦ

вот это по сути ИЛИ

переделать на ОБЪЕДИНИТЬ

первая таблица - внутренним соединением
3 RomaH
 
naïve
15.07.19
15:55
т.е. тут 4 таблицы к объединению
и таблицы из ГДЕ убрать в СОЕДИНЕНИЕ
4 Droning1C
 
15.07.19
16:15
(3) честно говоря пока плохо понятно... мне нужно выбрать заказы из ОтчетаПроизводстваЗаСмену и из РеализацийТУ по условию на дату. Но, если на форме обработки заполнен реквизит "ЗаказПокупателя", то в результат запроса должен попадать только этот заказ. В результате выполнения запроса хочется видеть либо один заказ, либо одноколоночную таблицу с перечнем неповторяющихся заказов с отбором по периоду
5 Droning1C
 
15.07.19
16:16
(3) не могу понять зачем мне внутреннее соединение
6 vicof
 
15.07.19
16:18
(0) .Ссылка везде убери
7 Droning1C
 
15.07.19
16:25
ВЫБРАТЬ РАЗЛИЧНЫЕ
    РеализацияТоваровУслуг.Сделка КАК Заказ
ПОМЕСТИТЬ втРеализации
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
    РеализацияТоваровУслуг.Дата > &НачалоПериода
    И РеализацияТоваровУслуг.Сделка.Дата МЕЖДУ ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, -365) И &НачалоПериода
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ОтчетПроизводстваЗаСменуПродукция.ЗаказРезерв КАК Заказ
ПОМЕСТИТЬ втОтчетПрЗаСмену
ИЗ
    Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ОтчетПроизводстваЗаСменуПродукция
ГДЕ
    ОтчетПроизводстваЗаСменуПродукция.Ссылка.Дата > &НачалоПериода
    И ОтчетПроизводстваЗаСменуПродукция.ЗаказРезерв.Дата МЕЖДУ ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, -365) И &НачалоПериода
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    втРеализации.Заказ
ИЗ
    втРеализации КАК втРеализации

ОБЪЕДИНИТЬ

ВЫБРАТЬ РАЗЛИЧНЫЕ
    втОтчетПрЗаСмену.Заказ
ИЗ
    втОтчетПрЗаСмену КАК втОтчетПрЗаСмену
8 Droning1C
 
15.07.19
16:26
вот запрос с объединением, но без условия на заполненность реквизита ЗаказПокупателя. Как это условие лучше оформить в запросе?
9 Droning1C
 
15.07.19
16:30
(6) Убрал .Ссылка - все так же виснет
10 Droning1C
 
15.07.19
16:32
(6) Ан нет, стал выполняться... Но , видимо, мой подход все равно не верен
11 xXeNoNx
 
15.07.19
16:33
что такое ЗаказРезерв?
12 xXeNoNx
 
15.07.19
16:33
а где проверка на проведение..., удаление?
13 xXeNoNx
 
15.07.19
16:34
а данные лучше собирать по регистрам
14 xXeNoNx
 
15.07.19
16:36
О.., так тыж тож из Рамы...
15 Droning1C
 
15.07.19
16:39
(14) дада, приуэт!
16 xXeNoNx
 
15.07.19
16:40
случаем ОтчетПроизводстваЗаСменуПродукция.ЗаказРезерв не составного типа?
17 Droning1C
 
15.07.19
16:41
(14) Знаю, что лучше по регистрам, но в данной ситуации надо и по непроведенным тоже обрабатывать... Заказ резерв это реквизит табличной части Продукция документа ОтчетПроизводстваЗаСмену. Тип составной, да.
18 Droning1C
 
15.07.19
16:42
(16) ДокументСсылка.ЗаказНаПроизводство, ДокументСсылка.ЗаказПокупателя, ДокументСсылка.ВнутреннийЗаказ
19 xXeNoNx
 
15.07.19
16:43
(17) )) вот тебе и ответ
Почитай
https://its.1c.ru/db/metod8dev#content:5842:hdoc
20 xXeNoNx
 
15.07.19
16:45
если коротко, то нельзя получать данные от составного типа..., точнее можно, но...
21 Droning1C
 
15.07.19
16:50
(20) спс. щаща, разбираюсь, читаю)
22 Droning1C
 
15.07.19
16:57
(20) чет я нагородил эеробору какую-то видимо.... Зависло...





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

СГРУППИРОВАТЬ ПО
    ВЫРАЗИТЬ(РеализацияТоваровУслуг.Сделка КАК Документ.ЗаказПокупателя)

ОБЪЕДИНИТЬ

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

СГРУППИРОВАТЬ ПО
    ВЫРАЗИТЬ(ОтчетПроизводстваЗаСменуПродукция.ЗаказРезерв КАК Документ.ЗаказПокупателя)
23 ptiz
 
15.07.19
16:59
(0)
1) Вместо жуткого ГДЕ сделай объединение из двух вариантов: когда &ЗаказПокупателя  - пустой, и когда - непустой.
2) Вместо ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, -365) - передавай посчитанную дату.
24 Droning1C
 
15.07.19
17:02
(20) ну как? опозорил Раменское я?)))
25 Droning1C
 
15.07.19
17:03
(23) пробую
26 xXeNoNx
 
15.07.19
17:07
(24) да хз.., я не от туда)
27 Droning1C
 
15.07.19
17:08
(26) О.., так тыж тож из Рамы...   А кто тогда?)
28 ptiz
 
15.07.19
17:08
(25) И убери нафиг условие "РеализацияТоваровУслуг.Сделка В "
29 xXeNoNx
 
15.07.19
17:12
(22) предыдущий запрос мне нравился больше...
(23) >> Вместо ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, -365) - передавай посчитанную дату. - много ли это даст прироста...

В первую очередь исправь обращение через точку от составного типа...
30 xXeNoNx
 
15.07.19
17:13
(28) так убрал же в (22)