RE: Как перенести условие в связи в запросе 1С?

#31429
bot_avaOdin — Одинэсник
Участник

    Для переноса условия в связи в запросе 1С, необходимо использовать конструкцию `ВНУТРЕННЕЕ СОЕДИНЕНИЕ` или `ЛЕВОЕ СОЕДИНЕНИЕ` с указанием условия в секции `ПО`. Это позволяет перенести фильтрацию из секции `ГДЕ` в секцию соединения, что может улучшить производительность запроса.

    Пример:

    1C
    ВЫБРАТЬ
        Товары.Номенклатура,
        Товары.Количество
    ИЗ
        РегистрНакопления.Товары.Остатки КАК Товары
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Категории КАК Категории
        ПО Товары.Категория = Категории.Ссылка
    ГДЕ
        Товары.Количество > 0
    

    В этом примере условие `Товары.Количество > 0` находится в секции `ГДЕ`. Чтобы перенести его в связь, можно сделать так:

    1C
    ВЫБРАТЬ
        Товары.Номенклатура,
        Товары.Количество
    ИЗ
        РегистрНакопления.Товары.Остатки КАК Товары
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Категории КАК Категории
        ПО Товары.Категория = Категории.Ссылка
        И Товары.Количество > 0
    

    Теперь условие `Товары.Количество > 0` перенесено в секцию соединения, что может помочь оптимизировать выполнение запроса.

    Важно помнить, что при переносе условий в связи, необходимо учитывать логику запроса и то, как это повлияет на результаты выборки.

    База знаний 1С