Имя: Пароль:
1C
1С v8
v8: Помогите, пожалуйста, с запросом
0 wendy
 
10.06.14
17:29
Здравствуйте, пишу отчет для УТ10.
Суть отчета: необходимо получить таблицу такого вида
Номенклатура|Характеристика|Количество|Цена продажи|Цена закупочная|
Причем цена закупочная должна браться на дату продажи.
Подскажите пожалуйста как енто лучше сделать. Смотрел как получают на каждый день цену, но не уверен что это подходит. Да сделать это надо исключительно запросом. СКД не предлагать.
1 shuhard
 
10.06.14
17:30
(0) срез последних на каждую дату именно то, что тебе нужно
2 wendy
 
10.06.14
17:32
(1) инфа соточка?
3 Dionis Sergeevich
 
10.06.14
17:35
по реализации?
4 wendy
 
10.06.14
17:45
Ну там будут документы регистра продажи в основном реализации.
5 wendy
 
10.06.14
19:39
Ну вот, не фига ваш метод не работает=(((((( если было несколько установок с одним и тем же типом цен то все двоится, троиться и множиться.
6 mikeA
 
10.06.14
20:03
задача в-общем то стандартная
две таблицы, в первой соединение продаж и закупок по дата продажи >= дата закупки, группировка по номенклатуре, цене и дате продажи, максимум по дате заупки
во второй соединение первой с закупкой по дате закупки
когда в закупках есть несколько строк с одинаковыми датами, нужно предварительно вычислить среднюю цену закупки на каждую дату.
как-то так. запрос, наверное, быстрее было бы написать)))
7 shuhard
 
10.06.14
20:22
(5) конечно нам метод кривой, а не твои руки =)
8 wendy
 
11.06.14
08:43
Ну все все все, разобрался. Сделал но метод получился как полумера. Виртуальные таблицы нельзя использовать во вложенных запросах. В общем принял решение перепиливать на СКД отчет. Всем спасибо.
9 vhl
 
11.06.14
08:45
(8) почитай как строятся виртуальные таблицы - узнаешь много нового
10 wendy
 
11.06.14
08:49
Именно потому что почитал про ВТ и пишу что полумера. В методе используется 2 ВТ, и три пакета запроса, а вот тут то и начинаются приколы.
11 anaed
 
11.06.14
08:51
(8) да ладно, открой типовую валовку, там во вложенных запросах вт обороты рн продаж, и сс продаж замечательно "не работают"
12 wendy
 
11.06.14
09:13
Да, круто, тогда подскажите как мне в запросе

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВложенныйЗапрос.Организация КАК Организация,
    ВложенныйЗапрос.Проект КАК Проект,
    ВложенныйЗапрос.Подразделение КАК Подразделение,
    ВложенныйЗапрос.Покупатель КАК Покупатель,
    ВложенныйЗапрос.ДоговорПокупателя КАК ДоговорПокупателя,
    ВложенныйЗапрос.Номенклатура КАК Номенклатура,
    ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ВложенныйЗапрос.ЗаказПокупателя КАК ЗаказПокупателя,
    ВложенныйЗапрос.Регистратор КАК Регистратор,
    ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Организация) КАК ОрганизацияПредставление,
    ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Проект) КАК ПроектПредставление,
    ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Подразделение) КАК ПодразделениеПредставление,
    ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Покупатель) КАК ПокупательПредставление,
    ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.ДоговорПокупателя) КАК ДоговорПокупателяПредставление,
    ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Номенклатура) КАК НоменклатураПредставление,
    ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.ХарактеристикаНоменклатуры) КАК ХарактеристикаНоменклатурыПредставление,
    ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.ЗаказПокупателя) КАК ЗаказПокупателяПредставление,
    ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Регистратор) КАК РегистраторПредставление,
    ВложенныйЗапрос.Период КАК Период,
    ВложенныйЗапрос.ПериодДень КАК ПериодДень,
    ВложенныйЗапрос.ПериодНеделя КАК ПериодНеделя,
    ВложенныйЗапрос.ПериодДекада КАК ПериодДекада,
    ВложенныйЗапрос.ПериодМесяц КАК ПериодМесяц,
    ВложенныйЗапрос.ПериодКвартал КАК ПериодКвартал,
    ВложенныйЗапрос.ПериодПолугодие КАК ПериодПолугодие,
    ВложенныйЗапрос.ПериодГод КАК ПериодГод,
    ВложенныйЗапрос.Количество КАК Количество,
    ВложенныйЗапрос.КоличествоЕдиницОтчетов КАК КоличествоЕдиницОтчетов,
    ВложенныйЗапрос.КоличествоБазовыхЕдиниц КАК КоличествоБазовыхЕдиниц,
    ВложенныйЗапрос.СтоимостьБезНДС КАК СтоимостьБезНДС,
    ВложенныйЗапрос.НДС КАК НДС,
    ВложенныйЗапрос.Стоимость КАК Стоимость
{ВЫБРАТЬ
    Организация.*,
    Проект.*,
    Подразделение.*,
    Покупатель.*,
    ДоговорПокупателя.*,
    Номенклатура.*,
    ХарактеристикаНоменклатуры.*,
    ЗаказПокупателя.*,
    Регистратор.*,
    Период,
    ПериодДень,
    ПериодНеделя,
    ПериодДекада,
    ПериодМесяц,
    ПериодКвартал,
    ПериодПолугодие,
    ПериодГод,
    Количество,
    КоличествоЕдиницОтчетов,
    КоличествоБазовыхЕдиниц,
    СтоимостьБезНДС,
    НДС,
    Стоимость}
