Имя: Пароль:
1C
 
Запрос расчета общей ценности товара в определенный период
,
0 AlexeyVM
 
13.06.17
11:31
Добрый день.
Проблема с запросом. Суть в следующем:
Есть регистр накопления ТоварыОрганизаций (измерения - номенклатура, характеристика, склад, организация; ресурс - количество) и есть регистр сведений ЦеныНоменклатуры (измерения - вид цены, номенклатура, характеристика; ресурс - цена). Мне надо вывести общую ценность товара (кол-во*цену), только с отображением документа, который на нее повлиял. У документа также должна отображаться общая ценность товара. Написал запрос, общий итог выводит правильно, а вот промежуточные неправильно.
Проблема в том, что цены в регистре сведений менялись, а выводить надо с учетом цены, которая была на момент проведения документа.
Еще одна проблема, что надо выводить общую ценность также для документа изменения цен, который меняет цены в регистре сведений (считаться должна так - (колво товара * новая цена - колво товара * старая цена))
В параметрах я указываю организацию, склад, начало и конец периода и вид цены.
В общем  должно выглядеть примерно так:

    Дата        Регистратор           Оценка
                                      29000
                Остаток_До            0
03.06.2008      Поступление товаров   30000
06.06.2008      Изменение цены        30000
21.04.2011      Отчет о продажах     -31000

На данный момент выглядит так:

    Дата        Регистратор           Оценка
                                      29000
                Остаток_До            0
03.06.2008      Поступление товаров   60000
21.04.2011      Отчет о продажах     -31000

Т.е. проблема в том, что при выводе документов, он считает по последней цене (впринципе я так и написал запрос),а мне надо по актуальным ценам. Не пойму как исправить запрос.

Вот сам запрос:

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

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

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

СГРУППИРОВАТЬ ПО
    ТоварыНаСкладеПериод.Регистратор.Дата,
    ТоварыНаСкладеПериод.Регистратор
ИТОГИ ПО
    ОБЩИЕ
1 HeKrendel
 
13.06.17
11:33
(0) Где блоксхема принятия решений?
2 AlexeyVM
 
14.06.17
02:55
(1) Не понял Вас.
3 cw014
 
14.06.17
07:39
(0) Решаю эту задачу за 5000
4 h-sp
 
14.06.17
07:40
5 AlexeyVM
 
23.06.17
06:53
(4) Только сейчас вернулся к запросу
попробовал так как в книге, но цены не выводит (т.к. в подзапросе, находится последняя дата изменения цен из РС, но в изменениицен есть не все товары. Например 1.06.17 у меня изменились цены на товар1 и товар2, а 2.06.17 у меня изменились цены на товар3 и товар4. Документом товар1 и товар2 у меня приходят на склад 3.06.17, и последнее изменение цены у меня показывает на 2.06.17, и далее он сопоставляет цену по этой дате из РС, но там нет этого товара) Как быть в такой ситуации?
6 AlexeyVM
 
23.06.17
06:58
Вот код ВЫБРАТЬ
    Таб1.ПериодТО КАК ПериодТО,
    Таб1.РегистраторТО КАК РегистраторТО,
    Таб1.НоменклатураТО КАК НоменклатураТО,
    Таб1.ХарактеристикаТО КАК ХарактеристикаТО,
    Таб2.Цена КАК Цена
ИЗ
    (ВЫБРАТЬ
        ТоварыОрганизаций.Период КАК ПериодТО,
        ТоварыОрганизаций.Регистратор КАК РегистраторТО,
        ТоварыОрганизаций.Номенклатура КАК НоменклатураТО,
        ТоварыОрганизаций.Характеристика КАК ХарактеристикаТО,
        МАКСИМУМ(ЦеныНоменклатуры.Период) КАК ПериодРС
    ИЗ
        РегистрНакопления.ТоварыОрганизаций.Обороты(
                ,
                ,
                Регистратор,
                Склад = &Склад
                    И Организация = &Организация) КАК ТоварыОрганизаций
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
            ПО (ЦеныНоменклатуры.Период <= ТоварыОрганизаций.Период)
                И (ЦеныНоменклатуры.Номенклатура = ТоварыОрганизаций.Номенклатура)
                И (ЦеныНоменклатуры.Характеристика = ТоварыОрганизаций.Характеристика)
    
    СГРУППИРОВАТЬ ПО
        ТоварыОрганизаций.Период,
        ТоварыОрганизаций.Номенклатура,
        ТоварыОрганизаций.Характеристика,
        ТоварыОрганизаций.Регистратор) КАК Таб1
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК Таб2
        ПО Таб1.ПериодТО = Таб2.Период
            И Таб1.НоменклатураТО = Таб2.Номенклатура
            И Таб1.ХарактеристикаТО = Таб2.Характеристика
