Имя: Пароль:
1C
1С v8
УТ 11 Вид цены - Произвольный запрос к данным ИБ
0 fantomrik
 
25.01.16
20:24
Камрады, привет!

Кто плотно сидел с настройками видов цен, помогите пожалуйста настроить вид цены (пусть будет "Розница" называться).

Он должен рассчитываться как ПлановаяСебестоимость * КоэффНаценки, где плановая себестоимость это цена поступления*5%, а КоэффНаценки это дополнительный реквизит справочника Номенклатура с типом число 10,2.

Есть еще доп условие, если текущая цена Розница < предыдущей (закупка стала дешевле), оставляем прошлую цену Розница. Но это совсем хардкор, первую бы часть задачи решить. В теории наверно это часть должна решаться при расчете ПлановаяСебестоимость.

Саму ПлановуюСебестоимость считаю как отдельный вид цены - наценка на цену поступления.
1 fantomrik
 
25.01.16
20:46
Cyberhawk долго тему смотрит, наверное поможет :)
2 Cyberhawk
 
25.01.16
21:13
Опиши конкретно, в чем сложность.
Один вид цены ты уже настроил, насколько Я понял.
3 fantomrik
 
25.01.16
22:28
(2) Не понимаю как запрос так написать - как в задаче моей. Первый вид цен просто наценка на цену закупки, это понятно.
4 fantomrik
 
25.01.16
22:47
Вобщем пока скривил душой, исказил задачу...

Сделал "Розничную" так - взял схему МаксимальныеЦеныПоставщика, немного изменил ее - добавив свой коэффициент наценки из ДопРеквизита номенклатуры.

Так работает все, позже - будет время, буду разбираться доскональнее.
5 100kg
 
26.01.16
09:25
(4) Поделись схемой с общественностью
6 fantomrik
 
27.01.16
15:19
(5) Типовая схема, в последней таблицы соединил с ТЧ Доп.реквизиты номенклатуры. В параметрах добавилось -СвойствоКоэффициентНаценки  выражение: ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Коэффициент наценки")

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

ИНДЕКСИРОВАТЬ ПО
    Сегменты.Номенклатура,
    Сегменты.Характеристика,
    ИспользуетсяОтборПоСегментуНоменклатуры
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
    ПоступлениеТоваровУслугТовары.Характеристика КАК Характеристика,
    МАКСИМУМ(ПоступлениеТоваровУслугТовары.Ссылка.Дата) КАК МаксимальнаяДата
ПОМЕСТИТЬ ВременнаяТаблица_1
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ГДЕ
    ПоступлениеТоваровУслугТовары.Ссылка.Дата <= КОНЕЦПЕРИОДА(&ДатаДокумента, ДЕНЬ)
    И ПоступлениеТоваровУслугТовары.Ссылка.Проведен
    И НЕ &ЭтоВводНаОсновании
{ГДЕ
    ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
    ПоступлениеТоваровУслугТовары.Характеристика КАК Характеристика}

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
    ПоступлениеТоваровУслугТовары.Характеристика КАК Характеристика,
    МАКСИМУМ(ПоступлениеТоваровУслугТовары.Ссылка) КАК ДокументПоступления
ПОМЕСТИТЬ ВременнаяТаблица_2
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВременнаяТаблица_1 КАК Таблица
        ПО ПоступлениеТоваровУслугТовары.Номенклатура = Таблица.Номенклатура
            И ПоступлениеТоваровУслугТовары.Характеристика = Таблица.Характеристика
            И ПоступлениеТоваровУслугТовары.Ссылка.Дата = Таблица.МаксимальнаяДата
