Имя: Пароль:
1C
1С v8
В запросе получить последнее поступление товара с ценой
0 AnisaL
 
15.11.13
14:10
Добрый денек форумчане!
Стоит задача: получить список номенклатуры с ценой по документу поступления на дату, который есть в наличии. Вот запрос, не могу получить последнее поступление.
1 AnisaL
 
15.11.13
14:11
(0)
ВЫБРАТЬ   // Выбираем свободные остатки
    СвободныеОстаткиОстатки.Номенклатура,
    СвободныеОстаткиОстатки.КоличествоОстаток
ПОМЕСТИТЬ Остатки
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&Конец, Склад = &Склад) КАК СвободныеОстаткиОстатки
ГДЕ
    СвободныеОстаткиОстатки.КоличествоОстаток > 0

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

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ //Выбираем Номенклатуру, Поступление
    Остатки.Номенклатура КАК Номенклатура,
    Поступления.Ссылка КАК Ссылка,
    Остатки.КоличествоОстаток
ПОМЕСТИТЬ ОстаткиИПоступления
ИЗ
    Остатки КАК Остатки
        ЛЕВОЕ СОЕДИНЕНИЕ Поступления КАК Поступления
        ПО Остатки.Номенклатура = Поступления.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ  // К номенклатуре цену добавляем
    ОстаткиИПоступления.Номенклатура,
    ОстаткиИПоступления.Ссылка,
    ОстаткиИПоступления.КоличествоОстаток,
    ВложенныйЗапрос.Цена
ИЗ
    ОстаткиИПоступления КАК ОстаткиИПоступления
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка,
            ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
            ПоступлениеТоваровУслугТовары.Цена КАК Цена
        ИЗ
            Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары) КАК ВложенныйЗапрос
        ПО ОстаткиИПоступления.Номенклатура = ВложенныйЗапрос.Номенклатура
            И ОстаткиИПоступления.Ссылка = ВложенныйЗапрос.Ссылка
УПОРЯДОЧИТЬ ПО
        ОстаткиИПоступления.Номенклатура.Наименование
2 AnisaL
 
15.11.13
14:17
(0) + остаток кстати не нужен в итоге, в последнем запросе его можно не выбирать, я его добавила для проверки
3 AnisaL
 
15.11.13
14:22
Запрос выдает всякие поступления - непонятно какие, но только не последние. Где портак?
4 shuhard
 
15.11.13
14:23
(0)[Где портак?]
в группировке
5 AnisaL
 
15.11.13
14:26
(4) когда выбираем поступления? т.е. здесь
ВЫБРАТЬ // Выбираем Поступления

    МАКСИМУМ(ПоступлениеТоваровУслугТовары.Ссылка.Дата) КАК ДатаСоздания,
    МАКСИМУМ(ПоступлениеТоваровУслугТовары.Ссылка) КАК Ссылка,
    ПоступлениеТоваровУслугТовары.Номенклатура
ПОМЕСТИТЬ Поступления
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ГДЕ
    ПоступлениеТоваровУслугТовары.Ссылка.Дата < &Конец

СГРУППИРОВАТЬ ПО
    ПоступлениеТоваровУслугТовары.Номенклатура
6 Ёпрст
 
15.11.13
14:28
(5) выкини максимум(ссылка) оттудова.. имей просто дату и номенклатуру..
7 AnisaL
 
15.11.13
14:28
(4)+ если добавить группировку по ПоступлениеТоваровУслугТовары.Ссылка, то начинает выдавать все поступления
8 Ёпрст
 
15.11.13
14:29
потом уже соединяйся по дате и номенклатуре.
9 AnisaL
 
15.11.13
14:29
(8) т.е. еще одну ВТ создавать?
10 Ёпрст
 
15.11.13
14:30
должно быть так:

первый запрос  - ищем дату и номенклатуру, второй - ищем приходы, номенклатуру по дате и номенклатуре.. фирштейн ?
:))
11 AnisaL
 
15.11.13
14:32
(10) да, понятно, плюсом запрос по остаткам свободным
12 AnisaL
 
15.11.13
15:09
(10) Ура! получилось.. Спасибо!
ВЫБРАТЬ
    СвободныеОстаткиОстатки.Номенклатура,
    СвободныеОстаткиОстатки.КоличествоОстаток
ПОМЕСТИТЬ Остатки
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&Конец, Склад = &Склад) КАК СвободныеОстаткиОстатки
ГДЕ
    СвободныеОстаткиОстатки.КоличествоОстаток > 0

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

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

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

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

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

УПОРЯДОЧИТЬ ПО
    ОстаткиИПоступления.Номенклатура.Наименование
13 Худой
 
16.11.13
05:24
Проще всего выбрать документы поступления по номенклатуре и отсортировать по дате поступления. Если сортируешь по возрастанию, берешь последнюю запись, если по убыванию, то первую. Я так делаю. И никаких регистров не надо.Довольно шустро на 8-ке работает. Код занимает несколько строк. Для интереса, можно протестировать скорость. На глаз даже не будет заметно отличий.
14 GreyK
 
16.11.13
05:39
(12) Что получилось? Ну перебрал ты все поступления товаров и получил цену всех закупок за сущкствование базы, где отбор цены по количеству товара в остатке?
15 Мимохожий Однако
 
