8.х Запрос

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

  1. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    Здравствуйте.

    Что то уже голова совсем не соображает :)

    Нужна помощь с запросом.
    Код:
    ВЫБРАТЬ
        РасходнаяНакладнаяТовары.Номенклатура КАК Номенклатура,
        СУММА(РасходнаяНакладнаяТовары.Количество * РасходнаяНакладнаяТовары.Коэффициент) КАК Количество,
        СУММА(РасходнаяНакладнаяТовары.Сумма) КАК Сумма
    ПОМЕСТИТЬ ДокТЧ
    ИЗ
        Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
    ГДЕ
        РасходнаяНакладнаяТовары.Ссылка = &Ссылка
    
    СГРУППИРОВАТЬ ПО
        РасходнаяНакладнаяТовары.Номенклатура
    
    ИНДЕКСИРОВАТЬ ПО
        Номенклатура
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ДокТЧ.Номенклатура,
        МИНИМУМ(ДокТЧ.Количество) КАК Количество,
        МИНИМУМ(ДокТЧ.Сумма) КАК Сумма,
        СУММА(СебестоимостьНоменклатуры.Себестоимость) КАК Себестоимость
    ИЗ
        ДокТЧ КАК ДокТЧ
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СебестоимостьНоменклатуры КАК СебестоимостьНоменклатуры
            ПО ДокТЧ.Номенклатура = СебестоимостьНоменклатуры.Номенклатура
    ГДЕ
        СебестоимостьНоменклатуры.Регистратор = &Регистратор
    
    СГРУППИРОВАТЬ ПО
        ДокТЧ.Номенклатура
    Можно ли этот запрос написать как то более грамотно? Или это нормальный запрос? Мне нужно движения документа объединить с данными его табличной части.
    Но табличная часть у меня сгруппирована. А вот данные в регистре нет. И так как я делаю отбор по регистратору то у меня при списании нескольких партий в таблице регистра больше записей чем в таблице документа.
    Собственно правильно ли я их свернул? Через "Минимум".
    И второй вопрос как то можно иначе получить эти данные? Может как то по другому построить запрос?
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Я бы сделал группировку движений во временной таблице и уже потом делал соединение.
    Последнее редактирование: 5 мар 2015
  3. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    А вот ещё такой вопрос. У меня во временной таблице есть номенклатура которой нет в регистре. И делая соединение таким образом у меня в результате запроса нет одной записи из табличной части документа.
    Как можно сделать соединение?
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Никак. Нужно делать объединение. Только пока не понятно, почему данные в регистре и тч документа различаются, такого быть не должно, иначе можно умереть в поисках истины.
  5. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    Данные как раз таки и могут отличаться. Дело в том что регистр хранит партии товаров. А в табличную часть вводятся ещё и услуги.
    А в итоге нужно сформировать движения по регистру продажи в котором нужно получить прибыль. То есть разницу между себестоимостью и выручкой. И так же в этом же отчёте должны выводится услуги. По ним то же нужно видеть прибыль.
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Тогда я бы пошел по тому пути, что и создатели типовых конфигураций: отделил услуги от товаров на уровне тч документа, факт реализации фиксировать в отдельном регистре накопления.
  7. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    Это как "отделил бы услуги и товары на уровне ТЧ".
    В одну временную таблицу услуги в другую товары?
    --- Объединение сообщений, 6 мар 2015 ---
    Факт реализации я и так фиксирую в отдельном регистре продажи.
    Последнее редактирование: 6 мар 2015
  8. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    А я бы еще добавил один регистр и в него писал прибыль при проведении дока :), таким образом вообще красота с отчетами получится :)
  9. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    Нет регистров там достаточно. Больше даже чем нужно.
    Задача решается на 3х регистрах. Хотя можно и на 2х если не ведётся складской учет.
    Это задача на спеца по платформе и её нужно решить так как положено :)
    А вот по услугам и товарам сказано что они отражаются в одной табличной части.
  10. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    мы ж начальные условия не знаем. хорошо. в одной, так в одной.
    судя по тексту запроса, пока не понятно для чего нужно Минимум(ДокТЧ.Количество) и Минимум(ДокТЧ.Сумма)? Эти поля должны быть в полях группировки.
  11. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    В принципе Минимум(ДокТЧ.Количество) не нужна. Я думал что результат задвоится. У меня в регистре накопления несколько строк, списано несколько партий. А в таб части данные уже сгруппированы. И мне нужно просуммировать Себестоимость и соединить с временной таблицей.
  12. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Имхо, себестоимость - это цена единицы товара, она не может быть просуммирована.
    Еще момент: если не хватит количества при списании, пользователю нужно сообщать строку, в которой количество больше остатка. Как это планируется сделать?
  13. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    В регистре Партий не суммируется. Мне же нужно для регистра Продажи. Что бы прибыль получить.

    Продал 10 вилок за 100 руб. Что бы мне получить прибыль от этой продажи мне нужно получить себестоимость проданных 10 вилок. Но они были списаны из 3х разных партий. Это делает один документ реализации.

    В регистр Продажи мне нужно записать Номенклатуру, Количество, Себестоимость, Выручка.

    Выручка и количество у меня в документе реализации есть. Себестоимость у меня рассчитывается и записывается в момент проведения документа РасходнаяНакладная в регистр партий. Затем я получаю табличную часть документа и получаю себестоимость списанных товаров. Ну а так как они из разных партий были списаны то я её суммирую для записи в регистр Продажи.
    --- Объединение сообщений, 6 мар 2015 ---
    Что бы получить в итоге:
    Номенклатура: Вилка
    Количество: 10шт.
    Себестоимость: 50 руб.
    Выручка: 100 руб.
    --- Объединение сообщений, 6 мар 2015 ---
    Вот для полного счастья мне не хватает в результате этого запроса услуги из табличной части.
    Во временной таблице она у меня есть. А в результате запроса её нет. Так как я делаю соединение с регистром партии. А в него услуги вообще никак не попадают.
    Я конечно могу и другими способами эти услуги выдернуть и в регистр записать. Но мне интересно может как то это можно решить запросом.

    Я смотрел варианты решения этой задачи теми кто готовился. Но у всех или обработка услуг вместе с партиями в цикле. Или отдельно обход табличной части по услугам и запись услуг.
    Хочу попробовать получить услуги и товары одним запросом что бы потом данные загрузить в движения а не в цикле добавлять.
    Последнее редактирование: 6 мар 2015
  14. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Если делать одним запросом, то из документа в любом случае выберутся все строки ТЧ, при этом у услуг будет себестоимость NULL, можно превратить ее в 0 легко и прибыль будет равна выручке.

    Услуги из ТЧ документа должны присутствовать в выборке.
  15. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    Себестоимость не проблема. Можно из NULL сделать 0.
    У меня нет в выборке услуги из ТЧ.
    Запрос123.jpg
  16. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Все логично, т.к. отбор через ГДЕ по регистратору установлен.
    необходимо сделать временную таблицу или подзапрос.

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