ГДЕ
    НЕ &ЭтоВводНаОсновании
    И ПоступлениеТоваровУслугТовары.Ссылка.Проведен

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТоварыДокумента.Номенклатура КАК Номенклатура,
    ТоварыДокумента.Характеристика КАК Характеристика,
    ТоварыДокумента.Упаковка КАК Упаковка,
    ТоварыДокумента.КоличествоУпаковок КАК КоличествоУпаковок,
    ЕСТЬNULL(ТоварыДокумента.Упаковка.Коэффициент, 1) КАК Коэффициент,
    ВЫРАЗИТЬ(ВЫБОР
            КОГДА ВидыЦен.ЦенаВключаетНДС
                        И ТоварыДокумента.Ссылка.ЦенаВключаетНДС
                    ИЛИ НЕ ВидыЦен.ЦенаВключаетНДС
                        И НЕ ТоварыДокумента.Ссылка.ЦенаВключаетНДС
                ТОГДА ТоварыДокумента.Цена
            КОГДА ВидыЦен.ЦенаВключаетНДС
                    И НЕ ТоварыДокумента.Ссылка.ЦенаВключаетНДС
                ТОГДА (ТоварыДокумента.Сумма + ТоварыДокумента.СуммаНДС) / ТоварыДокумента.КоличествоУпаковок
            КОГДА НЕ ВидыЦен.ЦенаВключаетНДС
                    И ТоварыДокумента.Ссылка.ЦенаВключаетНДС
                ТОГДА (ТоварыДокумента.Сумма - ТоварыДокумента.СуммаНДС) / ТоварыДокумента.КоличествоУпаковок
        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК Цена,
    ТоварыДокумента.Ссылка.Валюта КАК Валюта
ПОМЕСТИТЬ ТаблицаЦены
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ТоварыДокумента
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВременнаяТаблица_2 КАК Таблица
        ПО ТоварыДокумента.Номенклатура = Таблица.Номенклатура
            И ТоварыДокумента.Характеристика = Таблица.Характеристика
            И ТоварыДокумента.Ссылка = Таблица.ДокументПоступления
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен
        ПО (ВидыЦен.Ссылка = &ВидЦены)
ГДЕ
    НЕ &ЭтоВводНаОсновании
    И ТоварыДокумента.КоличествоУпаковок <> 0
    И ТоварыДокумента.Ссылка.Проведен
{ГДЕ
    ((ТоварыДокумента.Номенклатура, ТоварыДокумента.Характеристика) В
            (ВЫБРАТЬ
                ОтборПоСегментуНоменклатуры.Номенклатура,
                ОтборПоСегментуНоменклатуры.Характеристика
            ИЗ
                ОтборПоСегментуНоменклатуры
            ГДЕ
                ОтборПоСегментуНоменклатуры.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)) КАК Поле2}

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

ВЫБРАТЬ
    ТоварыДокументаВводНаОсновании.Номенклатура,
    ТоварыДокументаВводНаОсновании.Характеристика,
    ТоварыДокументаВводНаОсновании.Упаковка,
    ТоварыДокументаВводНаОсновании.КоличествоУпаковок,
    ЕСТЬNULL(ТоварыДокументаВводНаОсновании.Упаковка.Коэффициент, 1),
    ВЫРАЗИТЬ(ВЫБОР
            КОГДА ВидыЦен.ЦенаВключаетНДС
                        И ТоварыДокументаВводНаОсновании.Ссылка.ЦенаВключаетНДС
                    ИЛИ НЕ ВидыЦен.ЦенаВключаетНДС
                        И НЕ ТоварыДокументаВводНаОсновании.Ссылка.ЦенаВключаетНДС
                ТОГДА ТоварыДокументаВводНаОсновании.Цена
            КОГДА ВидыЦен.ЦенаВключаетНДС
                    И НЕ ТоварыДокументаВводНаОсновании.Ссылка.ЦенаВключаетНДС
                ТОГДА (ТоварыДокументаВводНаОсновании.Сумма + ТоварыДокументаВводНаОсновании.СуммаНДС) / ТоварыДокументаВводНаОсновании.КоличествоУпаковок
            КОГДА НЕ ВидыЦен.ЦенаВключаетНДС
                    И ТоварыДокументаВводНаОсновании.Ссылка.ЦенаВключаетНДС
                ТОГДА (ТоварыДокументаВводНаОсновании.Сумма - ТоварыДокументаВводНаОсновании.СуммаНДС) / ТоварыДокументаВводНаОсновании.КоличествоУпаковок
        КОНЕЦ КАК ЧИСЛО(15, 2)),
    ТоварыДокументаВводНаОсновании.Ссылка.Валюта
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ТоварыДокументаВводНаОсновании
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен
        ПО (ВидыЦен.Ссылка = &ВидЦены)
ГДЕ
    ТоварыДокументаВводНаОсновании.Ссылка = &Основание
    И ТоварыДокументаВводНаОсновании.КоличествоУпаковок <> 0
    И ТоварыДокументаВводНаОсновании.Ссылка.Проведен
    И &ЭтоВводНаОсновании
{ГДЕ
    ((ТоварыДокументаВводНаОсновании.Номенклатура, ТоварыДокументаВводНаОсновании.Характеристика) В
            (ВЫБРАТЬ
                ОтборПоСегментуНоменклатуры.Номенклатура,
                ОтборПоСегментуНоменклатуры.Характеристика
            ИЗ
                ОтборПоСегментуНоменклатуры
            ГДЕ
                ОтборПоСегментуНоменклатуры.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)) КАК Поле2}

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

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

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

ВЫБРАТЬ
    ТоварыДокументаВводНаОсновании.НоменклатураОприходование,
    ТоварыДокументаВводНаОсновании.ХарактеристикаОприходование,
    ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка),
    ТоварыДокументаВводНаОсновании.Количество,
    1,
    ВЫРАЗИТЬ(ВЫБОР
            КОГДА ВидыЦен.ЦенаВключаетНДС
                ТОГДА ТоварыДокументаВводНаОсновании.Цена
            КОГДА НЕ ВидыЦен.ЦенаВключаетНДС
                ТОГДА ТоварыДокументаВводНаОсновании.Цена - ТоварыДокументаВводНаОсновании.Цена * ВЫБОР
                        КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18)
                            ТОГДА 0.18
                        КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10)
                            ТОГДА 0.1
                        КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС0)
                            ТОГДА 0
                        КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.БезНДС)
                            ТОГДА 0
                        КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18_118)
                            ТОГДА 0.18
                        КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10_110)
                            ТОГДА 0.1
                        ИНАЧЕ 0
                    КОНЕЦ
        КОНЕЦ КАК ЧИСЛО(15, 2)),
    Константы.ВалютаУправленческогоУчета
