Как отредактировать запрос для временной таблицы с ссылками номенклатур?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как отредактировать запрос для временной таблицы с ссылками номенклатур?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #35298
      Фото аватараOdineski
      Участник

        отредактируй и объясни запрос, во временную таблицу я хочу поместить таблицу значений, в которой находиться несколько ссылок номенклатур.
        ВЫБРАТЬ
        Номенклатура.Ссылка КАК Ссылка,
        Номенклатура.Наименование КАК Наименование
        ПОМЕСТИТЬ ВТ_Номенклатура
        ИЗ
        Справочник.Номенклатура КАК Номенклатура
        ГДЕ
        Номенклатура.Ссылка = &Ссылка
        ;

        ////////////////////////////////////////////////////////////////////////////////
        ВЫБРАТЬ
        ВТ_Номенклатура.Ссылка КАК Ссылка,
        ВТ_Номенклатура.Наименование КАК Наименование,
        ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
        УчетРезервовТМЦОстатки.КоличествоОстаток КАК Резерв
        ИЗ
        ВТ_Номенклатура КАК ВТ_Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УчетРезервовТМЦ.Остатки КАК УчетРезервовТМЦОстатки
        ПО ВТ_Номенклатура.Ссылка.Ссылка = УчетРезервовТМЦОстатки.Номенклатура.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&Дата, ) КАК ПартииТоваровНаСкладахОстатки
        ПО ВТ_Номенклатура.Ссылка.Ссылка = ПартииТоваровНаСкладахОстатки.Номенклатура.Ссылка
        ГДЕ
        (ПартииТоваровНаСкладахОстатки.Склад.Наименование = «Склад №3»
        ИЛИ ПартииТоваровНаСкладахОстатки.Склад.Наименование = «ВИТРИНА»)
        И (УчетРезервовТМЦОстатки.Склад.Наименование = «Склад №3»
        ИЛИ УчетРезервовТМЦОстатки.Склад.Наименование = «ВИТРИНА»)

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

          Димон, привет!

          Вот отредактированный и подробно объяснённый вариант твоего запроса с использованием временной таблицы, в которую помещается таблица значений с несколькими ссылками номенклатур. Также исправлены ошибки в синтаксисе и логике соединений.

          ### Объяснение:

          1. **Временная таблица ВТ_Номенклатура**

          — Вместо того, чтобы фильтровать по одному значению Номенклатура.Ссылка = &Ссылка, мы помещаем в временную таблицу сразу несколько ссылок из параметра &ТаблЗнач (ТаблицаЗначений).
          — Это позволяет работать с произвольным набором номенклатур, переданных из внешнего кода.

          2. **Основной запрос**

          — Из временной таблицы ВТ_Номенклатура делаем левое соединение с регистром накопления остатков ПартииТоваровНаСкладах.Остатки и регистром резервов УчетРезервовТМЦ.Остатки.
          — В соединениях по полю Номенклатура используется прямая ссылка, без .Ссылка, так как поле уже является ссылкой.
          — Для регистра ПартииТоваровНаСкладах.Остатки передаётся параметр периода &Дата (например, текущая дата).
          — В условии ГДЕ фильтруем остатки и резервы по складам, передаваемым в параметре &Склады — это массив или список значений, например: [«Склад №3», «ВИТРИНА»].
          — Использование оператора В вместо нескольких ИЛИ упрощает и ускоряет запрос.

          3. **Параметры запроса**

          &ТаблЗнач — таблица значений с колонкой Ссылка типа СправочникСсылка.Номенклатура.
          &Дата — дата, на которую берутся остатки.
          &Склады — список наименований складов для фильтрации.

          ### Важные моменты:

          — Временные таблицы в 1С позволяют эффективно передавать наборы значений в запросы, избегая громоздких условий с множеством ИЛИ.
          — В запросах к регистрам накопления и сведений важно правильно указывать параметры периода и условия отбора.
          — Использование псевдонимов и явных ссылок упрощает чтение и поддержку кода.
          — Фильтрация по складам через параметр &Склады делает запрос гибким и удобным для расширения.

          Если нужно, могу помочь с примером кода на 1С для формирования параметров и вызова этого запроса.

          Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/69743/

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С