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

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

Запрос с условием НЕ

Запрос с условием НЕ
Я
   antihacker
 
12.10.16 - 07:49
Всем привет !

Запрос должен вытаксивать количество дней присутствия товара.
    Запрос1.Текст ="    
    |ВЫБРАТЬ
    |ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура               КАК Номенклатура,
    |ПартииТоваровНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |ПартииТоваровНаСкладахОстаткиИОбороты.Склад                      КАК Склад,
    |СУММА(
    |    ВЫБОР
    |        КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.Период = НАЧАЛОПЕРИОДА(&КонПериода, День) ТОГДА
    |            ВЫБОР
    |                КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстатокПредыдущий > 0 ТОГДА
    |                    ВЫБОР
    |                        КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток <= 0 ТОГДА
    |                            РАЗНОСТЬДАТ(ПартииТоваровНаСкладахОстаткиИОбороты.ПредыдущийПериод, ПартииТоваровНаСкладахОстаткиИОбороты.Период, ДЕНЬ)
    |                        ИНАЧЕ
    |                            РАЗНОСТЬДАТ(ПартииТоваровНаСкладахОстаткиИОбороты.ПредыдущийПериод, &КонПериода, ДЕНЬ) + 1
    |                    КОНЕЦ
    |                ИНАЧЕ                            
    |                    ВЫБОР 
    |                        КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток > 0 ТОГДА
    |                             РАЗНОСТЬДАТ(ПартииТоваровНаСкладахОстаткиИОбороты.Период, &КонПериода, ДЕНЬ) + 1
    |                         ИНАЧЕ
    |                             0
    |                     КОНЕЦ
    |            КОНЕЦ
    |        ИНАЧЕ
    |            ВЫБОР
    |                КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстатокПредыдущий > 0 ТОГДА
    |                    РАЗНОСТЬДАТ(ПартииТоваровНаСкладахОстаткиИОбороты.ПредыдущийПериод, ПартииТоваровНаСкладахОстаткиИОбороты.Период, ДЕНЬ)
    |                ИНАЧЕ
    |                    0
    |            КОНЕЦ
    |    КОНЕЦ) КАК КоличествоДнейНаСкладе
|ИЗ
|    (ВЫБРАТЬ 
|        ТаблицаПредыдущиеПериоды.Номенклатура                                      КАК Номенклатура,
|        ТаблицаПредыдущиеПериоды.ХарактеристикаНоменклатуры                        КАК ХарактеристикаНоменклатуры,
|        ТаблицаПредыдущиеПериоды.Склад                                             КАК Склад,
|        ТаблицаПредыдущиеПериоды.Период                                            КАК Период,
|        ТаблицаПредыдущиеПериоды.КоличествоКонечныйОстаток                         КАК КоличествоКонечныйОстаток,
|        ТаблицаПредыдущиеПериоды.ПредыдущийПериод                                  КАК ПредыдущийПериод,
|        ПартииТоваровНаСкладахОстаткиИОборотыПредыдущие.КоличествоКонечныйОстаток  КАК КоличествоКонечныйОстатокПредыдущий
|    ИЗ
|    (   ВЫБРАТЬ
|            ПартииТоваровНаСкладахОстаткиИОбороты1.Номенклатура               КАК Номенклатура,
|            ПартииТоваровНаСкладахОстаткиИОбороты1.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
|            ПартииТоваровНаСкладахОстаткиИОбороты1.Склад                      КАК Склад,
|            ПартииТоваровНаСкладахОстаткиИОбороты1.Период                     КАК Период,
|            ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоКонечныйОстаток  КАК КоличествоКонечныйОстаток,
|            МАКСИМУМ(ПартииТоваровНаСкладахОстаткиИОбороты2.Период)           КАК ПредыдущийПериод
|        ИЗ
|            РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&НачПериода, &КонПериода, День, ,Склад В(&СкладыСЗ) И  Номенклатура В ИЕРАРХИИ  (&Номенклатура)) КАК ПартииТоваровНаСкладахОстаткиИОбороты1  ГДЕ НЕ (ПартииТоваровНаСкладахОстаткиИОбороты1.Период  В (&СписокДАТ))
|            ЛЕВОЕ СОЕДИНЕНИЕ 
|            РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&НачПериода, &КонПериода, День, ,Склад В(&СкладыСЗ) И  Номенклатура В ИЕРАРХИИ  (&Номенклатура)) КАК ПартииТоваровНаСкладахОстаткиИОбороты2  ГДЕ НЕ (ПартииТоваровНаСкладахОстаткиИОбороты2.Период  В (&СписокДАТ))
|            ПО (ИСТИНА)
|                И ПартииТоваровНаСкладахОстаткиИОбороты1.Номенклатура               = ПартииТоваровНаСкладахОстаткиИОбороты2.Номенклатура
|                И ПартииТоваровНаСкладахОстаткиИОбороты1.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладахОстаткиИОбороты2.ХарактеристикаНоменклатуры
|                И ПартииТоваровНаСкладахОстаткиИОбороты1.Склад                      = ПартииТоваровНаСкладахОстаткиИОбороты2.Склад
|                И ПартииТоваровНаСкладахОстаткиИОбороты1.Период > ПартииТоваровНаСкладахОстаткиИОбороты2.Период
|    
|        СГРУППИРОВАТЬ ПО
|            ПартииТоваровНаСкладахОстаткиИОбороты1.Номенклатура,
|            ПартииТоваровНаСкладахОстаткиИОбороты1.ХарактеристикаНоменклатуры,
|            ПартииТоваровНаСкладахОстаткиИОбороты1.Склад,
|            ПартииТоваровНаСкладахОстаткиИОбороты1.Период,
|            ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоКонечныйОстаток
|    ) КАК ТаблицаПредыдущиеПериоды
|        
|    ЛЕВОЕ СОЕДИНЕНИЕ 
|    РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&НачПериода, &КонПериода, День, ,Склад В(&СкладыСЗ) И Номенклатура В ИЕРАРХИИ  (&Номенклатура)) КАК ПартииТоваровНаСкладахОстаткиИОборотыПредыдущие
|        
|    ПО ИСТИНА
|        И ТаблицаПредыдущиеПериоды.Номенклатура               = ПартииТоваровНаСкладахОстаткиИОборотыПредыдущие.Номенклатура
|        И ТаблицаПредыдущиеПериоды.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладахОстаткиИОборотыПредыдущие.ХарактеристикаНоменклатуры
|        И ТаблицаПредыдущиеПериоды.Склад                      = ПартииТоваровНаСкладахОстаткиИОборотыПредыдущие.Склад
|        И ТаблицаПредыдущиеПериоды.ПредыдущийПериод           = ПартииТоваровНаСкладахОстаткиИОборотыПредыдущие.Период
|    ) КАК ПартииТоваровНаСкладахОстаткиИОбороты
|            
|СГРУППИРОВАТЬ ПО
|    ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
|    ПартииТоваровНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры,
|    ПартииТоваровНаСкладахОстаткиИОбороты.Склад
|        
|АВТОУПОРЯДОЧИВАНИЕ";

