Почему данные не подтягиваются из регистра СебестоимостьТоваров в моем запросе?

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

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

        Кажется, у меня не подтягиваются данные из регистра СебестоимостьТоваров.. почему? Как исправить?
        ВЫБРАТЬ
        ПриобретениеТоваровУслуг.Ссылка КАК Ссылка,
        ПриобретениеТоваровУслуг.Номенклатура КАК Номенклатура,

        ВЫБОР КОГДА ПриобретениеТоваровУслуг.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) ТОГДА
        1
        ИНАЧЕ
        &ТекстЗапросаКоэффициентУпаковки2
        КОНЕЦ КАК Коэффициент,

        ВЫБОР КОГДА ПриобретениеТоваровУслуг.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) ТОГДА
        ПриобретениеТоваровУслуг.Номенклатура.ЕдиницаИзмерения
        ИНАЧЕ
        ПриобретениеТоваровУслуг.Упаковка
        КОНЕЦ КАК ЕдиницаИзмерения,

        ПриобретениеТоваровУслуг.ПроцентРучнойСкидки КАК ПроцентСкидки,
        ПриобретениеТоваровУслуг.Характеристика КАК Характеристика,
        ПриобретениеТоваровУслуг.Серия КАК Серия,
        ПриобретениеТоваровУслуг.Упаковка КАК Упаковка,
        ПриобретениеТоваровУслуг.СтавкаНДС КАК СтавкаНДС,
        ПриобретениеТоваровУслуг.Цена КАК Цена,
        ПриобретениеТоваровУслуг.КоличествоУпаковок КАК Количество,
        ПриобретениеТоваровУслуг.Сумма КАК Сумма,
        ПриобретениеТоваровУслуг.СуммаРучнойСкидки КАК СуммаСкидки,
        ПриобретениеТоваровУслуг.Сумма +
        ПриобретениеТоваровУслуг.СуммаРучнойСкидки КАК СуммаБезСкидки,
        ПриобретениеТоваровУслуг.СуммаНДС КАК СуммаНДС,
        null КАК СуммаБезНДС,
        ПриобретениеТоваровУслуг.НомерСтроки КАК НомерСтроки
        ИЗ
        Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслуг
        ЛЕВОЕ СОЕДИНЕНИЕ (
        ВЫБРАТЬ
        СебестоимостьТоваровОбороты.Регистратор КАК Регистратор,
        СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
        СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
        СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Серия КАК Серия,
        СУММА(СебестоимостьТоваровОбороты.Стоимость) КАК Сумма,
        СУММА(СебестоимостьТоваровОбороты.СтоимостьБезНДС) КАК СуммаБезНДС
        ИЗ
        РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваровОбороты
        ГДЕ
        СебестоимостьТоваровОбороты.Регистратор В (&МассивДокументов)
        И СебестоимостьТоваровОбороты.ВидДвижения = &ВидДвиженияПриход
        СГРУППИРОВАТЬ ПО
        СебестоимостьТоваровОбороты.Регистратор,
        СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Номенклатура,
        СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Характеристика,
        СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Серия
        ) КАК СебестоимостьТоваров
        ПО СебестоимостьТоваров.Регистратор = ПриобретениеТоваровУслуг.Ссылка
        И СебестоимостьТоваров.Номенклатура = ПриобретениеТоваровУслуг.Номенклатура
        И СебестоимостьТоваров.Характеристика = ПриобретениеТоваровУслуг.Характеристика
        И СебестоимостьТоваров.Серия = ПриобретениеТоваровУслуг.Серия
        ГДЕ
        ПриобретениеТоваровУслуг.Ссылка В (&МассивДокументов)
        И ПриобретениеТоваровУслуг.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))

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

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

          В основном ВЫБРАТЬ сейчас указано:

          Это означает: независимо от результата соединения в колонку СуммаБезНДС всегда будет записываться NULL.

          Кроме того, поля:

          во внешнем ВЫБРАТЬ вообще не используются.

          Замените этот участок:

          на:

          Или, если итоговую сумму из регистра нужно назвать просто Сумма, можно использовать:

          ### Исправленный запрос

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

          Особенно важно, чтобы параметр вида движения был установлен именно так:

          Массив документов:

          И перед выполнением убедитесь, что массив не пустой:

          ### Как быстро проверить, есть ли вообще движения регистра

          Сначала временно выполните отдельный проверочный запрос без соединения с табличной частью документа:

          Если этот запрос возвращает пустую таблицу, причина не в ЛЕВОМ СОЕДИНЕНИИ. Значит, по этим документам в регистр СебестоимостьТоваров движения не записаны.

          Если запрос возвращает строки, но в основном запросе суммы равны нулю, проблема в условиях соединения.

          ### Наиболее вероятная проблема: регистр не пишет приход по документу приобретения

          Документ ПриобретениеТоваровУслуг может формировать движения не напрямую в СебестоимостьТоваров, а через другой документ или регистр. Это зависит от конфигурации, вида операции и настроек учета.

          Проверьте конкретный документ:

          1. Откройте документ ПриобретениеТоваровУслуг.
          2. Выполните Дт/Кт или Движения документа.
          3. Посмотрите, есть ли регистр СебестоимостьТоваров.
          4. Проверьте, является ли именно ПриобретениеТоваровУслуг регистратором движений.
          5. Убедитесь, что документ проведен.

          Важно: наличие документа в МассивДокументов еще не означает, что он является регистратором движений именно этого регистра.

          ### Проверьте, не мешает ли отбор по виду движения

          На время уберите условие:

          Проверочный вариант:

          Если строки появились, значит движения есть, но они записаны как Расход, либо документ формирует сторнирующее движение.

          ### Возможна проблема с аналитикой

          В регистре вы соединяете данные по:

          Но в регистре ключом фактически является:

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

          Для диагностики выведите движения регистра и строки документа рядом:

          ### Важный момент с несколькими одинаковыми строками

          В регистре СебестоимостьТоваров обычно нет НомерСтроки табличной части документа. Если в одном документе две строки имеют одинаковые:

          — номенклатуру;
          — характеристику;
          — серию;

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

          Тогда лучше сначала получать себестоимость на уровне:

          а затем распределять ее по строкам пропорционально количеству или сумме.

          ### Еще одна проблема в вашем запросе

          Вы используете:

          Но затем для определения суммы без НДС используете отдельный ресурс:

          Убедитесь, что в регистре действительно есть ресурс СтоимостьБезНДС. Если его нет, запрос должен использовать фактическое имя ресурса регистра, например:

          Проверять нужно в конфигураторе:

          ### Что исправить в первую очередь

          1. Добавить поля регистра во внешний ВЫБРАТЬ:

          2. Установить ВидДвиженияНакопления.Приход.

          3. Проверить, что МассивДокументов не пустой.

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

          5. Проверить движения конкретного документа.

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

          Самая явная ошибка именно в том, что вы выбрали NULL, а поля СебестоимостьТоваров.Сумма и СебестоимостьТоваров.СуммаБезНДС не добавили в итоговую выборку. Но если после этого значения будут нулевыми, нужно проверять наличие движений и соответствие аналитики.

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