8.х Помогите создать запрос

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Alex_fess, 17 дек 2014.

  1. TopicStarter Overlay
    Alex_fess
    Offline

    Alex_fess Опытный в 1С

    Регистрация:
    23 мар 2011
    Сообщения:
    256
    Симпатии:
    7
    Баллы:
    29
    Добрый день.
    Сам запрос
    Код:
    ВЫБРАТЬ
     Продажи.Номенклатура КАК Номенклатура,
     СУММА(Продажи.Количество) КАК Количество,
     ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК ЦенаЗакупочнаяСредняя,
     Продажи.Контрагент,
    {ВЫБРАТЬ
     Номенклатура.*,
     Количество,
     ЦенаЗакупочнаяСредняя}
    ИЗ
     РегистрНакопления.Продажи КАК Продажи
     ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата2, ТипЦен В (&ТипыЦен)) КАК ЦеныНоменклатурыСрезПоследних
     ПО Продажи.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
    ГДЕ
     Продажи.Период >= &Дата1
     И Продажи.Период <= КОНЕЦПЕРИОДА(&Дата2, ДЕНЬ)
    *В параметр &ТипыЦен выбирается массив из типов цен
    Допустим массив состоит из 2-х типов цен.
    И происходит такая проблема: если есть зарегистрированные цены на каждый из этих типов цен, запрос дублирует строку, подставляя цены по очереди. Соответственно, "Количество" увеличивается вдвое.

    Каким образом мне подставлять только максимальную цену (из каждого типа)?
    Заранее спасибо
  2. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Подзапросом, с выбором максимальной цены.
    Alex_fess нравится это.
  3. TopicStarter Overlay
    Alex_fess
    Offline

    Alex_fess Опытный в 1С

    Регистрация:
    23 мар 2011
    Сообщения:
    256
    Симпатии:
    7
    Баллы:
    29
    Можно схематично, плз?))
  4. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Вот вам схематично:
    Код:
    ВЫБРАТЬ
        ПоступлениеТоваров.Ссылка КАК Документ,
        ПоступлениеТоваров.НомерСчетаФактуры,
        ПоступлениеТоваров.ДатаСчетаФактуры,
        ПоступлениеТоваров.Контрагент,
        ВложенныйЗапрос.СуммаВсего
    ИЗ
    Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
    ЛЕВОЕ СОЕДИНЕНИЕ
        (ВЫБРАТЬ
             ПоступлениеТоваровТовары.Ссылка,
            СУММА(ПоступлениеТоваров.Товары.СуммаВсего) КАК СуммаВсего
        ИЗ
            Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
               СГРУППИРОВАТЬ ПО ПоступлениеТоваровТовары.Ссылка
        ) КАК ВложенныйЗапрос
    ПО ПоступлениеТоваров.Ссылка = ВложенныйЗапрос.Ссылка
      
    ГДЕ
        ПоступлениеТоваров.Ссылка В(&мДок)
        И ПоступлениеТоваров.КодСчетФактурыАльфа = 0
    Alex_fess нравится это.
  5. TopicStarter Overlay
    Alex_fess
    Offline

    Alex_fess Опытный в 1С

    Регистрация:
    23 мар 2011
    Сообщения:
    256
    Симпатии:
    7
    Баллы:
    29
    Спасибо, вроде помогло)))
    Оч. признателен
  6. TopicStarter Overlay
    Alex_fess
    Offline

    Alex_fess Опытный в 1С

    Регистрация:
    23 мар 2011
    Сообщения:
    256
    Симпатии:
    7
    Баллы:
    29
    Немного поменялась задача:
    Требуется получать закупочную цену на момент продажи.
    В общем должна выводиться таблица с продажами товаров + вывод цены на момент каждой продажи.
    И тут мой мозг меня послал. Пытаюсь это сделать на СКД, но уже не могу сфантазировать как описать эту связь.
    Может кто-нибудь что-то подскажет?
  7. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Регистр сведений цены номенклатуры - срез последних
  8. TopicStarter Overlay
    Alex_fess
    Offline

    Alex_fess Опытный в 1С

    Регистрация:
    23 мар 2011
    Сообщения:
    256
    Симпатии:
    7
    Баллы:
    29
    Вот запрос
    Код:
    ВЫБРАТЬ
     Продажи.Номенклатура КАК Номенклатура,
     СУММА(Продажи.Количество) КАК Количество,
     СУММА(Продажи.Стоимость) КАК СуммаПродажи,
     СУММА(Продажи.СтоимостьБезСкидок) КАК СуммаПродажиБезСкидок,
     СРЕДНЕЕ(ТаблицаЦен.Цена) КАК ЦенаЗакупочнаяСредняя,
     Продажи.Период,
     Продажи.Контрагент,
     Продажи.Регистратор,
     Продажи.Регистратор.КассаККМ КАК КассаККМ,
     СУММА(Продажи.Стоимость - ЕСТЬNULL(ТаблицаЦен.Цена, 0) * Продажи.Количество) КАК Прибыль,
     СРЕДНЕЕ((Продажи.Стоимость / ЕСТЬNULL(ТаблицаЦен.Цена, 0) / Продажи.Количество - 1) * 100) КАК ПроцентНаценки,
     СРЕДНЕЕ(Продажи.Стоимость / ЕСТЬNULL(Продажи.Количество, 1)) КАК ЦенаПродажи
    {ВЫБРАТЬ
     Номенклатура.*,
     Количество,
     СуммаПродажи,
     СуммаПродажиБезСкидок,
     ЦенаЗакупочнаяСредняя}
    ИЗ
     РегистрНакопления.Продажи КАК Продажи
     Левое СОединение
     (ВЫБРАТЬ
     ЦеныНоменклатурыСрезПоследних.Цена,
     ЦеныНоменклатурыСрезПоследних.Номенклатура
     ИЗ
     РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата2, ТипЦен В (&ТипЦенЗакуп)) КАК ЦеныНоменклатурыСрезПоследних) КАК ТаблицаЦен
     ПО Продажи.Номенклатура = ТаблицаЦен.Номенклатура
     
    ГДЕ
     Продажи.Период >= &Дата1
     И Продажи.Период <= КОНЕЦПЕРИОДА(&Дата2, ДЕНЬ)
    СГРУППИРОВАТЬ ПО
     Продажи.Номенклатура,
     Продажи.Период,
     Продажи.Контрагент,
     Продажи.Регистратор,
     Продажи.Регистратор.КассаККМ,
     Продажи.Стоимость - ЕСТЬNULL(ТаблицаЦен.Цена, 0) * Продажи.Количество,
     (Продажи.Стоимость / ЕСТЬNULL(ТаблицаЦен.Цена, 0) * Продажи.Количество - 1) * 100,
     Продажи.Стоимость / Продажи.Количество
    --- Объединение сообщений, 18 дек 2014 ---
    Нужно выводить ЦенаЗакупочнаяСредняя на день продажи товара
  9. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Во вложенном запросе рассчитывайте среднюю цену.
  10. TopicStarter Overlay
    Alex_fess
    Offline

    Alex_fess Опытный в 1С

    Регистрация:
    23 мар 2011
    Сообщения:
    256
    Симпатии:
    7
    Баллы:
    29
    Если рассматривать без группировок, то примерно так:
    Период Номенклатура СуммаПродажи ЦенаЗакупки
    10.01.14 Товар1 1000р. 100р
    20.01.14 Товар1 2000р. 200р

    т.е. мне нужно выводить таблицу продаж с получением закупочной цены на дату продажи.
    В запросе, что я скинул берется цена на дату, указываемую в параметре.
    Можно ли эту дату брать из продажи?
    --- Объединение сообщений, 18 дек 2014 ---
    Это вообще реально сделать в запросе?
  11. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    В срезе возвращается единственное значение. Чтобы посчитать среднее на дату, нужно отобрать значения за какой-то период, и разделить на количество.
  12. TopicStarter Overlay
    Alex_fess
    Offline

    Alex_fess Опытный в 1С

    Регистрация:
    23 мар 2011
    Сообщения:
    256
    Симпатии:
    7
    Баллы:
    29
    В срезе да, но этот срез возможно ли делать на динамический период?
  13. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Если только программно рассчитывать, через запрос будет гемор.
    Может что не понял, что значит динамически ? т.е. дата среза от чего будет меняться ?
  14. TopicStarter Overlay
    Alex_fess
    Offline

    Alex_fess Опытный в 1С

    Регистрация:
    23 мар 2011
    Сообщения:
    256
    Симпатии:
    7
    Баллы:
    29
    От даты продажи
  15. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    и у вас несколько дат продажи ?
    Может стоит озвучить задачу ? А то из пустого в порожнее переливать бесконечно можно.
  16. TopicStarter Overlay
    Alex_fess
    Offline

    Alex_fess Опытный в 1С

    Регистрация:
    23 мар 2011
    Сообщения:
    256
    Симпатии:
    7
    Баллы:
    29
    Ок.
    Мне нужно видеть прибыль по товарам.
    Выбираем период, и должен сформироваться отчет по проданному товару и сколько на этом товаре заработали.
    Прибыль вычисляем так: СуммаПродажи (фактически по чем был продан товар) - Кол-во*ЦенаЗакупки (на дату продажи)
    Регистр партий не использовать
  17. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Что за конфа?
  18. TopicStarter Overlay
    Alex_fess
    Offline

    Alex_fess Опытный в 1С

    Регистрация:
    23 мар 2011
    Сообщения:
    256
    Симпатии:
    7
    Баллы:
    29
    УТ 10.3
  19. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    отчет Валовая прибыль чем не устраивает ?
  20. TopicStarter Overlay
    Alex_fess
    Offline

    Alex_fess Опытный в 1С

    Регистрация:
    23 мар 2011
    Сообщения:
    256
    Симпатии:
    7
    Баллы:
    29
    "Регистр партий не использовать"

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