ИЗ
    (ВЫБРАТЬ
        ВложенныйЗапрос.Организация КАК Организация,
        ВложенныйЗапрос.Проект КАК Проект,
        ВложенныйЗапрос.Подразделение КАК Подразделение,
        ВложенныйЗапрос.Покупатель КАК Покупатель,
        ВложенныйЗапрос.ДоговорПокупателя КАК ДоговорПокупателя,
        ВложенныйЗапрос.Номенклатура КАК Номенклатура,
        ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
        ВложенныйЗапрос.ЗаказПокупателя КАК ЗаказПокупателя,
        ВложенныйЗапрос.Регистратор КАК Регистратор,
        ВложенныйЗапрос.Период КАК Период,
        НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Период, ДЕНЬ) КАК ПериодДень,
        НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Период, НЕДЕЛЯ) КАК ПериодНеделя,
        НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Период, ДЕКАДА) КАК ПериодДекада,
        НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Период, МЕСЯЦ) КАК ПериодМесяц,
        НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Период, КВАРТАЛ) КАК ПериодКвартал,
        НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Период, ПОЛУГОДИЕ) КАК ПериодПолугодие,
        НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Период, ГОД) КАК ПериодГод,
        СУММА(ВложенныйЗапрос.Количество) КАК Количество,
        СУММА(ВложенныйЗапрос.КоличествоЕдиницОтчетов) КАК КоличествоЕдиницОтчетов,
        СУММА(ВложенныйЗапрос.КоличествоБазовыхЕдиниц) КАК КоличествоБазовыхЕдиниц,
        СУММА(ВложенныйЗапрос.СтоимостьБезНДС) КАК СтоимостьБезНДС,
        СУММА(ВложенныйЗапрос.НДС) КАК НДС,
        СУММА(ВложенныйЗапрос.Стоимость) КАК Стоимость
    {ВЫБРАТЬ
        Организация,
        Проект,
        Подразделение,
        Покупатель,
        ДоговорПокупателя,
        Номенклатура,
        ХарактеристикаНоменклатуры,
        ЗаказПокупателя,
        Регистратор,
        Период,
        ПериодДень,
        ПериодНеделя,
        ПериодДекада,
        ПериодМесяц,
        ПериодКвартал,
        ПериодПолугодие,
        ПериодГод}
    ИЗ
        (ВЫБРАТЬ
            ПродажиОбороты.Проект КАК Проект,
            ПродажиОбороты.Подразделение КАК Подразделение,
            ПродажиОбороты.Контрагент КАК Покупатель,
            ПродажиОбороты.ДоговорКонтрагента КАК ДоговорПокупателя,
            ПродажиОбороты.Номенклатура КАК Номенклатура,
            ПродажиОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
            ПродажиОбороты.ЗаказПокупателя КАК ЗаказПокупателя,
            ПродажиОбороты.Организация КАК Организация,
            ПродажиОбороты.Регистратор КАК Регистратор,
            ПродажиОбороты.Период КАК Период,
            ПродажиОбороты.КоличествоОборот КАК Количество,
            ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент, 1) / ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент, 1) КАК КоличествоЕдиницОтчетов,
            ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент, 1) КАК КоличествоБазовыхЕдиниц,
            ПродажиОбороты.СтоимостьОборот - ПродажиОбороты.НДСОборот КАК СтоимостьБезНДС,
            ПродажиОбороты.НДСОборот КАК НДС,
            ПродажиОбороты.СтоимостьОборот КАК Стоимость
        ИЗ
            РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, Регистратор, {(Организация).* КАК Организация, (Проект).* КАК Проект, (Подразделение).* КАК Подразделение, (Контрагент).* КАК Покупатель, (ДоговорКонтрагента).* КАК ДоговорПокупателя, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры, (ЗаказПокупателя).* КАК ЗаказПокупателя}) КАК ПродажиОбороты
                ЛЕВОЕ СОЕДИНЕНИЕ втПродажа КАК ТаблицаРегистраПродажиСебестоимость
                ПО (ТаблицаРегистраПродажиСебестоимость.Номенклатура = ПродажиОбороты.Номенклатура)
                    И (ТаблицаРегистраПродажиСебестоимость.ХарактеристикаНоменклатуры = ПродажиОбороты.ХарактеристикаНоменклатуры)
                    И (ТаблицаРегистраПродажиСебестоимость.ЗаказПокупателя = ПродажиОбороты.ЗаказПокупателя)
                    И (ТаблицаРегистраПродажиСебестоимость.Регистратор = ПродажиОбороты.Регистратор)) КАК ВложенныйЗапрос
    
    СГРУППИРОВАТЬ ПО
        ВложенныйЗапрос.Организация,
        ВложенныйЗапрос.Проект,
        ВложенныйЗапрос.Подразделение,
        ВложенныйЗапрос.Покупатель,
        ВложенныйЗапрос.ДоговорПокупателя,
        ВложенныйЗапрос.Номенклатура,
        ВложенныйЗапрос.ХарактеристикаНоменклатуры,
        ВложенныйЗапрос.ЗаказПокупателя,
        ВложенныйЗапрос.Регистратор,
        ВложенныйЗапрос.Период) КАК ВложенныйЗапрос
{ГДЕ
    ВложенныйЗапрос.Регистратор.*,
    ВложенныйЗапрос.Период,
    ВложенныйЗапрос.ПериодДень,
    ВложенныйЗапрос.ПериодНеделя,
    ВложенныйЗапрос.ПериодДекада,
    ВложенныйЗапрос.ПериодМесяц,
    ВложенныйЗапрос.ПериодКвартал,
    ВложенныйЗапрос.ПериодПолугодие,
    ВложенныйЗапрос.ПериодГод,
    ВложенныйЗапрос.Количество,
    ВложенныйЗапрос.КоличествоЕдиницОтчетов,
    ВложенныйЗапрос.КоличествоБазовыхЕдиниц,
    ВложенныйЗапрос.СтоимостьБезНДС,
    ВложенныйЗапрос.НДС,
    ВложенныйЗапрос.Стоимость}
{УПОРЯДОЧИТЬ ПО
    Организация.*,
    Проект.*,
    Подразделение.*,
    Покупатель.*,
    ДоговорПокупателя.*,
    Номенклатура.*,
    ХарактеристикаНоменклатуры.*,
    ЗаказПокупателя.*,
    Регистратор.*,
    Период,
    ПериодДень,
    ПериодНеделя,
    ПериодДекада,
    ПериодМесяц,
    ПериодКвартал,
    ПериодПолугодие,
    ПериодГод,
    Количество,
    КоличествоЕдиницОтчетов,
    КоличествоБазовыхЕдиниц,
    СтоимостьБезНДС,
    НДС,
    Стоимость}
ИТОГИ
    СУММА(Количество),
    СУММА(КоличествоЕдиницОтчетов),
    СУММА(КоличествоБазовыхЕдиниц),
    СУММА(СтоимостьБезНДС),
    СУММА(НДС),
    СУММА(Стоимость)
ПО
    ОБЩИЕ
{ИТОГИ ПО
    Организация.*,
    Проект.*,
    Подразделение.*,
    Покупатель.*,
    ДоговорПокупателя.*,
    Номенклатура.*,
    ХарактеристикаНоменклатуры.*,
    ЗаказПокупателя.*,
    Регистратор.*,
    Период,
    ПериодДень,
    ПериодНеделя,
    ПериодДекада,
    ПериодМесяц,
    ПериодКвартал,
    ПериодПолугодие,
    ПериодГод}
заменить расчет себестоимости по следующему запросу

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

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

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    втТоварыСдатами.Номенклатура,
    втТоварыСдатами.ХарактеристикаНоменклатуры,
    втТоварыСдатами.ЗаказПокупателя,
    втТоварыСдатами.Регистратор,
    ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) * ЕСТЬNULL(втТоварыСдатами.Количество, 0) КАК СтоимостьОборот
ИЗ
    втТоварыСдатами КАК втТоварыСдатами
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
        ПО втТоварыСдатами.Номенклатура = ЦеныНоменклатуры.Номенклатура
            И втТоварыСдатами.ХарактеристикаНоменклатуры = ЦеныНоменклатуры.ХарактеристикаНоменклатуры
            И втТоварыСдатами.ДатаУстановкиЦены = ЦеныНоменклатуры.Период
