8.х Как в запросе правильно определить принадлежность справочника к определенной группе?

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

  1. TopicStarter Overlay
    Vladius
    Offline

    Vladius Опытный в 1С

    Регистрация:
    10 ноя 2010
    Сообщения:
    663
    Симпатии:
    3
    Баллы:
    29
    У меня есть справочник с настройками, который я подвязываю к определенной группе номенклатуры. Мне надо определить, входит ли в эту группу данная номенклатура, если входит получить ссылку на справочник с настройками.

    Делаю это через задницу. Работает долго, прокатывает так как у нас максимум 4 группы у номенклатуры.

    Так как же в запросе это правильно сделать?

    Код:
    ВЫБРАТЬ
        Номенклатура.Ссылка КАК Ссылка,
        УправлениеМаржинальнойКорзиной.Ссылка КАК НастройкиМК
    ИЗ
        Справочник.УправлениеМаржинальнойКорзиной КАК УправлениеМаржинальнойКорзиной
            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
            ПО (Номенклатура.Ссылка.Родитель = УправлениеМаржинальнойКорзиной.КатегорияТоваров
                    ИЛИ Номенклатура.Ссылка.Родитель.Родитель = УправлениеМаржинальнойКорзиной.КатегорияТоваров
                    ИЛИ Номенклатура.Ссылка.Родитель.Родитель.Родитель = УправлениеМаржинальнойКорзиной.КатегорияТоваров
                    ИЛИ Номенклатура.Ссылка.Родитель.Родитель.Родитель.Родитель = УправлениеМаржинальнойКорзиной.КатегорияТоваров
                    ИЛИ Номенклатура.Ссылка.Родитель.Родитель.Родитель.Родитель.Родитель = УправлениеМаржинальнойКорзиной.КатегорияТоваров)
    ГДЕ
        Номенклатура.Ссылка = &Ссылка
    --- Объединение сообщений, 9 сен 2016 ---
    Вот если можно было бы так было бы идеально :)))

    Код:
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
            ПО (Номенклатура.Ссылка.Родитель.Родитель В ИЕРАРХИИ (УправлениеМаржинальнойКорзиной.КатегорияТоваров))
    Последнее редактирование: 9 сен 2016
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Ну пипец.....сделай временную таблицу номенклатуры по нужной группе и соединяй по категории товаров, либо в ГДЕ запихай запрос к временной таблице
  3. TopicStarter Overlay
    Vladius
    Offline

    Vladius Опытный в 1С

    Регистрация:
    10 ноя 2010
    Сообщения:
    663
    Симпатии:
    3
    Баллы:
    29
    Не прокатывает, в настройках указывается группа и там в ней ещё около 5 подгрупп, надо определять в какую группу входит номенклатура. Если бы в настройках указывали определенную группу к которой подвязан товар, то тогда вообще вопросов не возникало бы. А так просто указывают общую группу в которой еще несколько групп.

    На данный момент меня устраивает этот говно-код ) На удивление работает быстро.

    Код:
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УправлениеМаржинальнойКорзиной КАК УправлениеМаржинальнойКорзиной
                              ПО (Продажи.Номенклатура.Родитель = УправлениеМаржинальнойКорзиной.КатегорияТоваров
                                       ИЛИ Продажи.Номенклатура.Родитель.Родитель = УправлениеМаржинальнойКорзиной.КатегорияТоваров
                                       ИЛИ Продажи.Номенклатура.Родитель.Родитель.Родитель = УправлениеМаржинальнойКорзиной.КатегорияТоваров
                                       ИЛИ Продажи.Номенклатура.Родитель.Родитель.Родитель.Родитель = УправлениеМаржинальнойКорзиной.КатегорияТоваров
                                      ИЛИ Продажи.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель = УправлениеМаржинальнойКорзиной.КатегорияТоваров)
  4. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Почитайте про рекурсию, если вам нужно такое "дерево" групп получать

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