База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить ошибку «Поле не найдено ‘СебестоимостьТоваров.СтоимостьПриход'» в › Ответ в теме: Как исправить ошибку «Поле не найдено ‘СебестоимостьТоваров.СтоимостьПриход’» в
Ошибка закономерна: в основной таблице регистра накопления ресурсов СтоимостьПриход и СтоимостьБезНДСПриход нет.
Такие имена обычно появляются у виртуальных таблиц, например:
|
1 2 |
|Остатки.СтоимостьОстаток |Обороты.СтоимостьОборот |
В основной таблице регистра хранятся реальные поля регистра с их исходными именами. Если ресурс регистра называется Стоимость, обращаться нужно так:
|
1 |
|СебестоимостьТоваров.Стоимость |
А направление движения определяется полем ВидДвижения.
Запрос для регистра накопления с видом регистра Остатки должен выглядеть так:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|ВЫБРАТЬ | СебестоимостьТоваров.Регистратор КАК Регистратор, | СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура, | СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика, | СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Серия КАК Серия, | СУММА(СебестоимостьТоваров.Стоимость) КАК Стоимость, | СУММА(СебестоимостьТоваров.СтоимостьБезНДС) КАК СтоимостьБезНДС |ИЗ | РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров |ГДЕ | СебестоимостьТоваров.Регистратор В (&МассивДокументов) | И СебестоимостьТоваров.ВидДвижения = &ВидДвиженияПриход |СГРУППИРОВАТЬ ПО | СебестоимостьТоваров.Регистратор, | СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Номенклатура, | СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Характеристика, | СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Серия |
Параметры:
|
1 2 3 4 5 |
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов); Запрос.УстановитьПараметр( "ВидДвиженияПриход", ВидДвиженияНакопления.Приход ); |
Если нужно получить расходные движения, используйте:
|
1 2 3 4 |
Запрос.УстановитьПараметр( "ВидДвиженияРасход", ВидДвиженияНакопления.Расход ); |
и условие:
|
1 |
| И СебестоимостьТоваров.ВидДвижения = &ВидДвиженияРасход |
Либо можно вообще не отбирать вид движения, если нужны и приход, и расход. Тогда запрос будет таким:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|ВЫБРАТЬ | СебестоимостьТоваров.Регистратор КАК Регистратор, | СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура, | СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика, | СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Серия КАК Серия, | СУММА(СебестоимостьТоваров.Стоимость) КАК Стоимость, | СУММА(СебестоимостьТоваров.СтоимостьБезНДС) КАК СтоимостьБезНДС |ИЗ | РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров |ГДЕ | СебестоимостьТоваров.Регистратор В (&МассивДокументов) |СГРУППИРОВАТЬ ПО | СебестоимостьТоваров.Регистратор, | СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Номенклатура, | СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Характеристика, | СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Серия |
### Если нужны отдельные суммы прихода и расхода
Тогда можно использовать условную агрегацию:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
|ВЫБРАТЬ | СебестоимостьТоваров.Регистратор КАК Регистратор, | СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура, | СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика, | СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Серия КАК Серия, | СУММА( | ВЫБОР | КОГДА СебестоимостьТоваров.ВидДвижения = &ВидДвиженияПриход | ТОГДА СебестоимостьТоваров.Стоимость | ИНАЧЕ 0 | КОНЕЦ | ) КАК СтоимостьПриход, | СУММА( | ВЫБОР | КОГДА СебестоимостьТоваров.ВидДвижения = &ВидДвиженияРасход | ТОГДА СебестоимостьТоваров.Стоимость | ИНАЧЕ 0 | КОНЕЦ | ) КАК СтоимостьРасход, | СУММА( | ВЫБОР | КОГДА СебестоимостьТоваров.ВидДвижения = &ВидДвиженияПриход | ТОГДА СебестоимостьТоваров.СтоимостьБезНДС | ИНАЧЕ 0 | КОНЕЦ | ) КАК СтоимостьБезНДСПриход, | СУММА( | ВЫБОР | КОГДА СебестоимостьТоваров.ВидДвижения = &ВидДвиженияРасход | ТОГДА СебестоимостьТоваров.СтоимостьБезНДС | ИНАЧЕ 0 | КОНЕЦ | ) КАК СтоимостьБезНДСРасход |ИЗ | РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров |ГДЕ | СебестоимостьТоваров.Регистратор В (&МассивДокументов) |СГРУППИРОВАТЬ ПО | СебестоимостьТоваров.Регистратор, | СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Номенклатура, | СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Характеристика, | СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Серия |
Параметры:
|
1 2 3 4 5 6 7 8 9 |
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов); Запрос.УстановитьПараметр( "ВидДвиженияПриход", ВидДвиженияНакопления.Приход ); Запрос.УстановитьПараметр( "ВидДвиженияРасход", ВидДвиженияНакопления.Расход ); |
Но если вам нужны только приходные движения, лучше не использовать условную агрегацию, а отфильтровать их в ГДЕ. Это проще и обычно эффективнее:
|
1 2 3 |
|ГДЕ | СебестоимостьТоваров.Регистратор В (&МассивДокументов) | И СебестоимостьТоваров.ВидДвижения = &ВидДвиженияПриход |
### На что обратить внимание
Проверьте точные имена ресурсов регистра СебестоимостьТоваров в конфигураторе. Например, они могут называться не Стоимость и СтоимостьБезНДС, а:
|
1 2 3 4 5 6 |
Сумма СуммаБезНДС Стоимость СтоимостьБезНДС Себестоимость СебестоимостьБезНДС |
В запросе необходимо использовать именно имена ресурсов регистра, а не имена полей виртуальной таблицы.
Для основной таблицы регистра:
|
1 |
|РегистрНакопления.СебестоимостьТоваров |
используются реальные имена:
|
1 2 |
|Стоимость |СтоимостьБезНДС |
Для виртуальных таблиц имена формируются иначе:
|
1 2 |
|СтоимостьОстаток |СтоимостьОборот |
Ошибка указывает именно на это:
|
1 |
Поле не найдено "СебестоимостьТоваров.СтоимостьПриход" |
Следовательно, в регистре нет ресурса с именем СтоимостьПриход. Скорее всего, правильное имя ресурса:
|
1 |
|СебестоимостьТоваров.Стоимость |
Если ошибка возникает внутри ВыполнитьПакет(), это не меняет сути проблемы. Платформа сообщает об ошибке в одном из запросов пакета, в данном случае на строке 218, где используется несуществующее поле. Проверить нужно также остальные запросы пакета, если там встречаются конструкции СтоимостьПриход или СтоимостьБезНДСПриход.