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

СГРУППИРОВАТЬ ПО
    ЗаказПокупателяТовары.Номенклатура,
    ВложенныйЗапрос.КоличествоДнейНаСкладе,
    ВложенныйЗапрос.Склад,
    ВложенныйЗапрос.ХарактеристикаНоменклатуры

УПОРЯДОЧИТЬ ПО
    ЗаказПокупателяТовары.Номенклатура.Наименование,
    Количество,
    ДнейПродажи,
    СерПрод,
    КоличествоДнейНаСкладе,
    СерПрод2,
    Склад,
    ХарактеристикаНоменклатуры




Как правильно перенести запрос с консоли в СКД
Не все данные выводит в отчете, некоторые номенклатуры не выводитС чем это может быть связано ??
1 Горогуля
 
18.11.15
18:20
с ДНК, однозначно
2 singlych
 
18.11.15
18:23
запрос не читал.
параметры периодов в виртуальных таблицах оберни в фигурные скобки
3 Nuobu
 
18.11.15
18:25
(0) РегистрНакопления.Продажи.Обороты(НАЧАЛОПЕРИОДА(&НачПериода, МЕСЯЦ), КОНЕЦПЕРИОДА(&КонПериода, МЕСЯЦ), День, ) КАК ПродажиОбороты

Вот так должно быть
РегистрНакопления.Продажи.Обороты({&СуперНачалоПериода}, {&СуперКонецПериода}, День, ) КАК ПродажиОбороты

А в параметрах заполни эти значения.
4 singlych
 
18.11.15
18:26
да можно и так вроде
{НАЧАЛОПЕРИОДА(&НачПериода, МЕСЯЦ)}
5 Nuobu
 
18.11.15
18:27
(4) Дольше отрабатывает.
6 VikingKosmo
 
18.11.15
18:27
(4) разрешаю
7 singlych
 
18.11.15
18:28
(5) хм
8 zak555
 
18.11.15
18:28
Убрать нахер вложенные запросы6
9 Casper21
 
18.11.15
18:29
(8) и как тогда зделать?
10 VikingKosmo
 
18.11.15
18:30
разложи по ВТ
11 Горогуля
 
18.11.15
18:31
(9) значала сакончить школу
12 Casper21
 
18.11.15
18:33
(11) спасибо за совет, я учту
13 zak555
 
18.11.15
18:35
Что там делают документы в соединении с регистрами ?
14 Casper21
 
18.11.15
18:42
(13) номенклатуру беру с док заказы покупателя.
15 Casper21
 
18.11.15
18:43
и количество
16 Nuobu
 
18.11.15
18:46
(14) Тогда оставь {НАЧАЛОПЕРИОДА(&НачПериода, МЕСЯЦ)}
17 Casper21
 
18.11.15
18:51
(16) а тут как?

ВЫБОР
КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.Период = (НАЧАЛОПЕРИОДА(&НачПериода, День)
    ТОГДА ВЫБОР
        КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстатокПредыдущий > 0
            ТОГДА ВЫБОР
18 Casper21
 
18.11.15
18:53
а тут
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&НачПериода, &КонПериода, День, , ) КАК
на ето?
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты({&НачПериода}, {&КонПериода}, День, , )
???
19 Casper21
 
18.11.15
18:53
блин теперь еще больше данных чем в консоли
20 Мимохожий Однако
 
18.11.15
18:55
Тебе не угодишь
21 Casper21
 
18.11.15
20:18
(20) ну по идее данные в консоли и в СКД должны совпадать?))
22 PLUT
 
18.11.15
20:29
(21) плохая идея. мучай тогда уже консоль компоновки данных
23 Casper21
 
19.11.15
00:34
ВЫБРАТЬ
    ЗаказПокупателяТовары.Номенклатура КАК Номенклатура,
    СУММА(ЗаказПокупателяТовары.Количество) КАК Количество,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиОбороты.Период) КАК ДнейПродажи,
    СУММА(ЗаказПокупателяТовары.Количество) / КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиОбороты.Период) КАК СерПрод,
    ВложенныйЗапрос.КоличествоДнейНаСкладе КАК КоличествоДнейНаСкладе,
    СУММА(ЗаказПокупателяТовары.Количество) / ВложенныйЗапрос.КоличествоДнейНаСкладе КАК СерПрод2,
    ВложенныйЗапрос.Склад КАК Склад,
    ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
ИЗ
    (ВЫБРАТЬ
        ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
        ПартииТоваровНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
        ПартииТоваровНаСкладахОстаткиИОбороты.Склад КАК Склад,
        СУММА(ВЫБОР
                КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.Период = НАЧАЛОПЕРИОДА(&КонПериода, ДЕНЬ)
                    ТОГДА ВЫБОР
                            КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстатокПредыдущий > 0
                                ТОГДА ВЫБОР
                                        КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток <= 0
                                            ТОГДА РАЗНОСТЬДАТ(ПартииТоваровНаСкладахОстаткиИОбороты.ПредыдущийПериод, ПартииТоваровНаСкладахОстаткиИОбороты.Период, ДЕНЬ)
                                        ИНАЧЕ РАЗНОСТЬДАТ(ПартииТоваровНаСкладахОстаткиИОбороты.ПредыдущийПериод, &КонПериода, ДЕНЬ) + 1
                                    КОНЕЦ
                            ИНАЧЕ ВЫБОР
                                    КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток > 0
                                        ТОГДА РАЗНОСТЬДАТ(ПартииТоваровНаСкладахОстаткиИОбороты.Период, &КонПериода, ДЕНЬ) + 1
                                    ИНАЧЕ 0
                                КОНЕЦ
                        КОНЕЦ
                ИНАЧЕ ВЫБОР
                        КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстатокПредыдущий > 0
                            ТОГДА РАЗНОСТЬДАТ(ПартииТоваровНаСкладахОстаткиИОбороты.ПредыдущийПериод, ПартииТоваровНаСкладахОстаткиИОбороты.Период, ДЕНЬ)
                        ИНАЧЕ 0
                    КОНЕЦ
            КОНЕЦ) КАК КоличествоДнейНаСкладе
    ИЗ
        (ВЫБРАТЬ
            ТаблицаПредыдущиеПериоды.Номенклатура КАК Номенклатура,
            ТаблицаПредыдущиеПериоды.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
            ТаблицаПредыдущиеПериоды.Склад КАК Склад,
            ТаблицаПредыдущиеПериоды.Период КАК Период,
            ТаблицаПредыдущиеПериоды.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
            ТаблицаПредыдущиеПериоды.ПредыдущийПериод КАК ПредыдущийПериод,
            ПартииТоваровНаСкладахОстаткиИОборотыПредыдущие.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстатокПредыдущий
        ИЗ
            (ВЫБРАТЬ
                ПартииТоваровНаСкладахОстаткиИОбороты1.Номенклатура КАК Номенклатура,
                ПартииТоваровНаСкладахОстаткиИОбороты1.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
                ПартииТоваровНаСкладахОстаткиИОбороты1.Склад КАК Склад,
                ПартииТоваровНаСкладахОстаткиИОбороты1.Период КАК Период,
                ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
                МАКСИМУМ(ПартииТоваровНаСкладахОстаткиИОбороты2.Период) КАК ПредыдущийПериод
            ИЗ
                РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты({(&НачПериода)}, {(&КонПериода)}, День, , ) КАК ПартииТоваровНаСкладахОстаткиИОбороты1
                    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты({(&НачПериода)}, {(&КонПериода)}, День, , ) КАК ПартииТоваровНаСкладахОстаткиИОбороты2
                    ПО (ИСТИНА)
                        И ПартииТоваровНаСкладахОстаткиИОбороты1.Номенклатура = ПартииТоваровНаСкладахОстаткиИОбороты2.Номенклатура
                        И ПартииТоваровНаСкладахОстаткиИОбороты1.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладахОстаткиИОбороты2.ХарактеристикаНоменклатуры
                        И ПартииТоваровНаСкладахОстаткиИОбороты1.Склад = ПартииТоваровНаСкладахОстаткиИОбороты2.Склад
                        И ПартииТоваровНаСкладахОстаткиИОбороты1.Период > ПартииТоваровНаСкладахОстаткиИОбороты2.Период
            СГРУППИРОВАТЬ ПО
                ПартииТоваровНаСкладахОстаткиИОбороты1.Номенклатура,
                ПартииТоваровНаСкладахОстаткиИОбороты1.ХарактеристикаНоменклатуры,
                ПартииТоваровНаСкладахОстаткиИОбороты1.Склад,
                ПартииТоваровНаСкладахОстаткиИОбороты1.Период,
                ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоКонечныйОстаток) КАК ТаблицаПредыдущиеПериоды
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты({(&НачПериода)}, {(&КонПериода)}, День, , ) КАК ПартииТоваровНаСкладахОстаткиИОборотыПредыдущие
                ПО (ИСТИНА)
                    И ТаблицаПредыдущиеПериоды.Номенклатура = ПартииТоваровНаСкладахОстаткиИОборотыПредыдущие.Номенклатура
                    И ТаблицаПредыдущиеПериоды.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладахОстаткиИОборотыПредыдущие.ХарактеристикаНоменклатуры
                    И ТаблицаПредыдущиеПериоды.Склад = ПартииТоваровНаСкладахОстаткиИОборотыПредыдущие.Склад
                    И ТаблицаПредыдущиеПериоды.ПредыдущийПериод = ПартииТоваровНаСкладахОстаткиИОборотыПредыдущие.Период
        ГДЕ
            ТаблицаПредыдущиеПериоды.КоличествоКонечныйОстаток >= 0
            И ПартииТоваровНаСкладахОстаткиИОборотыПредыдущие.КоличествоКонечныйОстаток > 0) КАК ПартииТоваровНаСкладахОстаткиИОбороты
    СГРУППИРОВАТЬ ПО
    ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
        ПартииТоваровНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры,
        ПартииТоваровНаСкладахОстаткиИОбороты.Склад) КАК ВложенныйЗапрос
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты({(НАЧАЛОПЕРИОДА(&НачПериода, МЕСЯЦ))}, {(КОНЕЦПЕРИОДА(&КонПериода, МЕСЯЦ))}, День, ) КАК ПродажиОбороты
            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
            ПО (ЗаказПокупателяТовары.Номенклатура = ПродажиОбороты.Номенклатура)
        ПО (ЗаказПокупателяТовары.Номенклатура = ВложенныйЗапрос.Номенклатура)
ГДЕ
    НЕ ЗаказПокупателяТовары.Номенклатура ЕСТЬ NULL
СГРУППИРОВАТЬ ПО
    ЗаказПокупателяТовары.Номенклатура,
    ВложенныйЗапрос.КоличествоДнейНаСкладе,
    ВложенныйЗапрос.Склад,
    ВложенныйЗапрос.ХарактеристикаНоменклатуры
УПОРЯДОЧИТЬ ПО
    ЗаказПокупателяТовары.Номенклатура.Наименование,
    Количество,
    ДнейПродажи,
    СерПрод,
    КоличествоДнейНаСкладе,
    СерПрод2,
    Склад,
    ХарактеристикаНоменклатуры




Я везде поставил {} ??? верно ??
А теперь отбор по периоде пропал
24 Casper21
 
19.11.15
14:59
А?
Основная теорема систематики: Новые системы плодят новые проблемы.