ИЗ
    Документ.ПорчаТоваров.Товары КАК ТоварыДокументаВводНаОсновании
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен
        ПО (ВидыЦен.Ссылка = &ВидЦены)
        ЛЕВОЕ СОЕДИНЕНИЕ Константы КАК Константы
        ПО (ИСТИНА)
ГДЕ
    ТоварыДокументаВводНаОсновании.Ссылка = &Основание
    И ТоварыДокументаВводНаОсновании.Количество <> 0
    И ТоварыДокументаВводНаОсновании.Ссылка.Проведен
    И &ЭтоВводНаОсновании
{ГДЕ
    ((ТоварыДокументаВводНаОсновании.НоменклатураОприходование, ТоварыДокументаВводНаОсновании.ХарактеристикаОприходование) В
            (ВЫБРАТЬ
                ОтборПоСегментуНоменклатуры.Номенклатура,
                ОтборПоСегментуНоменклатуры.Характеристика
            ИЗ
                ОтборПоСегментуНоменклатуры
            ГДЕ
                ОтборПоСегментуНоменклатуры.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)) КАК Поле2}

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

ВЫБРАТЬ
    ТоварыДокументаВводНаОсновании.Номенклатура,
    ТоварыДокументаВводНаОсновании.Характеристика,
    ТоварыДокументаВводНаОсновании.Упаковка,
    ТоварыДокументаВводНаОсновании.КоличествоУпаковок,
    ЕСТЬNULL(ТоварыДокументаВводНаОсновании.Упаковка.Коэффициент, 1),
    ВЫРАЗИТЬ(ВЫБОР
            КОГДА ВидыЦен.ЦенаВключаетНДС
                ТОГДА ТоварыДокументаВводНаОсновании.Цена
            КОГДА НЕ ВидыЦен.ЦенаВключаетНДС
                ТОГДА ТоварыДокументаВводНаОсновании.Цена - ТоварыДокументаВводНаОсновании.Цена * ВЫБОР
                        КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18)
                            ТОГДА 0.18
                        КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10)
                            ТОГДА 0.1
                        КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС0)
                            ТОГДА 0
                        КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.БезНДС)
                            ТОГДА 0
                        КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18_118)
                            ТОГДА 0.18
                        КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10_110)
                            ТОГДА 0.1
                        ИНАЧЕ 0
                    КОНЕЦ
        КОНЕЦ КАК ЧИСЛО(15, 2)),
    Константы.ВалютаУправленческогоУчета
ИЗ
    Документ.ПрочееОприходованиеТоваров.Товары КАК ТоварыДокументаВводНаОсновании
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен
        ПО (ВидыЦен.Ссылка = &ВидЦены)
        ЛЕВОЕ СОЕДИНЕНИЕ Константы КАК Константы
        ПО (ИСТИНА)
ГДЕ
    ТоварыДокументаВводНаОсновании.Ссылка = &Основание
    И ТоварыДокументаВводНаОсновании.КоличествоУпаковок <> 0
    И ТоварыДокументаВводНаОсновании.Ссылка.Проведен
    И &ЭтоВводНаОсновании
{ГДЕ
    ((ТоварыДокументаВводНаОсновании.Номенклатура, ТоварыДокументаВводНаОсновании.Характеристика) В
            (ВЫБРАТЬ
                ОтборПоСегментуНоменклатуры.Номенклатура,
                ОтборПоСегментуНоменклатуры.Характеристика
            ИЗ
                ОтборПоСегментуНоменклатуры
            ГДЕ
                ОтборПоСегментуНоменклатуры.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)) КАК Поле2}
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ТаблицаЦены.Номенклатура КАК Номенклатура,
    ТаблицаЦены.Характеристика КАК Характеристика,
    ТаблицаЦены.Упаковка КАК Упаковка,
    ТаблицаЦены.Коэффициент КАК Коэффициент,
    ВЫБОР
        КОГДА &ВыборЦены = 1
            ТОГДА (ВЫРАЗИТЬ(Цены.МаксимальнаяЦенаЗаЕдиницу * ТаблицаЦены.Коэффициент КАК ЧИСЛО(15, 2))) * (ВЫРАЗИТЬ(НоменклатураДополнительныеРеквизиты.Значение КАК ЧИСЛО(15, 2)))
        КОГДА &ВыборЦены = 2
            ТОГДА (ВЫРАЗИТЬ(Цены.МинимальнаяЦенаЗаЕдиницу * ТаблицаЦены.Коэффициент КАК ЧИСЛО(15, 2))) * (ВЫРАЗИТЬ(НоменклатураДополнительныеРеквизиты.Значение КАК ЧИСЛО(15, 2)))
        КОГДА &ВыборЦены = 3
            ТОГДА (ВЫРАЗИТЬ(Цены.СредняяЦенаЗаЕдиницу * ТаблицаЦены.Коэффициент КАК ЧИСЛО(15, 2))) * (ВЫРАЗИТЬ(НоменклатураДополнительныеРеквизиты.Значение КАК ЧИСЛО(15, 2)))
        ИНАЧЕ 0
    КОНЕЦ КАК Цена,
    ТаблицаЦены.Валюта КАК Валюта
