Имя: Пароль:
1C
1С v8
УТ 10.3 Получить последнюю цену закупки Номенклатуры
,
0 НикДляЗапросов
 
06.12.13
13:23
Как получить последнюю цену закупки Номенклатуры Н1, по каждому поставщику этой номенклатуры
Т.е.
Н1
Поставляли к1(2 раза) к2(3раза) и к3(1раз)
Нужно цену закупки 2й поставки к1, 3й к2, 1й к3
Я пытаюсь анализировать регистр закупки
ЗЫ
Вопрос четче задать не могу, большая просьба не флудить, пытаюсь разобраться, спасибо
1 Михаил Козлов
 
06.12.13
13:32
Посмотрите на РС ЦеныНоменклатурыКонтрагентов.
2 НикДляЗапросов
 
06.12.13
13:34
Цены могут не регистрироваться
3 НикДляЗапросов
 
06.12.13
13:36
У меня вот в чем проблема я не понимаю как сделать условие:
последняя дата закупки по поставщику
4 ProProg
 
06.12.13
13:38
ВЫБРАТЬ ПЕРВЫЕ 1
    МАКСИМУМ(ПоступлениеТоваровУслугТовары.Цена) КАК Цена,
    ПоступлениеТоваровУслугТовары.Ссылка,
    ПоступлениеТоваровУслугТовары.Ссылка.Контрагент
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ГДЕ
    ПоступлениеТоваровУслугТовары.Ссылка.ОтражатьВУправленческомУчете = ИСТИНА
    И ПоступлениеТоваровУслугТовары.Ссылка.Проведен = ИСТИНА
    И ПоступлениеТоваровУслугТовары.Ссылка.Контрагент = &ВыбКонтрагент
    И ПоступлениеТоваровУслугТовары.Номенклатура = &ВыбНоменклатура

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

УПОРЯДОЧИТЬ ПО
    ПоступлениеТоваровУслугТовары.Ссылка.Дата УБЫВ
5 НикДляЗапросов
 
06.12.13
13:42
Спасибо, понятно
6 НикДляЗапросов
 
06.12.13
14:19
Тока вот не понятно, какие посавщики номенклатуру поставляют, но мысль понятна
7 НикДляЗапросов
 
06.12.13
14:44
Вот такой запрос получился, может быть можно что то улучшить?
ВЫБРАТЬ
    Закупки.Контрагент,
    Закупки.Номенклатура,
    ВложенныйЗапрос.Цена
ИЗ
    РегистрНакопления.Закупки КАК Закупки,
    (ВЫБРАТЬ ПЕРВЫЕ 1
        МАКСИМУМ(ВЫБОР
                КОГДА ПоступлениеТоваровУслугТовары.Ссылка.СуммаВключаетНДС
                    ТОГДА ПоступлениеТоваровУслугТовары.Цена * ПоступлениеТоваровУслугТовары.Ссылка.КурсВзаиморасчетов
                ИНАЧЕ (ПоступлениеТоваровУслугТовары.Сумма + ПоступлениеТоваровУслугТовары.СуммаНДС) / ПоступлениеТоваровУслугТовары.Количество * ПоступлениеТоваровУслугТовары.Ссылка.КурсВзаиморасчетов
            КОНЕЦ) КАК Цена,
        ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка,
        ПоступлениеТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
        ПоступлениеТоваровУслугТовары.Ссылка.Дата КАК Дата,
        ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура
    ИЗ
        Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
    ГДЕ
        ПоступлениеТоваровУслугТовары.Ссылка.Проведен = ИСТИНА
    
    СГРУППИРОВАТЬ ПО
        ПоступлениеТоваровУслугТовары.Ссылка.Контрагент,
        ПоступлениеТоваровУслугТовары.Ссылка,
        ПоступлениеТоваровУслугТовары.Ссылка.Дата,
        ПоступлениеТоваровУслугТовары.Номенклатура
    
    УПОРЯДОЧИТЬ ПО
        Дата УБЫВ) КАК ВложенныйЗапрос

СГРУППИРОВАТЬ ПО
    Закупки.Контрагент,
    Закупки.Номенклатура,
    ВложенныйЗапрос.Цена
8 НикДляЗапросов
 
06.12.13
14:45
Номенклатура
Контрагент
Цена


54
Балашов
54
Кереже И.Д.
54
BOSCH
Koenig Holding GmbH
54
База "Электротовары"
54
Кактус
54
Свет
54
Таможня Брест-литовск
54
Аренда офиса
Мосимущество
54
Ассорти (конфеты)
База "Продукты"
54
Лабан
54
ООО "Продукты"
54
9 НикДляЗапросов
 
06.12.13
14:56
Вот так правильнее, но не совсем
ВЫБРАТЬ
    Закупки.Контрагент,
    Закупки.Номенклатура,
    ВложенныйЗапрос.Цена
ИЗ
    РегистрНакопления.Закупки КАК Закупки
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1
            МАКСИМУМ(ВЫБОР
                    КОГДА ПоступлениеТоваровУслугТовары.Ссылка.СуммаВключаетНДС
                        ТОГДА ПоступлениеТоваровУслугТовары.Цена * ПоступлениеТоваровУслугТовары.Ссылка.КурсВзаиморасчетов
                    ИНАЧЕ (ПоступлениеТоваровУслугТовары.Сумма + ПоступлениеТоваровУслугТовары.СуммаНДС) / ПоступлениеТоваровУслугТовары.Количество * ПоступлениеТоваровУслугТовары.Ссылка.КурсВзаиморасчетов
                КОНЕЦ) КАК Цена,
            ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка,
            ПоступлениеТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
            ПоступлениеТоваровУслугТовары.Ссылка.Дата КАК Дата,
            ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура
        ИЗ
            Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
        ГДЕ
            ПоступлениеТоваровУслугТовары.Ссылка.Проведен = ИСТИНА
        
        СГРУППИРОВАТЬ ПО
            ПоступлениеТоваровУслугТовары.Ссылка.Контрагент,
            ПоступлениеТоваровУслугТовары.Ссылка,
            ПоступлениеТоваровУслугТовары.Ссылка.Дата,
            ПоступлениеТоваровУслугТовары.Номенклатура
        
        УПОРЯДОЧИТЬ ПО
            Дата УБЫВ) КАК ВложенныйЗапрос
        ПО Закупки.Контрагент = ВложенныйЗапрос.Контрагент
            И Закупки.Номенклатура = ВложенныйЗапрос.Номенклатура
ГДЕ
    ВложенныйЗапрос.Контрагент = &Контрагент

СГРУППИРОВАТЬ ПО
    Закупки.Контрагент,
    Закупки.Номенклатура,
    ВложенныйЗапрос.Цена
10 НикДляЗапросов
 
06.12.13
14:56
Вы тут на меня не сильно обращайте внимания
11 ProProg
 
06.12.13
20:40
с каких пор ВЫБРАТЬ первые во вложенных запросах работают?
12 Мимохожий Однако
 
06.12.13
20:43
Сделай пакетным запросом. Понятнее и отлаживать легче.
13 КонецЕсли
 
06.12.13
21:24
Выбрать
  Подзапрос.Контрагент,
  Подзапрос.Номенклатура,
  Подзапрос.Период,
  Регистр.Стоимость/Регистр.Количество как цена

из
(Выбрать
  Максимум(период) как период,
  Контрагент,
  Номенклатура
Из
  РегистрСведений.Закупки
Сгруппировать по Контрагент,Номенклатура
)Как Подзапрос
Левое соединение
РегистрСведений.Закупки как Регистр по Регистр.период=Подзапрос.период и Регистр.Контрагент=Подзапрос.Контрагент и
Регистр.Номенклатура=Подзапрос.Номенклатура
14 kauksi
 
25.12.13
17:08
резюмируя (13) получилось

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

УПОРЯДОЧИТЬ ПО
    Номенклатура
15 НикДляЗапросов
 
25.12.13
18:11
(13)(14) Да
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан