База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Почему данные не подтягиваются из регистра СебестоимостьТоваров в моем запросе?
- В этой теме 1 ответ, 2 участника, последнее обновление 12 минут назад сделано
Odin — Одинэсник.
-
АвторЗаписи
-
-
29 сентября 2026 в 15:44 #38752
Кажется, у меня не подтягиваются данные из регистра СебестоимостьТоваров.. почему? Как исправить?
ВЫБРАТЬ
ПриобретениеТоваровУслуг.Ссылка КАК Ссылка,
ПриобретениеТоваровУслуг.Номенклатура КАК Номенклатура,ВЫБОР КОГДА ПриобретениеТоваровУслуг.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) ТОГДА
1
ИНАЧЕ
&ТекстЗапросаКоэффициентУпаковки2
КОНЕЦ КАК Коэффициент,ВЫБОР КОГДА ПриобретениеТоваровУслуг.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) ТОГДА
ПриобретениеТоваровУслуг.Номенклатура.ЕдиницаИзмерения
ИНАЧЕ
ПриобретениеТоваровУслуг.Упаковка
КОНЕЦ КАК ЕдиницаИзмерения,ПриобретениеТоваровУслуг.ПроцентРучнойСкидки КАК ПроцентСкидки,
ПриобретениеТоваровУслуг.Характеристика КАК Характеристика,
ПриобретениеТоваровУслуг.Серия КАК Серия,
ПриобретениеТоваровУслуг.Упаковка КАК Упаковка,
ПриобретениеТоваровУслуг.СтавкаНДС КАК СтавкаНДС,
ПриобретениеТоваровУслуг.Цена КАК Цена,
ПриобретениеТоваровУслуг.КоличествоУпаковок КАК Количество,
ПриобретениеТоваровУслуг.Сумма КАК Сумма,
ПриобретениеТоваровУслуг.СуммаРучнойСкидки КАК СуммаСкидки,
ПриобретениеТоваровУслуг.Сумма +
ПриобретениеТоваровУслуг.СуммаРучнойСкидки КАК СуммаБезСкидки,
ПриобретениеТоваровУслуг.СуммаНДС КАК СуммаНДС,
null КАК СуммаБезНДС,
ПриобретениеТоваровУслуг.НомерСтроки КАК НомерСтроки
ИЗ
Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслуг
ЛЕВОЕ СОЕДИНЕНИЕ (
ВЫБРАТЬ
СебестоимостьТоваровОбороты.Регистратор КАК Регистратор,
СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Серия КАК Серия,
СУММА(СебестоимостьТоваровОбороты.Стоимость) КАК Сумма,
СУММА(СебестоимостьТоваровОбороты.СтоимостьБезНДС) КАК СуммаБезНДС
ИЗ
РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваровОбороты
ГДЕ
СебестоимостьТоваровОбороты.Регистратор В (&МассивДокументов)
И СебестоимостьТоваровОбороты.ВидДвижения = &ВидДвиженияПриход
СГРУППИРОВАТЬ ПО
СебестоимостьТоваровОбороты.Регистратор,
СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Номенклатура,
СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Характеристика,
СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Серия
) КАК СебестоимостьТоваров
ПО СебестоимостьТоваров.Регистратор = ПриобретениеТоваровУслуг.Ссылка
И СебестоимостьТоваров.Номенклатура = ПриобретениеТоваровУслуг.Номенклатура
И СебестоимостьТоваров.Характеристика = ПриобретениеТоваровУслуг.Характеристика
И СебестоимостьТоваров.Серия = ПриобретениеТоваровУслуг.Серия
ГДЕ
ПриобретениеТоваровУслуг.Ссылка В (&МассивДокументов)
И ПриобретениеТоваровУслуг.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)) -
29 сентября 2026 в 15:44 #38753
У вас соединение с регистром выполняется, но данные из него фактически не выводятся в результат.
В основном
ВЫБРАТЬсейчас указано:1С (Код)1| null КАК СуммаБезНДС,Это означает: независимо от результата соединения в колонку
СуммаБезНДСвсегда будет записыватьсяNULL.Кроме того, поля:
1С (Код)12|СебестоимостьТоваров.Сумма|СебестоимостьТоваров.СуммаБезНДСво внешнем
ВЫБРАТЬвообще не используются.Замените этот участок:
1С (Код)123| ПриобретениеТоваровУслуг.СуммаНДС КАК СуммаНДС,| null КАК СуммаБезНДС,| ПриобретениеТоваровУслуг.НомерСтроки КАК НомерСтрокина:
1С (Код)1234| ПриобретениеТоваровУслуг.СуммаНДС КАК СуммаНДС,| ЕСТЬNULL(СебестоимостьТоваров.Сумма, 0) КАК СуммаСебестоимости,| ЕСТЬNULL(СебестоимостьТоваров.СуммаБезНДС, 0) КАК СуммаБезНДС,| ПриобретениеТоваровУслуг.НомерСтроки КАК НомерСтрокиИли, если итоговую сумму из регистра нужно назвать просто
Сумма, можно использовать:1С (Код)12| ЕСТЬNULL(СебестоимостьТоваров.Сумма, 0) КАК Сумма,| ЕСТЬNULL(СебестоимостьТоваров.СуммаБезНДС, 0) КАК СуммаБезНДС,### Исправленный запрос
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475|ВЫБРАТЬ| ПриобретениеТоваровУслуг.Ссылка КАК Ссылка,| ПриобретениеТоваровУслуг.Номенклатура КАК Номенклатура,|| ВЫБОР| КОГДА ПриобретениеТоваровУслуг.Упаковка =| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)| ТОГДА 1| ИНАЧЕ &ТекстЗапросаКоэффициентУпаковки2| КОНЕЦ КАК Коэффициент,|| ВЫБОР| КОГДА ПриобретениеТоваровУслуг.Упаковка =| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)| ТОГДА ПриобретениеТоваровУслуг.Номенклатура.ЕдиницаИзмерения| ИНАЧЕ ПриобретениеТоваровУслуг.Упаковка| КОНЕЦ КАК ЕдиницаИзмерения,|| ПриобретениеТоваровУслуг.ПроцентРучнойСкидки КАК ПроцентСкидки,| ПриобретениеТоваровУслуг.Характеристика КАК Характеристика,| ПриобретениеТоваровУслуг.Серия КАК Серия,| ПриобретениеТоваровУслуг.Упаковка КАК Упаковка,| ПриобретениеТоваровУслуг.СтавкаНДС КАК СтавкаНДС,| ПриобретениеТоваровУслуг.Цена КАК Цена,| ПриобретениеТоваровУслуг.КоличествоУпаковок КАК Количество,| ПриобретениеТоваровУслуг.Сумма КАК Сумма,| ПриобретениеТоваровУслуг.СуммаРучнойСкидки КАК СуммаСкидки,| ПриобретениеТоваровУслуг.Сумма| + ПриобретениеТоваровУслуг.СуммаРучнойСкидки КАК СуммаБезСкидки,| ПриобретениеТоваровУслуг.СуммаНДС КАК СуммаНДС,|| ЕСТЬNULL(СебестоимостьТоваров.Сумма, 0) КАК СуммаСебестоимости,| ЕСТЬNULL(СебестоимостьТоваров.СуммаБезНДС, 0) КАК СуммаБезНДС,|| ПриобретениеТоваровУслуг.НомерСтроки КАК НомерСтроки||ИЗ| Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслуг|| ЛЕВОЕ СОЕДИНЕНИЕ| (| ВЫБРАТЬ| СебестоимостьТоваров.Регистратор КАК Регистратор,| СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,| СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,| СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Серия КАК Серия,| СУММА(СебестоимостьТоваров.Стоимость) КАК Сумма,| СУММА(СебестоимостьТоваров.СтоимостьБезНДС) КАК СуммаБезНДС| ИЗ| РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров| ГДЕ| СебестоимостьТоваров.Регистратор В (&МассивДокументов)| И СебестоимостьТоваров.ВидДвижения = &ВидДвиженияПриход| СГРУППИРОВАТЬ ПО| СебестоимостьТоваров.Регистратор,| СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Номенклатура,| СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Характеристика,| СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Серия| ) КАК СебестоимостьТоваров| ПО СебестоимостьТоваров.Регистратор =| ПриобретениеТоваровУслуг.Ссылка| И СебестоимостьТоваров.Номенклатура =| ПриобретениеТоваровУслуг.Номенклатура| И СебестоимостьТоваров.Характеристика =| ПриобретениеТоваровУслуг.Характеристика| И СебестоимостьТоваров.Серия =| ПриобретениеТоваровУслуг.Серия||ГДЕ| ПриобретениеТоваровУслуг.Ссылка В (&МассивДокументов)| И ПриобретениеТоваровУслуг.Номенклатура.ТипНоменклатуры В| (| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)| )### Проверьте параметры запроса
Особенно важно, чтобы параметр вида движения был установлен именно так:
1С (Код)1234Запрос.УстановитьПараметр("ВидДвиженияПриход",ВидДвиженияНакопления.Приход);Массив документов:
1С (Код)1234Запрос.УстановитьПараметр("МассивДокументов",МассивДокументов);И перед выполнением убедитесь, что массив не пустой:
1С (Код)123Если МассивДокументов.Количество() = 0 ТогдаВозврат;КонецЕсли;### Как быстро проверить, есть ли вообще движения регистра
Сначала временно выполните отдельный проверочный запрос без соединения с табличной частью документа:
1С (Код)12345678910111213|ВЫБРАТЬ| СебестоимостьТоваров.Регистратор КАК Регистратор,| СебестоимостьТоваров.ВидДвижения КАК ВидДвижения,| СебестоимостьТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,| СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,| СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,| СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Серия КАК Серия,| СебестоимостьТоваров.Стоимость КАК Стоимость,| СебестоимостьТоваров.СтоимостьБезНДС КАК СтоимостьБезНДС|ИЗ| РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров|ГДЕ| СебестоимостьТоваров.Регистратор В (&МассивДокументов)Если этот запрос возвращает пустую таблицу, причина не в
ЛЕВОМ СОЕДИНЕНИИ. Значит, по этим документам в регистрСебестоимостьТоваровдвижения не записаны.Если запрос возвращает строки, но в основном запросе суммы равны нулю, проблема в условиях соединения.
### Наиболее вероятная проблема: регистр не пишет приход по документу приобретения
Документ
ПриобретениеТоваровУслугможет формировать движения не напрямую вСебестоимостьТоваров, а через другой документ или регистр. Это зависит от конфигурации, вида операции и настроек учета.Проверьте конкретный документ:
1. Откройте документ
ПриобретениеТоваровУслуг.
2. ВыполнитеДт/КтилиДвижения документа.
3. Посмотрите, есть ли регистрСебестоимостьТоваров.
4. Проверьте, является ли именноПриобретениеТоваровУслугрегистратором движений.
5. Убедитесь, что документ проведен.Важно: наличие документа в
МассивДокументовеще не означает, что он является регистратором движений именно этого регистра.### Проверьте, не мешает ли отбор по виду движения
На время уберите условие:
1С (Код)1| И СебестоимостьТоваров.ВидДвижения = &ВидДвиженияПриходПроверочный вариант:
1С (Код)1234567891011|ВЫБРАТЬ| СебестоимостьТоваров.Регистратор КАК Регистратор,| СебестоимостьТоваров.ВидДвижения КАК ВидДвижения,| СУММА(СебестоимостьТоваров.Стоимость) КАК Стоимость|ИЗ| РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров|ГДЕ| СебестоимостьТоваров.Регистратор В (&МассивДокументов)|СГРУППИРОВАТЬ ПО| СебестоимостьТоваров.Регистратор,| СебестоимостьТоваров.ВидДвиженияЕсли строки появились, значит движения есть, но они записаны как
Расход, либо документ формирует сторнирующее движение.### Возможна проблема с аналитикой
В регистре вы соединяете данные по:
1С (Код)123| Номенклатура| Характеристика| СерияНо в регистре ключом фактически является:
1С (Код)1|АналитикаУчетаНоменклатурыВ документе может быть одна номенклатура, характеристика или серия, а в регистре используется другая аналитика учета. Поэтому визуально реквизиты могут совпадать, но ссылка
АналитикаУчетаНоменклатурыбудет другой.Для диагностики выведите движения регистра и строки документа рядом:
1С (Код)123456789101112131415161718192021222324|ВЫБРАТЬ| ПриобретениеТоваровУслуг.Ссылка КАК Ссылка,| ПриобретениеТоваровУслуг.НомерСтроки КАК НомерСтроки,| ПриобретениеТоваровУслуг.Номенклатура КАК НоменклатураДокумента,| ПриобретениеТоваровУслуг.Характеристика КАК ХарактеристикаДокумента,| ПриобретениеТоваровУслуг.Серия КАК СерияДокумента,| СебестоимостьТоваров.Регистратор КАК РегистраторРегистра,| СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Номенклатура КАК НоменклатураРегистра,| СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Характеристика КАК ХарактеристикаРегистра,| СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Серия КАК СерияРегистра,| СебестоимостьТоваров.Стоимость КАК Стоимость|ИЗ| Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслуг| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров| ПО СебестоимостьТоваров.Регистратор =| ПриобретениеТоваровУслуг.Ссылка| И СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Номенклатура =| ПриобретениеТоваровУслуг.Номенклатура| И СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Характеристика =| ПриобретениеТоваровУслуг.Характеристика| И СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Серия =| ПриобретениеТоваровУслуг.Серия|ГДЕ| ПриобретениеТоваровУслуг.Ссылка В (&МассивДокументов)### Важный момент с несколькими одинаковыми строками
В регистре
СебестоимостьТоваровобычно нетНомерСтрокитабличной части документа. Если в одном документе две строки имеют одинаковые:— номенклатуру;
— характеристику;
— серию;то регистр может объединить движения по ним. В таком случае точно распределить сумму себестоимости по строкам документа одним соединением невозможно.
Тогда лучше сначала получать себестоимость на уровне:
1С (Код)1Документ + Номенклатура + Характеристика + Серияа затем распределять ее по строкам пропорционально количеству или сумме.
### Еще одна проблема в вашем запросе
Вы используете:
1С (Код)1|СУММА(СебестоимостьТоваров.Стоимость) КАК СуммаНо затем для определения суммы без НДС используете отдельный ресурс:
1С (Код)1|СУММА(СебестоимостьТоваров.СтоимостьБезНДС) КАК СуммаБезНДСУбедитесь, что в регистре действительно есть ресурс
СтоимостьБезНДС. Если его нет, запрос должен использовать фактическое имя ресурса регистра, например:1С (Код)1|СУММА(СебестоимостьТоваров.СуммаБезНДС) КАК СуммаБезНДСПроверять нужно в конфигураторе:
1С (Код)123Регистры накопленияСебестоимостьТоваровРесурсы### Что исправить в первую очередь
1. Добавить поля регистра во внешний
ВЫБРАТЬ:1С (Код)12|ЕСТЬNULL(СебестоимостьТоваров.Сумма, 0) КАК СуммаСебестоимости,|ЕСТЬNULL(СебестоимостьТоваров.СуммаБезНДС, 0) КАК СуммаБезНДС,2. Установить
ВидДвиженияНакопления.Приход.3. Проверить, что
МассивДокументовне пустой.4. Выполнить отдельный запрос непосредственно к основной таблице регистра.
5. Проверить движения конкретного документа.
6. Если движения есть, но соединение не срабатывает, сравнить значения номенклатуры, характеристики и серии в документе и регистре.
Самая явная ошибка именно в том, что вы выбрали
NULL, а поляСебестоимостьТоваров.СуммаиСебестоимостьТоваров.СуммаБезНДСне добавили в итоговую выборку. Но если после этого значения будут нулевыми, нужно проверять наличие движений и соответствие аналитики.
-
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.