ГДЕ
    ЦеныНоменклатуры.ТипЦен = &ТипЦен

Кто подскажет тому будет реальный респект =)
13 anaed
 
11.06.14
09:20
1) собрать вт, окончательную выборку тоже в вт загнать
2) вт с окончательной выборкой вставить в левое соединение вместо таблицысебестоимостипродаж
14 wendy
 
11.06.14
09:24
Блиииин, устал объяснять, пакет запроса останется только 1, а мне надо 3. Если можешь то приведщи понятный пример пожалуйста.
15 rinaty17
 
11.06.14
09:35
в свое время я тоже этим занимался
были сложности, пришел к такому запросу, и им только пользуюсь, другого варианта не нашел
ВЫБРАТЬ
    ЦеныНоменклатуры.Номенклатура,
    ЦеныНоменклатуры.Период,
    ЦеныНоменклатуры.ТипЦен,
    ЦеныНоменклатуры.Цена
ПОМЕСТИТЬ ВТ_Цены
ИЗ
    РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
    ЦеныНоменклатуры.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
    И ЦеныНоменклатуры.ТипЦен = &ТипЦен
;

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

СГРУППИРОВАТЬ ПО
    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря,
    ВТ_Цены.ТипЦен,
    ЕСТЬNULL(ВТ_Цены.Номенклатура, &ПустаяНоменклатура)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Цены_Календарь.ДатаКалендаря,
    ВТ_Цены_Календарь.Номенклатура,
    ЦеныНоменклатуры.Цена,
    ВТ_Цены_Календарь.ТипЦен