16.11.13
06:26
Если цена поступления регистрируется при проведении поступления, то достаточно СрезПоследних для регистра сведений с ценами номенклатуры.
16 GANR
 
16.11.13
10:51
(0) Аниса - настоятельно советую тебе дойти до первого сертификата на сайте http://sql-ex.ru/ - запрос наипростейший.

Лично я дошел до него за месяц с момента регистрации на сайте, до получения сертификата (в подтверждение моим словам ссылка на сертификат http://sql-ex.ru/users_page.php?uid=52001), а соотношение затраченного времени к полезности полученных знаний великолепнейшее (проходил всякие/разные обучения много раз).
17 МихаилМ
 
16.11.13
15:06
(0)
этот запрос - проверка на проф пригодность.
18 GANR
 
16.11.13
19:14
(17) Да это-то нормальный запрос - вот ветка, которая меня повергла в шок Босечка.
19 GANR
 
16.11.13
19:14
20 GANR
 
16.11.13
19:18
(19) ну е-мое - опять ошибся v8: В функции не выполняется запрос.
21 AnisaL
 
18.11.13
07:09
(15) в этом-то вся и проблема, что не всегда делается "установка цен номенклатуры". Этот отчет нужен чтобы выявить не актуальные цены номенклатуры; запрос по поступлениям буду объединять с последними установками цен по товару и сравнивать цены: из поступления с ценой из установки
22 AnisaL
 
18.11.13
12:14
Подскажите, пожалуйста, как оказалось что товары могут оприходовываться и через авансовый отчет, тогда нужно через регистр "Закупки" искать последнее поступление. Вот написала запрос, который получает дату и ссылку на последнее поступление, а как дальше цену получить? документы то разные, что-то я запуталась..
23 AnisaL
 
18.11.13
12:17
(22)+
ВЫБРАТЬ
    СвободныеОстаткиОстатки.Номенклатура,
    СвободныеОстаткиОстатки.КоличествоОстаток
ПОМЕСТИТЬ Остатки
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&Конец, Склад = &Склад) КАК СвободныеОстаткиОстатки
ГДЕ
    СвободныеОстаткиОстатки.КоличествоОстаток > 0

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

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

СГРУППИРОВАТЬ ПО
    Закупки.Номенклатура
;

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

УПОРЯДОЧИТЬ ПО
    ЗакупкиДата.Номенклатура.Наименование
24 AnisaL
 
18.11.13
12:29
+(23) как из этого запроса еще и цену получить?
25 AnisaL
 
18.11.13
13:54
(22) Может совсем по-другому надо запрос писать? Может кто подскажет в каком направлении рыть? Задача состоит в поиске  цен последних поступлений (документы "Поступление товаров и услуг" или "Авансовый отчет")
26 anaed
 
18.11.13
14:17
(25) получаешь из РН закупки цену и номенклатуру через максимум(документзакупки.дата)
соединяешь с остатками

В чем проблема?
27 AnisaL
 
18.11.13
14:23
(26) а вы не смотрели тот запрос (23) просто я не знаю как дальше цену вытянуть..
28 Serg_1960
 
18.11.13
14:24
Не знаю что у автора, а у меня - УПП. Там не всё так просто с ценой последнего поступления. На пересчет типа цен намекаю и не только. Если есть у автора Ценообразование.ПолучитьЦенуНоменклатуры() - посмотри как там всё замутили.
29 AnisaL
 
18.11.13
14:37
(28) у меня УТ..похоже я не с той стороны подхожу к вопросу.. понедельник день тяжелый
30 zakidonoff
 
18.11.13
14:43
Может туплю, особо не вчитывался. Но в таком запросе что не так?

ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
            &Дата,
            ТипЦен = &ТипЦен
                И Номенклатура В (&МассивНоменклатуры)) КАК ЦеныНоменклатурыСрезПоследних
31 anaed
 
18.11.13
14:52
(28),(30) насколько я понял не важно какие цены в типах цен, важно только что стоит в документе. Чтобы уже это сравнивать с типами цен.

(27) В закупках стоимость/количество = цена, правда надо будет проверить на СуммаВключаетНДС у ДокументаЗакупки

1)Собери ТаблицуДат
2)Собери ТаблицуЦен соединив Закупки с ТаблицейДат
3)Получи результат соединив Остатки с ТаблицейЦен
32 AnisaL
 
18.11.13
14:55
(31) наверно я туплю, не как не могу понять как ТаблицуДат соединить с закупками чтобы получить цену, если документы регистраторы разные: или поступление или авансовые отчеты..
33 Мимохожий Однако
 
18.11.13
15:02
В документах Поступления и в Авансовых отчетах по кнопке Валюты и цены есть флажок "Регистрировать цены поставщика". При использовании этого простого механизма всё проще было бы.
34 anaed
 
18.11.13
15:04
(32) ВЫБОР
        КОГДА Закупки.ДокументЗакупки.СуммаВключаетНДС
            ТОГДА Закупки.Стоимость / Закупки.Количество
        ИНАЧЕ (Закупки.Стоимость + Закупки.НДС) / Закупки.Количество
    КОНЕЦ КАК ЦенаЗакупа


Проблема только для фильтра по складам, в закупках его применить проблематично, но все лучше чем строить кучу вт по разным видам документовзакупки. Хотя если отбирать только ПТиУ и АО, то тоже просто.
35 AnisaL
 
18.11.13
15:10
(34) понятно) спасибо )))
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший