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

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

  1. TopicStarter Overlay
    igandalff
    Offline

    igandalff

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

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

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

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


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

    но в принципе в правильном направлении думаете - к таблице Номенклатуры через левое соединение цепляете нужные таблицы.
  3. TopicStarter Overlay
    igandalff
    Offline

    igandalff

    Регистрация:
    11 апр 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Спасибо!!
    Одной проблемой меньше:

    СпрНом.Ссылка КАК Номенклатура
    а то, до этого приходилось артикулом задавать искомые товары..

    Не могу только разобраться про:

    (, ТипЦен = &Закупочная)
    Если подставляю именно в таком виде, то говорит: не задано значение параметра "закупочная"... или я что-то не так делаю?
    Не знаю в туже это тему, но: до вашей подсказки выбирал типы цен при отборе, то есть ТипЦен равно закупочные и т.д.

    или туда надо вставить путь до ТипаЦен.Закупочные?

    (,ТипЦен = ТипыЦенНоменклатуры.Закупочные)
  4. Allizar
    Offline

    Allizar Опытный в 1С

    Регистрация:
    24 сен 2006
    Сообщения:
    413
    Симпатии:
    0
    Баллы:
    26
    Надо параметры устанавливать:

    Код:
    Запрос.УстановитьПараметр("Закупочная", КакойТоПараметр);
    
    Если это перечисление, то прямо в тексте запроса можно написать:

    Код:
    ТипЦен = ЗНАЧЕНИЕ(Перечисление.ТипыЦенНоменклатуры.Закупочные)
    
  5. TopicStarter Overlay
    igandalff
    Offline

    igandalff

    Регистрация:
    11 апр 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Могли бы Вы показать на каком-нить примере, желательно на моем..
    Не понимаю куда нужно и что вставлять в текст запроса, потому как начал заниматься этим только 2 дня назад, а до этого вообще не имел дел с программированием..
  6. Allizar
    Offline

    Allizar Опытный в 1С

    Регистрация:
    24 сен 2006
    Сообщения:
    413
    Симпатии:
    0
    Баллы:
    26
    Используйте второй пример, который я привел. Вставляйте его в текст запроса вместо Вашего

    ТипЦен = &Закупочная

    Но это при условии, что ТипыЦенНоменклатуры - это перечисление. Если это элемент справочника, то нужно действовать по-другому.
  7. vartanet
    Offline

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

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    вы отчет на основе системы компоновки данных делаете? тогда в параметрах СКД надо снять галочку "ограничивать" напротив "Закупочная", "Оптовая", "Розничная".

    после этого установка параметров станет доступна в пользовательском режиме.
  8. TopicStarter Overlay
    igandalff
    Offline

    igandalff

    Регистрация:
    11 апр 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    я делаю отчет в самом 1С, через отчеты/универсальные/консоль отчетов

    ТипЦен - из ЦеныНоменклатурыСрезПоследних
  9. Allizar
    Offline

    Allizar Опытный в 1С

    Регистрация:
    24 сен 2006
    Сообщения:
    413
    Симпатии:
    0
    Баллы:
    26
    В форме где редактируете текст запроса есть вкладка "Параметры": там можно указывать параметры, как пишет vartanet. В тексте запроса можете ничего не менять.
  10. vartanet
    Offline

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

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

    Вложения:

    • 1.JPG
      1.JPG
      Размер файла:
      26,2 КБ
      Просмотров:
      37
  11. TopicStarter Overlay
    igandalff
    Offline

    igandalff

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

    но все это мне не помогло...

    Вложения:

    • 1.jpg
      1.jpg
      Размер файла:
      53,3 КБ
      Просмотров:
      45
  12. vartanet
    Offline

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

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


    Код:
     ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &Закупочная) КАК ЦеныНоменклатурыСрезПоследних
    ПО СпрНом.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &Оптовая) КАК ЦеныНоменклатурыСрезПоследних1
    ПО СпрНом.Ссылка = ЦеныНоменклатурыСрезПоследних1.Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &Розничная) КАК ЦеныНоменклатурыСрезПоследних2
    ПО СпрНом.Ссылка = ЦеныНоменклатурыСрезПоследних2.Номенклатура
  13. TopicStarter Overlay
    igandalff
    Offline

    igandalff

    Регистрация:
    11 апр 2012
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Ура!!!!!
    Благодарен безмерно!!
    Все получилось!!

    Возможно поможете с еще одной проблемкой в этом запросе:
    1. В отборе приходится вводить предел артикулов, т.к. по номенклатуре не ищет: выдает все подряд
    2. можно ли как-нибудь сделать так, что бы в столбец закупка выводилась цена из документа прихода товаров

    *из последнего, по данному товару, документа приходов
  14. vartanet
    Offline

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

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    кнопащка есть
  15. vartanet
    Offline

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

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

    это надо делать соединение с ещё одной таблицей -> например, табличная часть документа поступление товаров с сортировкой по дате документа по убыванию.. использовать выбрать первые..

    или по регистру ТоварыНаСкладах получить последний регистратор
  16. TopicStarter Overlay
    igandalff
    Offline

    igandalff

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

    igandalff

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

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

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    а цены номенклатуры у вас не храняться в документе УстановкаЦенНоменклатурыКонтрагентов?
  19. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    vartanet, в регистре сведений.
    Документа УстановкаЦенНоменклатурыКонтрагентов может не быть, поскольку цены могут регистрироваться ПТиУ (а могут и не регистрироваться).
  20. vartanet
    Offline

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

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    в документе ПоступлениеТоваровУслуг есть галка "регистрировать цены поставщика" (кнопка "цены и валюты"). если она стоит, тогда документ поступление создает записи в регистре сведений ЦеныНоменклатурыКонтрагентов.

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


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

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