Ругаеться

    РезЗапрос = Запрос1.Выполнить().Выбрать(); 
по причине:
{(52, 13)}: Ожидается псевдоним запроса
<<?>>ЛЕВОЕ СОЕДИНЕНИЕ

Если из этих строчек 

|            РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&НачПериода, &КонПериода, День, ,Склад В(&СкладыСЗ) И  Номенклатура В ИЕРАРХИИ  (&Номенклатура)) КАК ПартииТоваровНаСкладахОстаткиИОбороты1  ГДЕ НЕ (ПартииТоваровНаСкладахОстаткиИОбороты1.Период  В (&СписокДАТ))
|            ЛЕВОЕ СОЕДИНЕНИЕ 
|            РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&НачПериода, &КонПериода, День, ,Склад В(&СкладыСЗ) И  Номенклатура В ИЕРАРХИИ  (&Номенклатура)) КАК ПартииТоваровНаСкладахОстаткиИОбороты2  ГДЕ НЕ (ПартииТоваровНаСкладахОстаткиИОбороты2.Период  В (&СписокДАТ))


Убрать условия

ГДЕ НЕ (ПартииТоваровНаСкладахОстаткиИОбороты1.Период  В (&СписокДАТ))

И еще это условие

ГДЕ НЕ (ПартииТоваровНаСкладахОстаткиИОбороты2.Период  В (&СписокДАТ))


То все работает. Но он тогда он не убирает количество выходных дней.
 
 
   Defender aka LINN
 
1 - 12.10.16 - 07:56
по причине:
{(52, 13)}: Ожидается псевдоним запроса

Вроде все буквы же русские
   В тылу врага
 
2 - 12.10.16 - 08:02
а как это ты так написал?

КАК ПартииТоваровНаСкладахОстаткиИОбороты1  ГДЕ НЕ (ПартииТоваровНаСкладахОстаткиИОбороты1.Период  В (&СписокДАТ))
            ЛЕВОЕ СОЕДИНЕНИЕ
   antihacker
 
3 - 12.10.16 - 08:03
Нужно было как то исключить выходные дни из общего количества. Вот и написал ))

Как исключить выходные дни ?
   Митяйский
 
4 - 12.10.16 - 08:07
(3) Переделай пакетом запросов, исключи там все, что тебе не надо, заодно увидишь, что у тебя в запросе было не так.

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