7 AlexeyVM
 
23.06.17
09:09
Решил делать пошагово и обнаружил косяк, в чем ошибка не пойму
ВЫБРАТЬ
    ЦеныНоменклатуры.Период КАК Период,
    ЦеныНоменклатуры.Регистратор КАК Регистратор,
    ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
    ЦеныНоменклатуры.Характеристика КАК Характеристика,
    ЦеныНоменклатуры.Цена КАК Цена
ПОМЕСТИТЬ ВсеЦеныНаНужныеТовары
ИЗ
    РегистрНакопления.ТоварыОрганизаций.Обороты(
            ,
            ,
            Регистратор,
            Склад = &Склад
                И Организация = &Организация) КАК ТоварыОрганизацийОбороты
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
        ПО (ТоварыОрганизацийОбороты.Номенклатура = ЦеныНоменклатуры.Номенклатура)
            И (ТоварыОрганизацийОбороты.Характеристика = ЦеныНоменклатуры.Характеристика)
ГДЕ
    ЦеныНоменклатуры.ВидЦены = &ВидЦены

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

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

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

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

УПОРЯДОЧИТЬ ПО
    РегистраторТО

Первой частью нахожу все товары и все их цены какие были, 2 частью нахожу дату последнего изменения цены для каждого товара прихода и расхода, все пока правильно. А вот в 3 части вывожу цену на этот период последнего изменения цены и почему-то выводится не по 1 записи а по несколько на каждую номенклатуру в документе прихода, расхода с разными ценами. В чем ошибка не пойму
8 AlexeyVM
 
23.06.17
09:18
А все, нашел ошибку условие по виду цены забыл
9 AlexeyVM
 
23.06.17
10:43
Написал половину, дальше не могу понять как мне посчитать изменение цены. Например регистратор1 содержит товары 1,2,3,4, регистратор 2 содержит товары 3 и 4, а регистратор 3 содержит товары 1 и 2, и мне надо получить суммарное изменение цены для регистратор2 только для товара 3 и 4, а для регистратор3 только по товару 1 и 2

Регистратор1 Товар 1 100р
Регистратор1 Товар 2 200р
Регистратор1 Товар 3 60р
Регистратор1 Товар 4 90р
Регистратор2 Товар 3 50р
Регистратор2 Товар 4 98р
Регистратор3 Товар 1 120р
Регистратор3 Товар 2 230р

То мне надо вывести так

Регистратор1 450 (100+200+60+90)
Регистратор2 -2 ((98+50)-(90+60))
Регистратор3 50 ((120+230)-(100+200))

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

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

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

СГРУППИРОВАТЬ ПО
    ТоварыОрганизаций.Номенклатура,
    ТоварыОрганизаций.Характеристика,
    ТоварыОрганизаций.Регистратор,
    ТоварыОрганизаций.Период,
    ТоварыОрганизаций.КоличествоОборот
;

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

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

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

СГРУППИРОВАТЬ ПО
    ЦеныТоваровИВремяПоследнейЦены.РегистраторТО

УПОРЯДОЧИТЬ ПО
    Регистратор
ИТОГИ ПО
    ОБЩИЕ
10 AlexeyVM
 
26.06.17
11:35
Все-таки написал я этот запрос, небольшой косяк есть (если начало периода указывать) но это подправлю еще. А на весь период правильно считает
ВЫБРАТЬ
    ЦеныНоменклатуры.Период КАК Период,
    ЦеныНоменклатуры.Регистратор КАК Регистратор,
    ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
    ЦеныНоменклатуры.Характеристика КАК Характеристика,
    ЦеныНоменклатуры.ВидЦены КАК ВидЦены,
    ЦеныНоменклатуры.Цена КАК Цена
ПОМЕСТИТЬ ВсеЦеныНаНужныеТовары
ИЗ
    РегистрНакопления.ТоварыОрганизаций.Обороты(
            ,
            ,
            Регистратор,
            Склад = &Склад
                И Организация = &Организация) КАК ТоварыОрганизацийОбороты
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
        ПО (ТоварыОрганизацийОбороты.Номенклатура = ЦеныНоменклатуры.Номенклатура)
            И (ТоварыОрганизацийОбороты.Характеристика = ЦеныНоменклатуры.Характеристика)
ГДЕ
    ЦеныНоменклатуры.ВидЦены = &ВидЦены

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

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

СГРУППИРОВАТЬ ПО
    ТоварыОрганизаций.Номенклатура,
    ТоварыОрганизаций.Характеристика,
    ТоварыОрганизаций.Регистратор,
    ТоварыОрганизаций.Период,
    ТоварыОрганизаций.КоличествоОборот
;

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

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

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

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

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТаблицаНовыхЦен.Регистратор КАК Регистратор,
    ТаблицаНовыхЦен.Номенклатура КАК Номенклатура,
    ТаблицаНовыхЦен.Характеристика КАК Характеристика,
    ТаблицаНовыхЦен.Цена - ТаблицаСтарыхЦен.Цена КАК Цена,
    ТаблицаНовыхЦен.Период КАК Период
ПОМЕСТИТЬ ФинальныеЦены
ИЗ
    ТаблицаСтарыхЦен КАК ТаблицаСтарыхЦен
        ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаНовыхЦен КАК ТаблицаНовыхЦен
        ПО ТаблицаСтарыхЦен.Номенклатура = ТаблицаНовыхЦен.Номенклатура
            И ТаблицаСтарыхЦен.Характеристика = ТаблицаНовыхЦен.Характеристика
ГДЕ
    ТаблицаНовыхЦен.Регистратор = ТаблицаСтарыхЦен.Регистратор
;

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

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

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

СГРУППИРОВАТЬ ПО
    ЦеныТоваровИВремяПоследнейЦены.РегистраторТО

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

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

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

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

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

СГРУППИРОВАТЬ ПО
    ТоварыОрганизаций.Номенклатура,
    ТоварыОрганизаций.Характеристика,
    ТоварыОрганизаций.Регистратор,
    ТоварыОрганизаций.Период,
    ТоварыОрганизаций.КоличествоОборот
;

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

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

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

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

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТаблицаНовыхЦен.Регистратор КАК Регистратор,
    ТаблицаНовыхЦен.Номенклатура КАК Номенклатура,
    ТаблицаНовыхЦен.Характеристика КАК Характеристика,
    ТаблицаНовыхЦен.Цена - ТаблицаСтарыхЦен.Цена КАК Цена,
    ТаблицаНовыхЦен.Период КАК Период
ПОМЕСТИТЬ ФинальныеЦены
ИЗ
    ТаблицаСтарыхЦен КАК ТаблицаСтарыхЦен
        ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаНовыхЦен КАК ТаблицаНовыхЦен
        ПО ТаблицаСтарыхЦен.Номенклатура = ТаблицаНовыхЦен.Номенклатура
            И ТаблицаСтарыхЦен.Характеристика = ТаблицаНовыхЦен.Характеристика
ГДЕ
    ТаблицаНовыхЦен.Регистратор = ТаблицаСтарыхЦен.Регистратор
;

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

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

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

СГРУППИРОВАТЬ ПО
    ЦеныТоваровИВремяПоследнейЦены.РегистраторТО

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

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

СГРУППИРОВАТЬ ПО
    ФинальныеЦены.Регистратор
ИТОГИ ПО
    ОБЩИЕ