Почему в запросе возникает ошибка «Поле не найдено ВТ_Врем.Номенклатура.нсиКодНС

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

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

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

        ////////////////////////////////////////////////////////////////////////////////
        ВЫБРАТЬ
        ВТ_Врем.Спецификация КАК Спецификация,
        ВТ_Врем.Номенклатура КАК Номенклатура,
        ВТ_Врем.Номенклатура.нсиКодНСИ КАК КодЕСНСИ,
        ВТ_Врем.Номенклатура КАК НаименованиеМатериала,
        ВТ_Врем.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
        ВТ_Врем.Количество КАК Количество,
        ВТ_Врем.МаркаСтали КАК МаркаСтали,
        ВТ_Врем.НомерГОСТа КАК НомерГОСТа,
        ВТ_Врем.Характеристика КАК Характеристика,
        ВТ_Врем.СтатьяКалькуляции КАК СтатьяКалькуляции,
        ВТ_Врем.ПрименениеМатериалаРедактирование КАК Примечание
        ИЗ
        ВТ_Врем КАК ВТ_Врем
        ИТОГИ ПО
        СтатьяКалькуляции

        {ВнешняяОбработка.QueryWizard.Форма.QueryWizard.Форма(118)}: Ошибка при вызове метода контекста (УстановитьТекстЗапроса): {(20, 23)}: Поле не найдено «ВТ_Врем.Номенклатура.нсиКодНСИ»
        ВТ_Врем.Номенклатура.<<?>>нсиКодНСИ КАК КодЕСНСИ,

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

          Ошибка «Поле не найдено ВТ_Врем.Номенклатура.нсиКодНСИ» возникает потому, что в таблице значений (ТЗ), которую вы передаете в параметр &ТЗ, поле Номенклатура — это ссылка на справочник, а в запросе вы пытаетесь обратиться к реквизиту справочника (нсиКодНСИ) через точку, что в запросах 1С к ТаблицеЗначений не работает.

          В запросах 1С к ТаблицеЗначений нельзя обращаться к реквизитам объектов, которые лежат в колонках типа «Справочник», через точку. Там хранится просто ссылка, а не раскрытый объект.

          Чтобы получить реквизит нсиКодНСИ, нужно сделать отдельное соединение с самим справочником Номенклатура.

          Правильный вариант — сделать соединение с справочником Номенклатура по ссылке из таблицы значений, например так:

          |ВЫБРАТЬ
          | ВТ_Врем.Спецификация КАК Спецификация,
          | ВТ_Врем.Номенклатура КАК Номенклатура,
          | Номенклатура.нсиКодНСИ КАК КодЕСНСИ,
          | ВТ_Врем.Номенклатура КАК НаименованиеМатериала,
          | ВТ_Врем.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
          | ВТ_Врем.Количество КАК Количество,
          | ВТ_Врем.МаркаСтали КАК МаркаСтали,
          | ВТ_Врем.НомерГОСТа КАК НомерГОСТа,
          | ВТ_Врем.Характеристика КАК Характеристика,
          | ВТ_Врем.СтатьяКалькуляции КАК СтатьяКалькуляции,
          | ВТ_Врем.ПрименениеМатериалаРедактирование КАК Примечание
          |ИЗ
          | ВТ_Врем КАК ВТ_Врем
          | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
          | ПО ВТ_Врем.Номенклатура = Номенклатура.Ссылка
          |ИТОГИ ПО
          | ВТ_Врем.СтатьяКалькуляции

          Обратите внимание, что ИТОГИ ПО — это устаревшая конструкция, лучше использовать СГРУППИРОВАТЬ ПО и агрегатные функции.

          Если хотите получить итог по СтатьяКалькуляции, то запрос должен выглядеть так:

          |ВЫБРАТЬ
          | ВТ_Врем.СтатьяКалькуляции КАК СтатьяКалькуляции,
          | СУММА(ВТ_Врем.Количество) КАК Количество
          |ИЗ
          | ВТ_Врем КАК ВТ_Врем
          |СГРУППИРОВАТЬ ПО
          | ВТ_Врем.СтатьяКалькуляции

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

          Итог: нельзя обращаться к реквизитам справочника через точку в таблице значений, нужно делать соединение с самим справочником.

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