8.х Группировка нескольких наборов данных

Тема в разделе "Система компоновки данных (СКД)", создана пользователем nbIpKuH_BaH9I, 15 дек 2015.

  1. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.979
    Симпатии:
    397
    Баллы:
    104
    Всем привет. Ребят, есть отчет у меня такой. Проблема в том, что в основном наборе я выбираю номенклатуру, чтобы получить срез последних цен в других наборах. Но данные получаются дублируются по номенклатуре (естественно). Если 10 разных номенклатур, то и будет 10 строчек с этими номенклатурами, а надо, чтобы была одна. Вопрос: как?

    Вложения:

  2. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.750
    Симпатии:
    509
    Баллы:
    204
    Объединить ?
  3. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.979
    Симпатии:
    397
    Баллы:
    104
    Не понял. Что именно объединить?
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    На сколько понял суть проблемы:
    группировка с агрегацией даты, либо выборка без даты совсем :)

    Можешь пример в экселе показать?
  5. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.979
    Симпатии:
    397
    Баллы:
    104
    Ну вот например. Должно быть везде 1. Другие колонки с суммой, сбестоимостью и прочей хренью - суммируются. А нужно сгруппировать.
    upload_2015-12-15_9-26-7.png
    --- Объединение сообщений, 15 дек 2015 ---
    Забыл добавить. Колонок много и группировать в настройках не вариант. :)
  6. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.750
    Симпатии:
    509
    Баллы:
    204
    Да тупанул малясь, ляпнул не вникая в тему :)
  7. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.979
    Симпатии:
    397
    Баллы:
    104
    Бывает :D
  8. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Группируй по количеству в том числе или переделай запрос, чтобы таблица с количеством присоединялась к результату на вывод уже после всех группировок.
    nbIpKuH_BaH9I нравится это.
  9. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.979
    Симпатии:
    397
    Баллы:
    104
    Точно, понял. Ща попробую.
  10. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    А почему все через запрос не захотел - быстрее работать будет чем через наборы.
  11. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.979
    Симпатии:
    397
    Баллы:
    104
    Не получается сделать в одном запросе срез последних. Мне их много нужно будет сделать. :)
  12. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    ну почему? Это бразно задача как получить курсы валют на каждый день. или как получить цену последней реализации
  13. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.979
    Симпатии:
    397
    Баллы:
    104
    Нет. У меня есть дата заказ наряда. На нее нужно посчитать закупочную цену данной номенклатуры, чтобы узнать точную себестоимость.
  14. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    НУ и чем это отличается от того что
    у тебя есть период с 1 по 31 и надо на каждую дату получилть либо сотаток на складе либо курс валюты, даже если не было движений
    --- Объединение сообщений, 15 дек 2015 ---
    Если интересно
    Вот
    http://infostart.ru/public/101321/
    http://kb.mista.ru/article.php?id=579
    Последнее редактирование: 15 дек 2015
    nbIpKuH_BaH9I нравится это.
  15. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.979
    Симпатии:
    397
    Баллы:
    104
    Да, уже нашел их. Сижу делаю.
  16. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    Ну там таблицу с датами можно заменить на запрос из Регламентированого производственного календаря
  17. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.979
    Симпатии:
    397
    Баллы:
    104
    Кому интересно, то получился вот такой запросик. По которому выбирается последняя дата в регистре цены по нужному типу цен. А потом получается цена, на эту дату. Если строчки в регистре нет, то подставляется цена продажи данной номенклатуры.
    Код:
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
        ЗаказНарядТовары.Ссылка.Дата КАК Дата,
        ЗаказНарядТовары.Ссылка.Автомобиль КАК Автомобиль,
        ЗаказНарядТовары.Номенклатура КАК Номенклатура_ШиныДиски,
        СУММА(ЗаказНарядТовары.СуммаВсего) КАК СуммаПродажи_ШиныДиски,
        ЗаказНарядТовары.Количество КАК Количество_ШиныДиски,
        ЗаказНарядТовары.Цена КАК ЦенаПродажи
    ПОМЕСТИТЬ ВТ_Номенклатура_Шины_Диски
    ИЗ
        Документ.ЗаказНаряд.Товары КАК ЗаказНарядТовары
    ГДЕ
        ЗаказНарядТовары.Ссылка.Проведен
        И ЗаказНарядТовары.Ссылка.Автомобиль В
                (ВЫБРАТЬ
                    ОстаткиАвтомобилейОбороты.Автомобиль
                ИЗ
                    РегистрНакопления.ОстаткиАвтомобилей.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, СкладКомпании.Организация В (&ДоступныеОрганизации)) КАК ОстаткиАвтомобилейОбороты
                ГДЕ
                    ОстаткиАвтомобилейОбороты.Регистратор ССЫЛКА Документ.РеализацияАвтомобилей)
        И ЗаказНарядТовары.Номенклатура В ИЕРАРХИИ(&ШиныДиски)
    
    СГРУППИРОВАТЬ ПО
        ЗаказНарядТовары.Ссылка.Автомобиль,
        ЗаказНарядТовары.Номенклатура,
        ЗаказНарядТовары.Количество,
        ЗаказНарядТовары.Цена,
        ЗаказНарядТовары.Ссылка.Дата
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        МАКСИМУМ(Цены.Период) КАК МаксимальнаяДата,
        ВТ_Номенклатура_Шины_Диски.Автомобиль,
        ВТ_Номенклатура_Шины_Диски.Номенклатура_ШиныДиски,
        ВТ_Номенклатура_Шины_Диски.СуммаПродажи_ШиныДиски,
        ВТ_Номенклатура_Шины_Диски.Количество_ШиныДиски,
        ВТ_Номенклатура_Шины_Диски.ЦенаПродажи
    ПОМЕСТИТЬ ВТ_МаксимальнаяДата_ШиныДиски
    ИЗ
        ВТ_Номенклатура_Шины_Диски КАК ВТ_Номенклатура_Шины_Диски
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены КАК Цены
            ПО ВТ_Номенклатура_Шины_Диски.Номенклатура_ШиныДиски = Цены.Номенклатура
                И (Цены.ТипЦен = ЗНАЧЕНИЕ(Справочник.ТипыЦен.ОсновнойТипЦенЗакупки))
                И ВТ_Номенклатура_Шины_Диски.Дата >= Цены.Период
    
    СГРУППИРОВАТЬ ПО
        ВТ_Номенклатура_Шины_Диски.Автомобиль,
        ВТ_Номенклатура_Шины_Диски.Номенклатура_ШиныДиски,
        ВТ_Номенклатура_Шины_Диски.СуммаПродажи_ШиныДиски,
        ВТ_Номенклатура_Шины_Диски.Количество_ШиныДиски,
        ВТ_Номенклатура_Шины_Диски.ЦенаПродажи
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    УНИЧТОЖИТЬ ВТ_Номенклатура_Шины_Диски
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ВТ_МаксимальнаяДата_ШиныДиски.МаксимальнаяДата,
        ВТ_МаксимальнаяДата_ШиныДиски.Автомобиль,
        ВТ_МаксимальнаяДата_ШиныДиски.Номенклатура_ШиныДиски,
        ВТ_МаксимальнаяДата_ШиныДиски.СуммаПродажи_ШиныДиски,
        ВТ_МаксимальнаяДата_ШиныДиски.Количество_ШиныДиски,
        ЕСТЬNULL(Цены.Цена, ВТ_МаксимальнаяДата_ШиныДиски.ЦенаПродажи) КАК ЦенаЗакупки,
        ВТ_МаксимальнаяДата_ШиныДиски.Количество_ШиныДиски * ЕСТЬNULL(Цены.Цена, ВТ_МаксимальнаяДата_ШиныДиски.ЦенаПродажи) КАК Себестоимость_ШиныДиски
    ПОМЕСТИТЬ ВТ_Себестоимость_ШиныДиски
    ИЗ
        ВТ_МаксимальнаяДата_ШиныДиски КАК ВТ_МаксимальнаяДата_ШиныДиски
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены КАК Цены
            ПО ВТ_МаксимальнаяДата_ШиныДиски.Номенклатура_ШиныДиски = Цены.Номенклатура
                И ВТ_МаксимальнаяДата_ШиныДиски.МаксимальнаяДата = Цены.Период
                И (Цены.ТипЦен = ЗНАЧЕНИЕ(Справочник.ТипыЦен.ОсновнойТипЦенЗакупки))
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    УНИЧТОЖИТЬ ВТ_МаксимальнаяДата_ШиныДиски
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ВТ_Себестоимость_ШиныДиски.Автомобиль,
        СУММА(ВТ_Себестоимость_ШиныДиски.СуммаПродажи_ШиныДиски) КАК СуммаПродажи_ШиныДиски,
        СУММА(ВТ_Себестоимость_ШиныДиски.Себестоимость_ШиныДиски) КАК Себестоимость_ШиныДиски
    ИЗ
        ВТ_Себестоимость_ШиныДиски КАК ВТ_Себестоимость_ШиныДиски
    
    СГРУППИРОВАТЬ ПО
        ВТ_Себестоимость_ШиныДиски.Автомобиль
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    УНИЧТОЖИТЬ ВТ_Себестоимость_ШиныДиски
  18. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    Ну результат нужный получаешь? Работает быстрее?
  19. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.979
    Симпатии:
    397
    Баллы:
    104
    Результат вроде нужный, но по скорости особо не заметно.

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