ИЗ
    ТаблицаЦены КАК ТаблицаЦены
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ТаблицаЦены.Номенклатура КАК Номенклатура,
            ТаблицаЦены.Характеристика КАК Характеристика,
            МАКСИМУМ(ВЫРАЗИТЬ(ТаблицаЦены.Цена / ТаблицаЦены.Коэффициент КАК ЧИСЛО(15, 2))) КАК МаксимальнаяЦенаЗаЕдиницу,
            МИНИМУМ(ВЫРАЗИТЬ(ТаблицаЦены.Цена / ТаблицаЦены.Коэффициент КАК ЧИСЛО(15, 2))) КАК МинимальнаяЦенаЗаЕдиницу,
            СУММА(ТаблицаЦены.Цена * ТаблицаЦены.КоличествоУпаковок) / СУММА(ТаблицаЦены.КоличествоУпаковок * ТаблицаЦены.Коэффициент) КАК СредняяЦенаЗаЕдиницу,
            ТаблицаЦены.Валюта КАК Валюта
        ИЗ
            ТаблицаЦены КАК ТаблицаЦены
        
        СГРУППИРОВАТЬ ПО
            ТаблицаЦены.Номенклатура,
            ТаблицаЦены.Характеристика,
            ТаблицаЦены.Валюта) КАК Цены
        ПО (Цены.Номенклатура = ТаблицаЦены.Номенклатура)
            И (Цены.Характеристика = ТаблицаЦены.Характеристика)
            И (Цены.Валюта = ТаблицаЦены.Валюта)
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ТаблицаЦены.Номенклатура КАК Номенклатура,
            ТаблицаЦены.Характеристика КАК Характеристика,
            МАКСИМУМ(ТаблицаЦены.Коэффициент) КАК МаксимальныйКоэффициент,
            МИНИМУМ(ТаблицаЦены.Коэффициент) КАК МинимальныйКоэффициент
        ИЗ
            ТаблицаЦены КАК ТаблицаЦены
        
        СГРУППИРОВАТЬ ПО
            ТаблицаЦены.Номенклатура,
            ТаблицаЦены.Характеристика) КАК Коэффициенты
        ПО (Коэффициенты.Номенклатура = ТаблицаЦены.Номенклатура)
            И (Коэффициенты.Характеристика = ТаблицаЦены.Характеристика)
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
        ПО ТаблицаЦены.Номенклатура = НоменклатураДополнительныеРеквизиты.Ссылка
ГДЕ
    ВЫБОР
            КОГДА &ВыборУпаковки = 1
                ТОГДА ТаблицаЦены.Коэффициент = Коэффициенты.МаксимальныйКоэффициент
            КОГДА &ВыборУпаковки = 2
                ТОГДА ТаблицаЦены.Коэффициент = Коэффициенты.МинимальныйКоэффициент
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ
    И НоменклатураДополнительныеРеквизиты.Свойство = &СвойствоКоэффициентНаценки
7 fantomrik
 
27.01.16
15:25
К этой схеме нужно добавить следующую логику - брать срез последних по ценам номенклатуры (видцен = Закупка) и брать большую цену между последним поступлением и ценой из регистра. Вот это реализовать пока не получилось.

У нас может быть что поступлений нет, а цена закупки была установлена программно (номенклатура, которую мы под заказ продаем).

К схеме выше, в последнем запросе связал левым соединением ТаблицуЦен и ЦеныНоменклатурыСрезПоследних(, ВидЦен = &Закупка), но не канает. в ТаблицеЦен нет товаров которые нам не поступали.

Попробовал последний запрос поместить в ВТ, сделать след запрос в котором основная таблица и с ней левым соединением связываю ВТ и СрезПоследних, но тоже не отрабатывает.

Подскажите, как решить задачку? Спасибо!
8 fantomrik
 
27.01.16
15:28
Кстати народ - в ручную как на этом форуме код в спойлер записхивать? Автоматом криво как то пихает)
9 fantomrik
 
27.01.16
16:08
Мастера запросов в СКД, помогите пожалуйста! Вроде не очень сложная задача, для тех кто занимался этим.
10 fantomrik
 
27.01.16
16:52
(7) Параметры в СКД у меня описаны в выражении (вид цены - Справочники.ВидыЦен.НАйтиПоНаименованию("Закупка")), с ошибкой описал.

А так берем типовую схему, связаываем левым соединением ТаблицуЦен и ЦеныНоменклатурыСрезПоследних(, ВидЦен = &Закупка), и цену берем максим .

Задача решена.