Имя: Пароль:
1C
1С v8
Запрос с условием НЕ
0 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.Период  В (&СписокДАТ))


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

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

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

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