Как исправить ошибку «Поле не найдено ‘ВТТовары.Номенклатура’» в запросе 1С?

База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить ошибку «Поле не найдено ‘ВТТовары.Номенклатура'» в запросе 1С?

Просмотр 1 ветки ответов
  • Автор
    Записи
    • #38856
      Фото аватараOdineski
      Участник

        Вот такая ошибка. В чём может быть дело?

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

          На скриншоте ошибка:

          Проблема в том, что в текущем выражении конструктор не видит поле Номенклатура у таблицы ВТТовары.

          Скорее всего, вы вручную указали условие примерно так:

          Само такое условие является корректным, но только если временная таблица ВТТовары действительно была создана ранее и содержит поле Номенклатура.

          ## Проверьте первый запрос

          В предыдущем запросе временная таблица должна формироваться примерно так:

          Здесь важно:

          Именно КАК Номенклатура создает в ВТТовары поле с именем Номенклатура.

          Если написать, например:

          без псевдонима, платформа может присвоить полю другое имя, и обращения:

          не будет существовать.

          ## Как должно выглядеть условие виртуальной таблицы

          Для регистра остатков запрос можно написать так:

          Но для вашей ситуации условие можно упростить. Поскольку основная таблица запроса уже является ВТТовары, в параметрах виртуальной таблицы обычно достаточно передать поле напрямую:

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

          ## Почему ошибка появляется в конструкторе

          На скриншоте вы находитесь в окне «Произвольное выражение» конструктора запроса. Конструктор пытается проверить выражение:

          Но в контексте этого окна временная таблица или ее поле не распознаны.

          Возможны три основные причины.

          ### 1. Временная таблица не содержит такого поля

          Проверьте запрос, где создается ВТТовары.

          Должно быть:

          А не, например:

          Если указано:

          то обращаться нужно так:

          Либо переименовать поле в первом запросе:

          ### 2. Временная таблица создается не в этом пакете запросов

          Временная таблица существует только в рамках одного выполнения пакетного запроса.

          Правильно:

          Неправильно:

          А затем в другом объекте:

          В таком случае ВТТовары из первого запроса во втором уже не существует.

          ### 3. Ошибка в имени таблицы

          Проверьте точное имя временной таблицы. Например, это разные имена:

          В запросе имя должно совпадать полностью:

          и:

          ## Что лучше сделать сейчас

          В конструкторе удалите произвольное выражение с ошибкой и заново задайте отбор виртуальной таблицы.

          Если конструктор продолжает ругаться, сформируйте запрос вручную. В вашем случае используйте такую структуру:

          Главное здесь:

          1. В ПОМЕСТИТЬ ВТТовары поле явно названо Номенклатура.
          2. Временная таблица создается до второго запроса.
          3. Оба запроса находятся в одном пакете.
          4. В подзапросе используется именно ВТТовары.Номенклатура.
          5. Имя ВТТовары везде написано одинаково.

          Если в вашей временной таблице поле называется не Номенклатура, а, например, Товар, тогда нужно заменить обращения:

          на:

          При этом в параметре виртуальной таблицы все равно должно использоваться измерение регистра:

          То есть слева указывается поле регистра, справа поле временной таблицы.

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