Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Помогите с запросом

Помогите с запросом
Я
   AnisaL
 
29.03.19 - 09:15
Доброе утро!
Скажите пожалуйста, есть запрос по продажам: продажи обороты, как сделать чтобы можно было получить цену номенклатуры на дату документа продажи (расходной накладной)? Я написала запрос, но там цена получается NULL



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


ВЫБРАТЬ
    ПродажиОбороты.Номенклатура КАК Номенклатура,
    ПродажиОбороты.Ответственный КАК Ответственный,
    ПродажиОбороты.Организация КАК Организация,
    ПродажиОбороты.Период КАК ДатаДок,
    ПродажиОбороты.СуммаОборот КАК СуммаОборот,
    ПродажиОбороты.СебестоимостьОборот КАК СебестоимостьОборот,
    ВЫБОР
        КОГДА ПродажиОбороты.Организация.Наименование ПОДОБНО &ИПСорокина
            ТОГДА ПродажиОбороты.СуммаОборот * 0.07
        ИНАЧЕ ВЫБОР
                КОГДА ПродажиОбороты.Организация.Наименование ПОДОБНО &ООО
                    ТОГДА ВЫБОР
                            КОГДА ПродажиОбороты.Документ.Дата МЕЖДУ &Дата1 И &Дата2
                                ТОГДА (ПродажиОбороты.СуммаОборот - ПродажиОбороты.СебестоимостьОборот) * 0.01
                            ИНАЧЕ (ПродажиОбороты.СуммаОборот - ПродажиОбороты.СебестоимостьОборот) * 0.15
                        КОНЕЦ
                ИНАЧЕ 0
            КОНЕЦ
    КОНЕЦ КАК Налог,
    ВЫБОР
        КОГДА ПродажиОбороты.Организация.Наименование ПОДОБНО &ИПСорокина
            ТОГДА ПродажиОбороты.СуммаОборот - ПродажиОбороты.СебестоимостьОборот - ПродажиОбороты.СуммаОборот * 0.07
        ИНАЧЕ ВЫБОР
                КОГДА ПродажиОбороты.Организация.Наименование ПОДОБНО &ООО
                    ТОГДА ВЫБОР
                            КОГДА ПродажиОбороты.Документ.Дата МЕЖДУ &Дата1 И &Дата2
                                ТОГДА ПродажиОбороты.СуммаОборот - ПродажиОбороты.СебестоимостьОборот - (ПродажиОбороты.СуммаОборот - ПродажиОбороты.СебестоимостьОборот) * 0.01
                            ИНАЧЕ ПродажиОбороты.СуммаОборот - ПродажиОбороты.СебестоимостьОборот - (ПродажиОбороты.СуммаОборот - ПродажиОбороты.СебестоимостьОборот) * 0.15
                        КОНЕЦ
                ИНАЧЕ ПродажиОбороты.СуммаОборот - ПродажиОбороты.СебестоимостьОборот
            КОНЕЦ
    КОНЕЦ КАК Прибыль,
    ВТЦены.Цена КАК Цена
ИЗ
    РегистрНакопления.Продажи.Обороты(
            &НачПериода,
            &КонПериода,
            Регистратор,
            Ответственный <> ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка)
                И ВЫБОР
                    КОГДА &Сотрудник <> ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка)
                        ТОГДА Ответственный В ИЕРАРХИИ (&Сотрудник)
                    ИНАЧЕ ИСТИНА
                КОНЕЦ
                ) КАК ПродажиОбороты           //И Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Запас)
        ЛЕВОЕ СОЕДИНЕНИЕ ВТЦены
        ПО ПродажиОбороты.Номенклатура = ВТЦены.Номенклатура
            И ПродажиОбороты.Период >= ВТЦены.Период
ГДЕ
    ПродажиОбороты.Ответственный <> &Ответственный

УПОРЯДОЧИТЬ ПО
    Номенклатура,
    Ответственный
ИТОГИ
    МАКСИМУМ(Организация),
    СУММА(СуммаОборот),
    СУММА(СебестоимостьОборот),
    СУММА(Налог),
    СУММА(Прибыль)