ПОМЕСТИТЬ ВТ_НужнаяЦена
ИЗ
    ВТ_Цены_Календарь КАК ВТ_Цены_Календарь
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
        ПО ВТ_Цены_Календарь.Номенклатура = ЦеныНоменклатуры.Номенклатура
            И ВТ_Цены_Календарь.Период = ЦеныНоменклатуры.Период
            И ВТ_Цены_Календарь.ТипЦен = ЦеныНоменклатуры.ТипЦен
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПродажиОбороты.Номенклатура КАК Номенклатура,
    ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,
    ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот,
    ПродажиОбороты.Регистратор,
    НЕДЕЛЯ(ПродажиОбороты.ПериодДень) КАК НомерНедели,
    ПродажиОбороты.ПериодДень КАК ПериодДень,
    ПродажиОбороты.Организация КАК Отдел,
    ПродажиОбороты.Регистратор.МаршрутТП.ФизическоеЛицо КАК ФИОТП,
    ПродажиОбороты.Контрагент КАК НаименованиеКлиента,
    ПродажиОбороты.Регистратор.ТорговаяТочка.АдресДоставки КАК ФактическийАдресКлиента,
    ПродажиОбороты.Регистратор.ТорговаяТочка,
    ПродажиОбороты.КоличествоОборот * ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент * ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Вес КАК Вес,
    ЕСТЬNULL(ВТ_НужнаяЦена.Цена, ЦеныНоменклатурыСрезПоследних.Цена) КАК ЦенаПоТипуЦен,
    ВЫБОР
        КОГДА ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20)
                ИЛИ ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20_120)
            ТОГДА 20
        КОГДА ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10)
                ИЛИ ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10_110)
            ТОГДА 10
        КОГДА ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18)
                ИЛИ ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18_118)
            ТОГДА 18
    КОНЕЦ КАК СтавкаНДС,
    ВЫРАЗИТЬ(ВЫБОР
            КОГДА ЕСТЬNULL(ВТ_НужнаяЦена.ТипЦен.ЦенаВключаетНДС, ЦеныНоменклатурыСрезПоследних.ТипЦен.ЦенаВключаетНДС)
                ТОГДА ЕСТЬNULL(ВТ_НужнаяЦена.Цена, ЦеныНоменклатурыСрезПоследних.Цена) - ЕСТЬNULL(ВТ_НужнаяЦена.Цена, ЦеныНоменклатурыСрезПоследних.Цена) * ВЫБОР
                        КОГДА ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20)
                                ИЛИ ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20_120)
                            ТОГДА 20
                        КОГДА ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10)
                                ИЛИ ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10_110)
                            ТОГДА 10
                        КОГДА ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18)
                                ИЛИ ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18_118)
                            ТОГДА 18
                    КОНЕЦ / (100 + ВЫБОР
                        КОГДА ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20)
                                ИЛИ ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20_120)
                            ТОГДА 20
                        КОГДА ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10)
                                ИЛИ ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10_110)
                            ТОГДА 10
                        КОГДА ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18)
                                ИЛИ ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18_118)
                            ТОГДА 18
                    КОНЕЦ)
            ИНАЧЕ ЕСТЬNULL(ВТ_НужнаяЦена.Цена, ЦеныНоменклатурыСрезПоследних.Цена)
        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК ЦенаБезНдс,
    (ВЫРАЗИТЬ(ВЫБОР
            КОГДА ЕСТЬNULL(ВТ_НужнаяЦена.ТипЦен.ЦенаВключаетНДС, ЦеныНоменклатурыСрезПоследних.ТипЦен.ЦенаВключаетНДС)
                ТОГДА ЕСТЬNULL(ВТ_НужнаяЦена.Цена, ЦеныНоменклатурыСрезПоследних.Цена) - ЕСТЬNULL(ВТ_НужнаяЦена.Цена, ЦеныНоменклатурыСрезПоследних.Цена) * ВЫБОР
                        КОГДА ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20)
                                ИЛИ ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20_120)
                            ТОГДА 20
                        КОГДА ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10)
                                ИЛИ ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10_110)
                            ТОГДА 10
                        КОГДА ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18)
                                ИЛИ ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18_118)
                            ТОГДА 18
                    КОНЕЦ / (100 + ВЫБОР
                        КОГДА ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20)
                                ИЛИ ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20_120)
                            ТОГДА 20
                        КОГДА ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10)
                                ИЛИ ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10_110)
                            ТОГДА 10
                        КОГДА ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18)
                                ИЛИ ПродажиОбороты.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18_118)
                            ТОГДА 18
                    КОНЕЦ)
            ИНАЧЕ ЕСТЬNULL(ВТ_НужнаяЦена.Цена, ЦеныНоменклатурыСрезПоследних.Цена)
        КОНЕЦ КАК ЧИСЛО(15, 2))) * ПродажиОбороты.КоличествоОборот КАК СтоимостьБезНДС
ПОМЕСТИТЬ ВТ_Итог
ИЗ
    РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаОкончания, Авто, ) КАК ПродажиОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаНачала, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
        ПО ПродажиОбороты.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_НужнаяЦена КАК ВТ_НужнаяЦена
        ПО ПродажиОбороты.ПериодДень = ВТ_НужнаяЦена.ДатаКалендаря
            И ПродажиОбороты.Номенклатура = ВТ_НужнаяЦена.Номенклатура
ГДЕ
    ПродажиОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Итог.НомерНедели КАК НомерНедели,
    ВТ_Итог.ПериодДень КАК Месяц,
    ВТ_Итог.ПериодДень КАК Дата,
    ВТ_Итог.Отдел,
    "" КАК КодАгента,
    ВТ_Итог.ФИОТП,
    "" КАК КодКлиента,
    ВТ_Итог.НаименованиеКлиента,
    ВТ_Итог.ФактическийАдресКлиента,
    ВТ_Итог.Номенклатура КАК НаименованиеТовара,
    ВТ_Итог.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
    ВТ_Итог.КоличествоОборот КАК ПродажиШт,
    ВТ_Итог.Вес КАК ВесКг,
    ВТ_Итог.СтоимостьОборот КАК ПродажиВРубСНдс,
    ВТ_Итог.СтоимостьБезНДС КАК ПродажиВЗакупочныхБезНдс
ИЗ
    ВТ_Итог КАК ВТ_Итог

УПОРЯДОЧИТЬ ПО
    Дата,
    ВТ_Итог.НаименованиеКлиента,
    НаименованиеТовара
АВТОУПОРЯДОЧИВАНИЕ
16 wendy
 
11.06.14
09:40
(15) Уважаю, это тоже что я вчера докурил и сделал, вероятно что варианта обернуть это запросами нет, уже делаю на скд.
17 rinaty17
 
11.06.14
09:44
(16) это рабочий код из универсального отчета, пользователи не  жалуются и были очень рады
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn