8.х Отчет по комбинациям

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

  1. TopicStarter Overlay
    Максим
    Offline

    Максим Опытный в 1С

    Регистрация:
    28 фев 2008
    Сообщения:
    706
    Симпатии:
    8
    Баллы:
    29
    Добрый день.
    1С:Предприятие 8.3 (8.3.9.2309)
    Народ подскажите куда копать.
    Задача отчет по непериодическому регистру сведений.
    В нем два измерения Номенклатура, Валюта (справочники)
    В отчет нужно вывести только ту номенклатуру для которой все комбинации Номенклатура-Валюта одинаковые. Пример:
    В регистре:
    Ном1 - Валюта1
    Ном1 - Валюта2
    Ном2 - Валюта1
    Ном3 - Валюта1
    Ном3 - Валюта2

    В отчет должно попасть только Ном1 и Ном 3
  2. ТехБухПривет
    Offline

    ТехБухПривет Профессионал в 1С Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    701
    Симпатии:
    73
    Баллы:
    54
    ВТ по валюте с группировкой по валюте(получим все валюты), а потом запрос, а вот какой реши сам ;)
    upload_2018-10-8_12-25-49.png

    P.S. самое быстрое, что нашёл про объединения в запросах не ругайте сильно :oops:
  3. TopicStarter Overlay
    Максим
    Offline

    Максим Опытный в 1С

    Регистрация:
    28 фев 2008
    Сообщения:
    706
    Симпатии:
    8
    Баллы:
    29
    по валюте с группировкой по валюте(получим все валюты)
    Не понял как это поможет
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.271
    Симпатии:
    966
    Баллы:
    204
    В 1с используются 3 вида соединения: левое/правое, полное и внутреннее.

    Все остальные виды соединений просто не доступны.
  5. TopicStarter Overlay
    Максим
    Offline

    Максим Опытный в 1С

    Регистрация:
    28 фев 2008
    Сообщения:
    706
    Симпатии:
    8
    Баллы:
    29
    OK. Это я знаю, а есть мысли как задачу решить. Всю голову уже сломал. Через один пакетный запрос не получается придумать.
  6. Csar
    Offline

    Csar Опытный в 1С

    Регистрация:
    3 сен 2014
    Сообщения:
    62
    Симпатии:
    1
    Баллы:
    29
    "комбинации Номенклатура-Валюта одинаковые" - это означает, что выбрать все одинаковые пары Номенклатура-Валюта. А тут таких нет - все разные. В противном случае правильно сформулируйте вопрос.
    --- Объединение сообщений, 8 окт 2018 ---
    если требуется отобрать все пары Ном-Вал, где каждой Ном соответствует весь набор Вал, то вот мое решение:
    1) считаем общее количество различных Валют.
    2) фильтруем твою таблицу на предмет отсева дублей по парам Ном-Вал. Помещаем в вирт. таблицу ВТ_1
    3) Из ВТ_1 выбираем:
    выбрать
    Ном,
    СУММА(1)
    ПОМЕСТИТЬ ВТ_2
    ИЗ ВТ_1
    ИМЕЮЩИЕ СУММА(1) = Количество из 1) для каждой Ном
    4) из ВТ_2 левым соединением цепляем валюты из ВТ_1
    Последнее редактирование: 8 окт 2018
    ТехБухПривет нравится это.
  7. ТехБухПривет
    Offline

    ТехБухПривет Профессионал в 1С Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    701
    Симпатии:
    73
    Баллы:
    54
    Ну тогда уже 4 ведь левое и правое - разные... :)
    А на картинке кроме данных соединений ничего и нет - просто игра с отборами..
  8. Csar
    Offline

    Csar Опытный в 1С

    Регистрация:
    3 сен 2014
    Сообщения:
    62
    Симпатии:
    1
    Баллы:
    29
    Код:
    ВЫБРАТЬ
        ТЗ.Ном КАК Ном,
        ТЗ.Вал КАК Вал
    ПОМЕСТИТЬ ВТ_Первичн
    ИЗ
        &ТЗ КАК ТЗ
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ РАЗЛИЧНЫЕ
        ТЗ.Ном КАК Ном,
        ТЗ.Вал КАК Вал
    ПОМЕСТИТЬ ВТ
    ИЗ
        ВТ_Первичн КАК ТЗ
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ РАЗЛИЧНЫЕ
        тз.Вал КАК Вал
    ПОМЕСТИТЬ ВТ_Вал
    ИЗ
        ВТ КАК тз
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        СУММА(1) КАК КолВоВал
    ПОМЕСТИТЬ ВТ_КолвоВал
    ИЗ
        ВТ_Вал КАК ВТ
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        тз.Ном КАК Ном,
        СУММА(1) КАК КолвО
    ПОМЕСТИТЬ ВТ_1
    ИЗ
        ВТ КАК тз
    
    СГРУППИРОВАТЬ ПО
        тз.Ном
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ВТ_1.Ном КАК Ном,
        ВТ_1.КолвО КАК КолвО
    ПОМЕСТИТЬ ВТ_2
    ИЗ
        ВТ_1 КАК ВТ_1
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_КолвоВал КАК ВТ_КолвоВал
            ПО ВТ_1.КолвО = ВТ_КолвоВал.КолВоВал
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ВТ.Ном КАК Ном,
        ВТ.Вал КАК Вал
    ИЗ
        ВТ_2 КАК ВТ_2
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ КАК ВТ
            ПО (ВТ.Ном = ВТ_2.Ном)
  9. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.271
    Симпатии:
    966
    Баллы:
    204
    Левое/Правое соединения - суть одна.

    Хотя наврал. 1С использует все виды соединений: FULL, LEFT/RIGHT, INNER, CROSS
  10. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    7.873
    Симпатии:
    503
    Баллы:
    204
    Это че такое?
    1С всегда преобразует правое в левое меняя местами таблицы. Поэтому да, суть одна)))
  11. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.271
    Симпатии:
    966
    Баллы:
    204
    Это все со всеми без условий, т.е. декартовое соединение называется

    Выглядит так:

    Select T1.Field1, T2.Field1 From T1, T2
  12. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    7.873
    Симпатии:
    503
    Баллы:
    204
    А, понял.

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