ПО
    Номенклатура,
    Ответственный
АВТОУПОРЯДОЧИВАНИЕ
 
 
   piter3
 
1 - 29.03.19 - 09:17
в поиск же
   13_Mult
 
2 - 29.03.19 - 09:25
   catena
 
3 - 29.03.19 - 10:05
В срезе будет только один период. Не нужен тут срез.
   AnisaL
 
4 - 29.03.19 - 10:05
(2) вот какой запрос у меня получился:

  ВЫБРАТЬ
    //ВложенныйЗапрос.Ссылка, 

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

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

    
         
УПОРЯДОЧИТЬ ПО
    Номенклатура,
    Ответственный
ИТОГИ
    МАКСИМУМ(Организация),
    СУММА(СуммаОборот),
    СУММА(СебестоимостьОборот),
    СУММА(Налог),
    СУММА(Прибыль)
ПО
    Номенклатура,
    Ответственный
АВТОУПОРЯДОЧИВАНИЕ          
            
И ошибку выдает:
{ВнешняяОбработка.КонсольЗапросов_82.Форма.Форма.Форма(39)}: Ошибка при вызове конструктора (КонструкторЗапроса)
            Конструктор = Новый КонструкторЗапроса(ЭлементДерева.ТекстЗапроса);
по причине:
{(73, 2)}: Неоднозначное поле "Номенклатура"
<<?>>Номенклатура,
   catena
 
5 - 29.03.19 - 10:07
(4)Ну так уточни в упорядочивании, по какой именно номенклатуре ему упорядочивать.
   1Сергей
 
6 - 29.03.19 - 10:08
(4)
УПОРЯДОЧИТЬ ПО
    ВложенныйЗапрос.Номенклатура



А за вот это:
КОГДА ВложенныйЗапрос.Организация.Наименование ПОДОБНО &ИПСорокина
линейкой по пальцам
   AnisaL
 
7 - 29.03.19 - 10:18
(5) (6) спасибо, помогло; а как по-другому сделать?
   1Сергей
 
8 - 29.03.19 - 10:22
(7) У вас одна организация ИП Сорокина или несколько? Если одна, то указывай ссылку на неё.

КОГДА ВложенныйЗапрос.Организация = &ИПСорокинаСсылка


Если несколько, то передавай список

КОГДА ВложенныйЗапрос.Организация В (&ИПСорокинаСписок)

   novichok79
 
9 - 29.03.19 - 10:43
вот это забористая дичь...
   AnisaL
 
10 - 29.03.19 - 10:47
(9) в каком смысле?)
   AnisaL
 
