8.х Запрос на вывод всех цен на товар - Помогите новичку

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем igandalff, 11 апр 2012.

  1. TopicStarter Overlay
    igandalff
    Offline

    igandalff

    Регистрация:
    11 апр 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    галка не стоит, так что нужен запрос именно в ПоступлениеТоваровУслуг..
  2. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    ну дык поставьте - это проще, чем выдумывать мегазапрос.
  3. TopicStarter Overlay
    igandalff
    Offline

    igandalff

    Регистрация:
    11 апр 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    если поставить эту галку, то, как я понимаю, придется перепроводить все документы прихода, а их там: Мама не горюй..
    в любом случае кое-что да получилось, кому интересно:
    Код:
    
    ВЫБРАТЬ
    СпрНом.Ссылка КАК Номенклатура,
    ЕСТЬNULL(ПродажиОбороты.КоличествоОборот, 0) КАК Продажи,
    ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остатки,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних1.Цена, 0) КАК Опт,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних2.Цена, 0) КАК Розница,
    СпрНом.Артикул,
    СпрНом.Наименование,
    СпрНом.НаименованиеПолное,
    ЕСТЬNULL(ПоступлениеТоваровУслугТовары.Цена, 0) КАК Закупка,
    ПоступлениеТоваровУслугТовары.Ссылка.Дата,
    ТоварыНаСкладахОстатки.Склад,
    ПРЕДСТАВЛЕНИЕ(ТоварыНаСкладахОстатки.Склад)
    ИЗ
    Справочник.Номенклатура КАК СпрНом
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
    ПО СпрНом.Ссылка = ТоварыНаСкладахОстатки.Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
    ПО СпрНом.Ссылка = ПродажиОбороты.Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &Оптовая) КАК ЦеныНоменклатурыСрезПоследних1
    ПО СпрНом.Ссылка = ЦеныНоменклатурыСрезПоследних1.Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &Розничная) КАК ЦеныНоменклатурыСрезПоследних2
    ПО СпрНом.Ссылка = ЦеныНоменклатурыСрезПоследних2.Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    МАКСИМУМ(ПоступлениеТоваровУслугТовары.Ссылка.Дата) КАК Дата,
    ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура
    ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
    
    СГРУППИРОВАТЬ ПО
    ПоступлениеТоваровУслугТовары.Номенклатура) КАК ВложенныйЗапрос
    ПО ПоступлениеТоваровУслугТовары.Номенклатура = ВложенныйЗапрос.Номенклатура
    И ПоступлениеТоваровУслугТовары.Ссылка.Дата = ВложенныйЗапрос.Дата
    ПО СпрНом.Ссылка = ПоступлениеТоваровУслугТовары.Номенклатура
    ГДЕ
    СпрНом.ЭтоГруппа = ЛОЖЬ
    
    правда все равно есть вопрос к Профи: можно ли (и как?) сделать:
    1. чтобы выводилась цена товара из первоначального оприходования товаров, если приходов по нему не осуществлялось
    2.на данный момент для искомых товаров приходится вводить диапазон артикулов, вместо названия товаров или групп. что не так?
  4. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    сколько? на ночь нельзя перепроведение сделать?

    я вам сказал самый простой и правильный вариант.

    где у вас во вложенном запросе цена? ведь ради получения цены вам необходимы танцы с бубнами с таблицей "поступление товаров".

    вместо вложенных запросов используйте пакетный запрос. => повысится читабельность и производительность.
  5. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    вот вам сложно, если хотите:


    Код:
    ВЫБРАТЬ
    СпрНом.Ссылка КАК Номенклатура,
    ЕСТЬNULL(ПродажиОбороты.КоличествоОборот, 0) КАК Продажи,
    ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остатки,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних1.Цена, 0) КАК Опт,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних2.Цена, 0) КАК Розница
    ПОМЕСТИТЬ Таблица1
    ИЗ
    Справочник.Номенклатура КАК СпрНом
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
    ПО СпрНом.Ссылка = ТоварыНаСкладахОстатки.Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
    ПО СпрНом.Ссылка = ПродажиОбороты.Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &Оптовая) КАК ЦеныНоменклатурыСрезПоследних1
    ПО СпрНом.Ссылка = ЦеныНоменклатурыСрезПоследних1.Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &Розничная) КАК ЦеныНоменклатурыСрезПоследних2
    ПО СпрНом.Ссылка = ЦеныНоменклатурыСрезПоследних2.Номенклатура
    ;
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    МАКСИМУМ(ПоступлениеТоваровУслугТовары.Ссылка.Дата) КАК Дата,
    ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура
    ПОМЕСТИТЬ Таблица2
    ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
    СГРУППИРОВАТЬ ПО
    ПоступлениеТоваровУслугТовары.Номенклатура
    ;
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    Таблица2.Дата КАК Дата,
    Таблица2.Номенклатура КАК Номенклатура,
    ПоступлениеТоваровУслугТовары.Цена
    ПОМЕСТИТЬ Таблица3
    ИЗ
    Таблица2 КАК Таблица2
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
    ПО Таблица2.Дата = ПоступлениеТоваровУслугТовары.Ссылка.Дата
    И Таблица2.Номенклатура = ПоступлениеТоваровУслугТовары.Номенклатура
    ;
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    Таблица1.Номенклатура,
    Таблица1.Продажи,
    Таблица1.Остатки,
    Таблица1.Опт,
    Таблица1.Розница,
    Таблица3.Цена
    ИЗ
    Таблица1 КАК Таблица1
    ЛЕВОЕ СОЕДИНЕНИЕ Таблица3 КАК Таблица3
    ПО Таблица1.Номенклатура = Таблица3.Номенклатура
  6. TopicStarter Overlay
    igandalff
    Offline

    igandalff

    Регистрация:
    11 апр 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Vartranet, спасибо огромное, очень помогли!!
    к сожалению данный вопрос решался только через "сложно"...

Поделиться этой страницей