Имя: Пароль:
1C
 
Выбрать из документов старшИй документ
0 myr4ik07
 
15.08.18
11:02
СКД, цены нужно получать из разных типов документов.

Как выбрать из разных типов документов последнюю цену?

Мой вариант

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

УПОРЯДОЧИТЬ ПО
    Дата УБЫВ

сейчас в результате получаю http://prntscr.com/kisugx две строки, так как в двох разных по типам документах встречаеться номенклатура из ценой, из этой таблицы мне нужно отобрать самую последнуюю по дате документа цену, как это сделать?

!сейчас имееться два типа документов, но их будет 4 типа, т.е. еще добавить 2 объединения до тех, что сейчас есть и в результате может быть 4 цены
1 Cyberhawk
 
15.08.18
11:03
"отобрать самую последнуюю по дате документа цену" // Свернуть, получить максимальную дату, соединить повторно по этой макс. дате
2 myr4ik07
 
15.08.18
11:04
(1) соединять по дате из 4 типами документов?
3 1Сергей
 
15.08.18
11:06
ВЫБРТЬ ПЕРВЫЕ 1
...
УПОРЯДОЧИТЬ ПО
4 myr4ik07
 
15.08.18
11:08
(3) не подходит, у меня эта вложенная таблица соединяеться из таблицей продаж
5 Лодырь
 
15.08.18
11:10
(4) Не забудь о моментах времени, иначе получишь задвоенные записи.
6 1Сергей
 
15.08.18
11:10
(4) А почему не подходит?




ВЫБРАТЬ
    ВЗ.Ссылка,
    ВЗ.Дата,
    ВЗ.Номер
ИЗ
    (ВЫБРАТЬ ПЕРВЫЕ 1
        РеализацияТоваровУслуг.Ссылка КАК Ссылка,
        РеализацияТоваровУслуг.Дата КАК Дата,
        РеализацияТоваровУслуг.Номер КАК Номер
    ИЗ
        Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    
    УПОРЯДОЧИТЬ ПО
        Дата) КАК ВЗ
7 myr4ik07
 
15.08.18
11:21
(6) потому что вся жуть дальше

ВЫБРАТЬ
    Продажи.Номенклатура.Родитель КАК ГруппаТовара,
    Продажи.Номенклатура,
    Продажи.Количество КАК КоличествоПродаж,
    Продажи.Сумма КАК СуммаПродаж,
    ЗакупочныеЦены.Цена КАК Закупка,
    Продажи.Номенклатура.Родитель
ИЗ
    Документ.ОтчетОРозничныхПродажах.Товары КАК Продажи
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1
            ЗакупочныеЦены.Номенклатура КАК Номенклатура,
            ЗакупочныеЦены.Ссылка.Дата КАК СсылкаДата,
            ЗакупочныеЦены.Ссылка КАК Ссылка,
            ЗакупочныеЦены.Цена КАК Цена
        ИЗ
            (ВЫБРАТЬ
                ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
                ВЫБОР
                    КОГДА ПоступлениеТоваровУслугТовары.Ссылка.СуммаВключаетНДС
                        ТОГДА ПоступлениеТоваровУслугТовары.Цена
                    ИНАЧЕ ПоступлениеТоваровУслугТовары.Цена + ПоступлениеТоваровУслугТовары.Цена * 20 / 100
                КОНЕЦ КАК Цена,
                ПоследнийДокумент.Ссылка КАК Ссылка
            ИЗ
                Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
                    ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                        ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
                        МАКСИМУМ(ПоступлениеТоваровУслугТовары.Ссылка) КАК Ссылка
                    ИЗ
                        Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
                    ГДЕ
                        ПоступлениеТоваровУслугТовары.Ссылка.Проведен
                    
                    СГРУППИРОВАТЬ ПО
                        ПоступлениеТоваровУслугТовары.Номенклатура) КАК ПоследнийДокумент
                    ПО ПоступлениеТоваровУслугТовары.Ссылка = ПоследнийДокумент.Ссылка
                        И ПоступлениеТоваровУслугТовары.Номенклатура = ПоследнийДокумент.Номенклатура
            
            СГРУППИРОВАТЬ ПО
                ПоступлениеТоваровУслугТовары.Номенклатура,
                ВЫБОР
                    КОГДА ПоступлениеТоваровУслугТовары.Ссылка.СуммаВключаетНДС
                        ТОГДА ПоступлениеТоваровУслугТовары.Цена
                    ИНАЧЕ ПоступлениеТоваровУслугТовары.Цена + ПоступлениеТоваровУслугТовары.Цена * 20 / 100
                КОНЕЦ,
                ПоследнийДокумент.Ссылка
            
            ОБЪЕДИНИТЬ ВСЕ
            
            ВЫБРАТЬ
                АвансовыйОтчетТовары.Номенклатура,
                ВЫБОР
                    КОГДА АвансовыйОтчетТовары.Ссылка.СуммаВключаетНДС
                        ТОГДА АвансовыйОтчетТовары.Цена
                    ИНАЧЕ АвансовыйОтчетТовары.Цена + АвансовыйОтчетТовары.Цена * 20 / 100
                КОНЕЦ,
                ПоследнийДокумент.Ссылка
            ИЗ
                (ВЫБРАТЬ
                    АвансовыйОтчетТовары.Номенклатура КАК Номенклатура,
                    МАКСИМУМ(АвансовыйОтчетТовары.Ссылка) КАК Ссылка
                ИЗ
                    Документ.АвансовыйОтчет.Товары КАК АвансовыйОтчетТовары
                ГДЕ
                    АвансовыйОтчетТовары.Ссылка.Проведен
                
                СГРУППИРОВАТЬ ПО
                    АвансовыйОтчетТовары.Номенклатура) КАК ПоследнийДокумент
                    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет.Товары КАК АвансовыйОтчетТовары
                    ПО ПоследнийДокумент.Номенклатура = АвансовыйОтчетТовары.Номенклатура
                        И ПоследнийДокумент.Ссылка = АвансовыйОтчетТовары.Ссылка
            
            СГРУППИРОВАТЬ ПО
                АвансовыйОтчетТовары.Номенклатура,
                ВЫБОР
                    КОГДА АвансовыйОтчетТовары.Ссылка.СуммаВключаетНДС
                        ТОГДА АвансовыйОтчетТовары.Цена
                    ИНАЧЕ АвансовыйОтчетТовары.Цена + АвансовыйОтчетТовары.Цена * 20 / 100
                КОНЕЦ,
                ПоследнийДокумент.Ссылка) КАК ЗакупочныеЦены
        
        УПОРЯДОЧИТЬ ПО
            СсылкаДата УБЫВ) КАК ЗакупочныеЦены
        ПО Продажи.Номенклатура = ЗакупочныеЦены.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ЦеныАТТСрезПоследних.Номенклатура КАК Номенклатура,
            ЦеныАТТСрезПоследних.Цена КАК Продажная
        ИЗ
            РегистрСведений.ЦеныАТТ.СрезПоследних(, ) КАК ЦеныАТТСрезПоследних
                ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                    ЦеныАТТСрезПоследних.Номенклатура КАК Номенклатура,
                    МАКСИМУМ(ЦеныАТТСрезПоследних.Период) КАК Период
                ИЗ
                    РегистрСведений.ЦеныАТТ.СрезПоследних(, ) КАК ЦеныАТТСрезПоследних
                
                СГРУППИРОВАТЬ ПО
                    ЦеныАТТСрезПоследних.Номенклатура) КАК ВложенныйЗапрос
                ПО ЦеныАТТСрезПоследних.Номенклатура = ВложенныйЗапрос.Номенклатура
                    И ЦеныАТТСрезПоследних.Период = ВложенныйЗапрос.Период
        
        СГРУППИРОВАТЬ ПО
            ЦеныАТТСрезПоследних.Номенклатура,
            ЦеныАТТСрезПоследних.Цена) КАК ПродажныеЦены
        ПО Продажи.Номенклатура = ПродажныеЦены.Номенклатура
ГДЕ
    Продажи.Ссылка.Проведен
    И Продажи.Ссылка.Дата МЕЖДУ &Начало И &Конец


таким образом не находит цену, потому как в вложенной таблице находиться первый документ в котором может не быть номенклтауры с которой потом соединение делаеться
8 1Сергей
 
15.08.18
11:23
(7) какой кошмар
ты про временные таблицы слышал что-нибудь?
9 myr4ik07
 
15.08.18
11:27
(8) ну не смог я додумать как это все через временные таблицы

если покажеш, буду рад

нужно до товаров, которые в документе ОтчетОРозничныхПродажах добавить закупочные цены, которые могут быть в нескольких типов документов
10 myr4ik07
 
15.08.18
11:28
не спрашивайте почему зак цены в док
11 lubitelxml
 
15.08.18
11:36
(10) про расчет НДС по ставке 20% тоже не будем спрашивать
12 myr4ik07
 
15.08.18
11:45
(11) не в этом суть, я же не за этим пришел...