11 - 29.03.19 - 10:49
вот какой запрос в итоге получился:
ВЫБРАТЬ
    ИТОГ.Номенклатура КАК Номенклатура,
    ИТОГ.Ответственный КАК Ответственный,
    ИТОГ.Организация КАК Организация,
    ИТОГ.СуммаОборот КАК СуммаОборот,
    ВЫБОР
        КОГДА ИТОГ.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
                И ИТОГ.Цена <> 0
            ТОГДА ИТОГ.Цена * ИТОГ.Количество
        ИНАЧЕ ИТОГ.СебестоимостьОборот
    КОНЕЦ КАК СебестоимостьОборот,
    ВЫБОР
        КОГДА ИТОГ.Организация.Наименование ПОДОБНО &ИПСорокина
            ТОГДА ИТОГ.СуммаОборот * 0.07
        ИНАЧЕ ВЫБОР
                КОГДА ИТОГ.Организация.Наименование ПОДОБНО &ООО
                    ТОГДА ВЫБОР
                            КОГДА ИТОГ.ДатаДок МЕЖДУ &Дата1 И &Дата2
                                ТОГДА (ИТОГ.СуммаОборот - ВЫБОР
                                        КОГДА ИТОГ.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
                                                И ИТОГ.Цена <> 0
                                            ТОГДА ИТОГ.Цена * ИТОГ.Количество
                                        ИНАЧЕ ИТОГ.СебестоимостьОборот
                                    КОНЕЦ) * 0.01
                            ИНАЧЕ (ИТОГ.СуммаОборот - ВЫБОР
                                    КОГДА ИТОГ.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
                                            И ИТОГ.Цена <> 0
                                        ТОГДА ИТОГ.Цена * ИТОГ.Количество
                                    ИНАЧЕ ИТОГ.СебестоимостьОборот
                                КОНЕЦ) * 0.15
                        КОНЕЦ
                ИНАЧЕ 0
            КОНЕЦ
    КОНЕЦ КАК Налог,
    ВЫБОР
        КОГДА ИТОГ.Организация.Наименование ПОДОБНО &ИПСорокина
            ТОГДА ИТОГ.СуммаОборот - ВЫБОР
                    КОГДА ИТОГ.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
                            И ИТОГ.Цена <> 0
                        ТОГДА ИТОГ.Цена * ИТОГ.Количество
                    ИНАЧЕ ИТОГ.СебестоимостьОборот
                КОНЕЦ - ИТОГ.СуммаОборот * 0.07
        ИНАЧЕ ВЫБОР
                КОГДА ИТОГ.Организация.Наименование ПОДОБНО &ООО
                    ТОГДА ВЫБОР
                            КОГДА ИТОГ.ДатаДок МЕЖДУ &Дата1 И &Дата2
                                ТОГДА ИТОГ.СуммаОборот - ВЫБОР
                                        КОГДА ИТОГ.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
                                                И ИТОГ.Цена <> 0
                                            ТОГДА ИТОГ.Цена * ИТОГ.Количество
                                        ИНАЧЕ ИТОГ.СебестоимостьОборот
                                    КОНЕЦ - (ИТОГ.СуммаОборот - ВЫБОР
                                        КОГДА ИТОГ.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
                                                И ИТОГ.Цена <> 0
                                            ТОГДА ИТОГ.Цена * ИТОГ.Количество
                                        ИНАЧЕ ИТОГ.СебестоимостьОборот
                                    КОНЕЦ) * 0.01
                            ИНАЧЕ ИТОГ.СуммаОборот - ВЫБОР
                                    КОГДА ИТОГ.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
                                            И ИТОГ.Цена <> 0
                                        ТОГДА ИТОГ.Цена * ИТОГ.Количество
                                    ИНАЧЕ ИТОГ.СебестоимостьОборот
                                КОНЕЦ - (ИТОГ.СуммаОборот - ВЫБОР
                                    КОГДА ИТОГ.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
                                            И ИТОГ.Цена <> 0
                                        ТОГДА ИТОГ.Цена * ИТОГ.Количество
                                    ИНАЧЕ ИТОГ.СебестоимостьОборот
                                КОНЕЦ) * 0.15
                        КОНЕЦ
                ИНАЧЕ ИТОГ.СуммаОборот - ВЫБОР
                        КОГДА ИТОГ.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
                                И ИТОГ.Цена <> 0
                            ТОГДА ИТОГ.Цена * ИТОГ.Количество
                        ИНАЧЕ ИТОГ.СебестоимостьОборот
                    КОНЕЦ
            КОНЕЦ
    КОНЕЦ КАК Прибыль
