Имя: Пароль:
1C
1С v8
Запрос.
0 НикДляЗапросов
 
08.12.13
11:14
Нужно выбрать для всех поставщиков последнюю цену из документа поступления. У меня получается выбрать только все

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1
    Данные.Цена,
    Данные.Контрагент,
    Данные.Дата,
    Данные.Номенклатура
ИЗ
    Данные КАК Данные
1 НикДляЗапросов
 
08.12.13
12:05
так тоже не работает
ВЫБРАТЬ
    ВЫБОР
        КОГДА ПоступлениеТоваровУслугТовары.Ссылка.СуммаВключаетНДС
            ТОГДА ПоступлениеТоваровУслугТовары.Цена * ПоступлениеТоваровУслугТовары.Ссылка.КурсВзаиморасчетов
        ИНАЧЕ (ПоступлениеТоваровУслугТовары.Сумма + ПоступлениеТоваровУслугТовары.СуммаНДС) / ПоступлениеТоваровУслугТовары.Количество * ПоступлениеТоваровУслугТовары.Ссылка.КурсВзаиморасчетов
    КОНЕЦ КАК Цена,
    ПоступлениеТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
    ПоступлениеТоваровУслугТовары.Ссылка.Дата КАК Дата,
    ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ Данные
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            Закупки.Контрагент КАК Контрагент,
            Закупки.Номенклатура КАК Номенклатура,
            МАКСИМУМ(Закупки.Регистратор.Дата) КАК РегистраторДата
        ИЗ
            РегистрНакопления.Закупки КАК Закупки
        
        СГРУППИРОВАТЬ ПО
            Закупки.Контрагент,
            Закупки.Номенклатура) КАК ВложенныйЗапрос
        ПО ПоступлениеТоваровУслугТовары.Ссылка.Дата = ВложенныйЗапрос.РегистраторДата
            И ПоступлениеТоваровУслугТовары.Ссылка.Контрагент = ВложенныйЗапрос.Контрагент
            И ПоступлениеТоваровУслугТовары.Номенклатура = ВложенныйЗапрос.Номенклатура
ГДЕ
    ПоступлениеТоваровУслугТовары.Ссылка.Проведен = ИСТИНА

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Данные.Цена,
    Данные.Контрагент,
    Данные.Дата,
    Данные.Номенклатура
ИЗ
    Данные КАК Данные
2 wertyu
 
08.12.13
12:15
давай будем идти логическим путём?
3 wertyu
 
08.12.13
12:19
ПоступлениеТоваровУслугТовары.Ссылка.Дата КАК Дата тут ведь МАКСИМУМ где-то должен быть? или нет?
4 НикДляЗапросов
 
08.12.13
12:34
Ну вот же
ВЫБРАТЬ
    ВЫБОР
        КОГДА ПоступлениеТоваровУслугТовары.Ссылка.СуммаВключаетНДС
            ТОГДА ПоступлениеТоваровУслугТовары.Цена * ПоступлениеТоваровУслугТовары.Ссылка.КурсВзаиморасчетов
        ИНАЧЕ (ПоступлениеТоваровУслугТовары.Сумма + ПоступлениеТоваровУслугТовары.СуммаНДС) / ПоступлениеТоваровУслугТовары.Количество * ПоступлениеТоваровУслугТовары.Ссылка.КурсВзаиморасчетов
    КОНЕЦ КАК Цена,
    ПоступлениеТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
    ПоступлениеТоваровУслугТовары.Ссылка.Дата КАК Дата,
    ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ Данные
ИЗ
    (ВЫБРАТЬ
        МАКСИМУМ(ПоступлениеТоваровУслугТовары.Ссылка) КАК Ссылка,
        ПоступлениеТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
        ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура
    ИЗ
        Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
    
    СГРУППИРОВАТЬ ПО
        ПоступлениеТоваровУслугТовары.Ссылка.Контрагент,
        ПоступлениеТоваровУслугТовары.Номенклатура) КАК ВложенныйЗапрос
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
        ПО ПоступлениеТоваровУслугТовары.Ссылка = ВложенныйЗапрос.Ссылка
            И ПоступлениеТоваровУслугТовары.Номенклатура = ВложенныйЗапрос.Номенклатура
            И ПоступлениеТоваровУслугТовары.Ссылка.Контрагент = ВложенныйЗапрос.Контрагент
ГДЕ
    ПоступлениеТоваровУслугТовары.Ссылка.Проведен = ИСТИНА
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Данные.Цена,
    Данные.Контрагент,
    Данные.Дата,
    Данные.Номенклатура
ИЗ
    Данные КАК Данные
5 НикДляЗапросов
 
08.12.13
12:36
Тут немного масло масленое,
Но смысл в том, что внутрение это последнее поступление по номенклатуре и контрагенту

Но результат
BOSCH
Koenig Holding GmbH
34,8187
База "Электротовары"
6 719,864
7 055,8572
Кактус
12 813,3
Свет
967,54652
967,54652
Ассорти (конфеты)
База "Продукты"
88,55414
ООО "Продукты"
100
Барбарис (конфеты)
База "Продукты"
60,64962
ООО "Продукты"
6 НикДляЗапросов
 
