Имя: Пароль:
1C
1С v8
УТ 11 произвольный алгоритм
,
0 varyag
 
23.08.16
11:29
Здравствуйте!
Стоит задача разработать вид цены с произвольным алгоритмом. По первоначальной постановке задачи всё работало, но уточнения и дополнительные требования к алгоритму привели в тупик. В общем в консоли СКД все работает, а когда загружаю схему компоновки в ВидЦены - там начинаются чудеса. Т.е. в консоли цена из таблицы ЦеныНоменкдатурыСрезПоследних берется на ДатуДокумента, а при расчете  ВидаЦены в прайсе Цена берется самая последняя.
Вот история изменения цен:
http://storage4.static.itmages.ru/i/16/0823/h_1471940089_8884673_9a81b85f9c.png
Вот значение в консоли на дату до последнего изменения цены:
http://storage4.static.itmages.ru/i/16/0823/h_1471940089_8717045_35aa8ccd9c.png
Вот консоль после последнего изменения цены:
http://storage4.static.itmages.ru/i/16/0823/h_1471940089_5891339_bd78139db9.png
А вот что считается в прайсе (специально дату поставил даже до первого ввода цены):
http://storage5.static.itmages.ru/i/16/0823/h_1471940089_7331743_ad9d605dc9.png
Получается что в консоли отрабатывает нормально а реальной ситуации нет. Думал что ДатаДокумента берется просто текущая, но вывел в поле цена параметр ДатаДокумента, выразив как число, и дата оказалась не текущая а та что установлена в прайсе..
Алгоритм делал на основе типового алгоритма "Цены поступления". Но есть товары введенные вводом остатков или посредством сборки из комплектующих, для них цены установили руками и в дальнейшем при расчете если нет документа поступления и соответственно цены поступления, необходимо брать текущую цену на дату документа установки цен. Код запроса сюда лепить не стал, т.к. не знаю как сделать его сворачиваемым, а без этого он всю страницу займет.
1 varyag
 
23.08.16
12:03
Никто не поможет? у меня кончились мысли куда копать, что проверять
2 Cyberhawk
 
23.08.16
12:24
Так там же два столбика - цена на дату и новая цена. В качестве ноыой цены он тебе пишет последнюю актуальную. В качестве цены на дату - пусто. Что не так?
3 varyag
 
24.08.16
04:52
(2) Ты внимательно посмотри. 1й столбец - действующая цена на 23.07 - её нет, т.к. первая установка цен только 25.07. Мы расчитываем цену на 24.07 - и она соответственно тоже должна равняться нулю. Если я ставлю дату например 26.07 тогда в 1м столбце(текущая цена) получаем 44000, и во втором тоже должно быть 44000, т.к. 45000 действует с 28.07. Но получаю вот что:
http://storage2.static.itmages.ru/i/16/0824/h_1472003528_2793987_d55e1eedb4.png
4 varyag
 
24.08.16
11:53
поле Цена прописал как
ВЫРАЗИТЬ(ДЕНЬ(ВТ_ЦеныСрезПоследних.Период) КАК ЧИСЛО(10, 2))

в итоге в прайсе выводится:
http://storage9.static.itmages.ru/i/16/0824/h_1472028795_4901384_b0841ea38f.png
5 varyag
 
24.08.16
11:54
Уже удалил из запроса все лишнее и оставил так:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ЦеныПоступления.Номенклатура,
    ВТ_ЦеныПоступления.Характеристика,
    ВТ_ЦеныПоступления.Валюта,
    ВТ_ЦеныПоступления.Цена,
    ВТ_ЦеныПоступления.Упаковка,
    ВТ_ЦеныПоступления.Коэффициент,
    "ЦеныПоступления" КАК Запрос
ИЗ
    ВТ_ЦеныПоступления КАК ВТ_ЦеныПоступления

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

ВЫБРАТЬ
    ВТ_ЦеныСрезПоследних.Номенклатура,
    ВТ_ЦеныСрезПоследних.Характеристика,
    ВТ_ЦеныСрезПоследних.Валюта,
    ВЫРАЗИТЬ(ДЕНЬ(ВТ_ЦеныСрезПоследних.Период) КАК ЧИСЛО(10, 2)),
    ВТ_ЦеныСрезПоследних.Упаковка,
    1,
    "ЦеныСрезПоследних"
ИЗ
    ВТ_ЦеныСрезПоследних КАК ВТ_ЦеныСрезПоследних
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЦеныПоступления КАК ВТ_ЦеныПоступления
        ПО ВТ_ЦеныСрезПоследних.Номенклатура = ВТ_ЦеныПоступления.Номенклатура
            И ВТ_ЦеныСрезПоследних.Характеристика = ВТ_ЦеныПоступления.Характеристика
ГДЕ
    ВТ_ЦеныПоступления.Номенклатура ЕСТЬ NULL
6 Cyberhawk
 
24.08.16
11:55
Я правильно понял, что поведение первого столбца (цена на дату) тебя полностью устраивает?
7 varyag
 
24.08.16
12:01
(6) Правильно - это типовой механизм куда я не лез. Там просто отображается предыдущая цена, если она была задана. Косяк предполагаю в том, что в параметрах виртуальной таблицы Период я задаю на вкладке "Компоновка данных"
8 Cyberhawk
 
24.08.16
12:06
Теперь второй вопрос: почему считаешь, что в столбике "Новая цена" (который второй и тебя не устраивает) должна подставляться не последняя цена на конец времен, а цена на дату среза?
9 varyag
 
24.08.16
12:07
в общем похоже я все таки выяснил - если я задаю параметр период для ЦеныНоменклатурыСрезПоследних только на вкладке КомпоновкаДанных - то при расчете этот параметр игнорируется, если задаю только на вкладке Таблицы и поля - то появляется стандартный параметр Период на вкладке Параметры в СКД. Задал на обейх вкладка этот параметр как ДатаДокумента и все заработало.
10 varyag
 
24.08.16
12:08
(8) Потому что в параметрах таблицы я задавал параметр период, равный &ДатаДокумента. И в консоли СКД все нормально отрабатывало - посмотри скрин. Но в прайсе этот параметр игнгрировался
11 varyag
 
24.08.16
12:12
А форум действительно волшебный - сколько раз решались здесь проблемы, когда казалось же только бубен поможет)))
12 Cyberhawk
 
24.08.16
12:34
(9) Поздравляю
13 varyag
 
24.08.16
12:43
(12) Спасибо)
Основная теорема систематики: Новые системы плодят новые проблемы.