ИЗ
    (ВЫБРАТЬ
        ВложенныйЗапрос.Номенклатура КАК Номенклатура,
        ВложенныйЗапрос.Ответственный КАК Ответственный,
        ВложенныйЗапрос.Организация КАК Организация,
        ВложенныйЗапрос.ДатаДок КАК ДатаДок,
        ВложенныйЗапрос.СуммаОборот КАК СуммаОборот,
        ВложенныйЗапрос.СебестоимостьОборот КАК СебестоимостьОборот,
        ВложенныйЗапрос.Количество КАК Количество,
        ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК Цена,
        ВложенныйЗапрос.Количество * ЦеныНоменклатуры.Цена КАК Сумма
    ИЗ
        (ВЫБРАТЬ
            ПродажиОбороты.Номенклатура КАК Номенклатура,
            ПродажиОбороты.Ответственный КАК Ответственный,
            МАКСИМУМ(ПродажиОбороты.Регистратор.Дата) КАК ДатаДок,
            МАКСИМУМ(ПродажиОбороты.Организация) КАК Организация,
            СУММА(ПродажиОбороты.СуммаОборот) КАК СуммаОборот,
            СУММА(ПродажиОбороты.СебестоимостьОборот) КАК СебестоимостьОборот,
            СУММА(ПродажиОбороты.КоличествоОборот) КАК Количество,
            МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период
        ИЗ
            РегистрНакопления.Продажи.Обороты(
                    &НачПериода,
                    &КонПериода,
                    Регистратор,
                    Ответственный <> ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка)
                        И ВЫБОР
                            КОГДА &Сотрудник <> ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка)
                                ТОГДА Ответственный В ИЕРАРХИИ (&Сотрудник)
                            ИНАЧЕ ИСТИНА
                        КОНЕЦ) КАК ПродажиОбороты
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
                ПО ПродажиОбороты.Номенклатура = ЦеныНоменклатуры.Номенклатура
                    И (ЦеныНоменклатуры.ВидЦен = &ТипЦен)
                    И ПродажиОбороты.Период >= ЦеныНоменклатуры.Период
        
        СГРУППИРОВАТЬ ПО
            ПродажиОбороты.Номенклатура,
            ПродажиОбороты.Ответственный) КАК ВложенныйЗапрос
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
            ПО ВложенныйЗапрос.Период = ЦеныНоменклатуры.Период
                И ВложенныйЗапрос.Номенклатура = ЦеныНоменклатуры.Номенклатура
                И (ЦеныНоменклатуры.ВидЦен = &ТипЦен)) КАК ИТОГ
ГДЕ
    (ИТОГ.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
                И ИТОГ.Цена <> 0
            ИЛИ ИТОГ.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Запас))

УПОРЯДОЧИТЬ ПО
    ИТОГ.Номенклатура,
    ИТОГ.Ответственный
ИТОГИ
    МАКСИМУМ(Организация),
    СУММА(СуммаОборот),
    СУММА(СебестоимостьОборот),
    СУММА(Налог),
    СУММА(Прибыль)
ПО
    Номенклатура,
    Ответственный
АВТОУПОРЯДОЧИВАНИЕ
   AnisaL
 
12 - 29.03.19 - 10:54
(8) почему-то все строчки по 3 выводятся, как исправить?
https://d.radikal.ru/d31/1903/7b/b4e8bdb1fe35.jpg
   novichok79
 
13 - 29.03.19 - 11:06
(9) потому что тебе нужен срез по регистру цен на каждую дату.
накидал за 10 минут в КА 1.1
я бы делал таким образом (не проверял, но должно работать):

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

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    Т.ДокументПродажи КАК ДокументПродажи
ПОМЕСТИТЬ ВТ_Документы
ИЗ
    ВТ_Продажи КАК Т

СГРУППИРОВАТЬ ПО
    Т.ДокументПродажи
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    Т.ДокументПродажи,
    РеализацияТоваровУслуг.Дата
ПОМЕСТИТЬ ВТ_ДатыДокументов
ИЗ
    ВТ_Документы КАК Т
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        ПО Т.ДокументПродажи = РеализацияТоваровУслуг.Ссылка

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Т.ДокументПродажи,
    РеализацияТоваровУслуг.Дата
ИЗ
    ВТ_Документы КАК Т
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтчетОРозничныхПродажах КАК ОтчетОРозничныхПродажах
        ПО Т.ДокументПродажи = ОтчетОРозничныхПродажах.Ссылка,
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    Продажи.Номенклатура КАК Номенклатура,
    Продажи.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    Продажи.ДокументПродажи КАК ДокументПродажи,
    Даты.Дата КАК ДатаДокумента,
    СУММА(Продажи.КоличествоОборот) КАК КоличествоОборот,
    СУММА(Продажи.СтоимостьОборот) КАК СтоимостьОборот
ПОМЕСТИТЬ ВТ_ПродажиСДатой
ИЗ
    ВТ_Продажи КАК Продажи
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ДатыДокументов КАК Даты
        ПО Продажи.ДокументПродажи = Даты.ДокументПродажи

СГРУППИРОВАТЬ ПО
    Продажи.Номенклатура,
    Продажи.ХарактеристикаНоменклатуры,
    Продажи.ДокументПродажи,
    Даты.Дата
;

////////////////////////////////////////////////////////////////////////////////

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

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    Продажи.Номенклатура КАК Номенклатура,
    Продажи.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    Продажи.ДокументПродажи КАК ДокументПродажи,
    Продажи.Организация КАК Организация,
    Продажи.Контрагент КАК Контрагент,
    Продажи.КоличествоОборот КАК КоличествоОборот,
    Продажи.СтоимостьОборот КАК СтоимостьОборот,
    ЕСТЬNULL(ЦеныНаДатуПродажи.Валюта, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) КАК Валюта,
    ЕСТЬNULL(ЦеныНаДатуПродажи.Цена, 0) КАК Цена,
    ЕСТЬNULL(ЦеныНаДатуПродажи.ЕдиницаИзмерения, ЗНАЧЕНИЕ(Справочник.ЕдиницыИзмерения.ПустаяСсылка)) КАК ЕдиницаИзмерения
ИЗ
    ВТ_Продажи КАК Продажи
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЦеныНаДатуПродажи КАК ЦеныНаДатуПродажи
        ПО Продажи.Номенклатура = ЦеныНаДатуПродажи.Номенклатура
            И Продажи.ХарактеристикаНоменклатуры = ЦеныНаДатуПродажи.ХарактеристикаНоменклатуры
            И Продажи.ДокументПродажи = ЦеныНаДатуПродажи.ДокументПродажи
   novichok79
 
14 - 29.03.19 - 11:10
вот за такое надо долго любить в перверсивной форме:
зачем обращение к вложенным полям сущности?
SQL так не умеет - он будет лепить левое соединение к каждой сущности, в зависимости от типа, туда же идут твои Организация.Наименование и Документ.Дата, на 20 типов документов тебе в SQL прилетит 20 left join'ов
нафига 10 строчные CASE WHEN? SQL подавится на большой выборке. почему нельзя выбрать, а потом посчитать?

    ВЫБОР
        КОГДА ИТОГ.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
                И ИТОГ.Цена <> 0
            ТОГДА ИТОГ.Цена * ИТОГ.Количество
        ИНАЧЕ ИТОГ.СебестоимостьОборот
    КОНЕЦ КАК СебестоимостьОборот,
    ВЫБОР
        КОГДА ИТОГ.Организация.Наименование ПОДОБНО &ИПСорокина
            ТОГДА ИТОГ.СуммаОборот * 0.07
        ИНАЧЕ ВЫБОР
                КОГДА ИТОГ.Организация.Наименование ПОДОБНО &ООО
                    ТОГДА ВЫБОР
                            КОГДА ИТОГ.ДатаДок МЕЖДУ &Дата1 И &Дата2
                                ТОГДА (ИТОГ.СуммаОборот - ВЫБОР
                                        КОГДА ИТОГ.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
                                                И ИТОГ.Цена <> 0
                                            ТОГДА ИТОГ.Цена * ИТОГ.Количество
                                        ИНАЧЕ ИТОГ.СебестоимостьОборот
                                    КОНЕЦ) * 0.01
                            ИНАЧЕ (ИТОГ.СуммаОборот - ВЫБОР
                                    КОГДА ИТОГ.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
                                            И ИТОГ.Цена <> 0
                                        ТОГДА ИТОГ.Цена * ИТОГ.Количество
                                    ИНАЧЕ ИТОГ.СебестоимостьОборот
                                КОНЕЦ) * 0.15
                        КОНЕЦ
                ИНАЧЕ 0
            КОНЕЦ
    КОНЕЦ КАК Налог,
   novichok79
 
15 - 29.03.19 - 11:15
и вот это...

ИТОГ.Организация.Наименование ПОДОБНО &ООО

ну такое...
чтобы эту дичь выполнить, SQL'ю надо будет сделать full scan по таблице "организации" на каждую строку итоговой выборки, потом еще проверить наименование на подобие, которое ты передаешь. операция, которая будет тяжелее, чем обычное сравнение.

ИТОГ.Организация = &ООО, это как минимум.
в &ООО у тебя ссылка на организацию должна быть.

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