08.12.13
12:50
вот все наоборот:
ВЫБРАТЬ
    МАКСИМУМ(ПоступлениеТоваровУслугТовары.Ссылка) КАК Ссылка,
    ПоступлениеТоваровУслугТовары.Номенклатура,
    ПоступлениеТоваровУслугТовары.Ссылка.Контрагент
ПОМЕСТИТЬ ПоследнееПоступление
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПоследнееПоступление.Ссылка.Товары.(
        Цена
    ),
    ПоследнееПоступление.Номенклатура,
    ПоследнееПоступление.Контрагент
ИЗ
    ПоследнееПоступление КАК ПоследнееПоступление

Но цену тут не получить
7 НикДляЗапросов
 
08.12.13
13:27
ВЫБРАТЬ
    ВЫБОР
        КОГДА ПоступлениеТоваровУслугТовары.Ссылка.СуммаВключаетНДС
            ТОГДА ПоступлениеТоваровУслугТовары.Цена * ПоступлениеТоваровУслугТовары.Ссылка.КурсВзаиморасчетов
        ИНАЧЕ (ПоступлениеТоваровУслугТовары.Сумма + ПоступлениеТоваровУслугТовары.СуммаНДС) / ПоступлениеТоваровУслугТовары.Количество * ПоступлениеТоваровУслугТовары.Ссылка.КурсВзаиморасчетов
    КОНЕЦ КАК Цена,
    ПоступлениеТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
    ПоступлениеТоваровУслугТовары.Ссылка.Дата КАК Дата,
    ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ Данные
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            МАКСИМУМ(ПоступлениеТоваровУслугТовары.Ссылка) КАК Ссылка,
            ПоступлениеТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
            ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура
        ИЗ
            Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
        
        СГРУППИРОВАТЬ ПО
            ПоступлениеТоваровУслугТовары.Ссылка.Контрагент,
            ПоступлениеТоваровУслугТовары.Номенклатура) КАК ВложенныйЗапрос
        ПО (ВложенныйЗапрос.Ссылка = ПоступлениеТоваровУслугТовары.Ссылка)
            И (ВложенныйЗапрос.Контрагент = ПоступлениеТоваровУслугТовары.Ссылка.Контрагент)
            И (ВложенныйЗапрос.Номенклатура = ПоступлениеТоваровУслугТовары.Номенклатура)
ГДЕ
    ПоступлениеТоваровУслугТовары.Ссылка.Проведен = ИСТИНА
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Данные.Цена,
    Данные.Контрагент,
    Данные.Дата,
    Данные.Номенклатура
ИЗ
    Данные КАК Данные

Вот так вот тоже не соединяется ((( я не знаю уже что делать
8 НикДляЗапросов
 
08.12.13
13:43
А вот так вот вроде работает:
ВЫБРАТЬ
    СРЕДНЕЕ(ВЫБОР
            КОГДА ПоступлениеТоваровУслугТовары.Ссылка.СуммаВключаетНДС
                ТОГДА ПоступлениеТоваровУслугТовары.Цена * ПоступлениеТоваровУслугТовары.Ссылка.КурсВзаиморасчетов
            ИНАЧЕ (ПоступлениеТоваровУслугТовары.Сумма + ПоступлениеТоваровУслугТовары.СуммаНДС) / ПоступлениеТоваровУслугТовары.Количество * ПоступлениеТоваровУслугТовары.Ссылка.КурсВзаиморасчетов
        КОНЕЦ) КАК Цена,
    ПоступлениеТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
    ПоступлениеТоваровУслугТовары.Ссылка.Дата КАК Дата,
    ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
    ПоступлениеТоваровУслугТовары.Ссылка
ПОМЕСТИТЬ Данные
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            МАКСИМУМ(ПоступлениеТоваровУслугТовары.Ссылка) КАК Ссылка,
            ПоступлениеТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
            ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура
        ИЗ
            Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
        
        СГРУППИРОВАТЬ ПО
            ПоступлениеТоваровУслугТовары.Ссылка.Контрагент,
            ПоступлениеТоваровУслугТовары.Номенклатура) КАК ВложенныйЗапрос
        ПО (ВложенныйЗапрос.Ссылка = ПоступлениеТоваровУслугТовары.Ссылка)
            И (ВложенныйЗапрос.Контрагент = ПоступлениеТоваровУслугТовары.Ссылка.Контрагент)
            И (ВложенныйЗапрос.Номенклатура = ПоступлениеТоваровУслугТовары.Номенклатура)
ГДЕ
    ПоступлениеТоваровУслугТовары.Ссылка.Проведен = ИСТИНА

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Данные.Цена,
    Данные.Контрагент,
    Данные.Дата,
    Данные.Номенклатура,
    Данные.Ссылка
ИЗ
    Данные КАК Данные
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший