База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как устранить ошибку «неоднозначное поле Номенклатура.Ссылка» в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 14 часов, 23 минуты назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
3 августа 2026 в 10:31 #38276
ВЫБРАТЬ
СебестоимостьТоваров.Стоимость КАК Стоимость,
Номенклатура.Ссылка КАК Номенклатура,
ВидыЦен.Ссылка КАК ВидЦены,
ЦеныНоменклатуры.Цена КАК Цена,
Себестоимость.СтоимостьОстаток / ВЫБОР
КОГДА Себестоимость.КоличествоОстаток = 0 ТОГДА 1
ИНАЧЕ Себестоимость.КоличествоОстаток
КОНЕЦ КАК Себестоимость,
((ЦеныНоменклатуры.Цена — (Себестоимость.СтоимостьОстаток / ВЫБОР
КОГДА Себестоимость.КоличествоОстаток = 0 ТОГДА 1
ИНАЧЕ Себестоимость.КоличествоОстаток
КОНЕЦ)) / ВЫБОР
КОГДА Себестоимость.КоличествоОстаток = 0 ТОГДА 1
ИНАЧЕ Себестоимость.КоличествоОстаток
КОНЕЦ) * 100 КАК ПроцентНадбавки
ИЗ
РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров,
РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
ПО ЦеныНоменклатуры.Номенклатура = Номенклатура.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен
ПО ЦеныНоменклатуры.ВидЦены = ВидыЦен.Ссылкане однозначное поле Номенклатура.Ссылка
-
3 августа 2026 в 10:31 #38277
Ошибка «неоднозначное поле Номенклатура.Ссылка» возникает из-за того, что в запросе несколько таблиц содержат поле с именем «Ссылка» и при обращении к «Номенклатура.Ссылка» система не может однозначно определить, к какой таблице относится это поле.
В вашем запросе:
|ВЫБРАТЬ
| СебестоимостьТоваров.Стоимость КАК Стоимость,
| Номенклатура.Ссылка КАК Номенклатура,
| ВидыЦен.Ссылка КАК ВидЦены,
| ЦеныНоменклатуры.Цена КАК Цена,
| Себестоимость.СтоимостьОстаток / ВЫБОР
| КОГДА Себестоимость.КоличествоОстаток = 0 ТОГДА 1
| ИНАЧЕ Себестоимость.КоличествоОстаток
| КОНЕЦ КАК Себестоимость,
| ((ЦеныНоменклатуры.Цена — (Себестоимость.СтоимостьОстаток / ВЫБОР
| КОГДА Себестоимость.КоличествоОстаток = 0 ТОГДА 1
| ИНАЧЕ Себестоимость.КоличествоОстаток
| КОНЕЦ)) / ВЫБОР
| КОГДА Себестоимость.КоличествоОстаток = 0 ТОГДА 1
| ИНАЧЕ Себестоимость.КоличествоОстаток
| КОНЕЦ) * 100 КАК ПроцентНадбавки
|ИЗ
| РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров,
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
| ПО ЦеныНоменклатуры.Номенклатура = Номенклатура.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен
| ПО ЦеныНоменклатуры.ВидЦены = ВидыЦен.СсылкаПроблема в том, что в части FROM у вас:
— РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров
— РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
— Левое соединение с Номенклатурой и ВидамиЦенНо при этом нет явного соединения между СебестоимостьТоваров и остальными таблицами, и в выборке вы используете поле «Номенклатура.Ссылка», которое встречается и в других таблицах.
—
Как исправить:
1. Явно укажите соединения между таблицами, чтобы не было неоднозначности.
2. Везде, где используете поле «Ссылка», указывайте таблицу, к которой оно относится.
3. В запросе лучше использовать явные JOIN, а не перечислять таблицы через запятую.
—
Пример исправленного запроса с явными соединениями и правильными алиасами:
|ВЫБРАТЬ
| СебестоимостьТоваров.Стоимость КАК Стоимость,
| Номенклатура.Ссылка КАК Номенклатура,
| ВидыЦен.Ссылка КАК ВидЦены,
| ЦеныНоменклатуры.Цена КАК Цена,
| СебестоимостьТоваров.СтоимостьОстаток / ВЫБОР
| КОГДА СебестоимостьТоваров.КоличествоОстаток = 0 ТОГДА 1
| ИНАЧЕ СебестоимостьТоваров.КоличествоОстаток
| КОНЕЦ КАК Себестоимость,
| ((ЦеныНоменклатуры.Цена — (СебестоимостьТоваров.СтоимостьОстаток / ВЫБОР
| КОГДА СебестоимостьТоваров.КоличествоОстаток = 0 ТОГДА 1
| ИНАЧЕ СебестоимостьТоваров.КоличествоОстаток
| КОНЕЦ)) / ВЫБОР
| КОГДА СебестоимостьТоваров.КоличествоОстаток = 0 ТОГДА 1
| ИНАЧЕ СебестоимостьТоваров.КоличествоОстаток
| КОНЕЦ) * 100 КАК ПроцентНадбавки
|ИЗ
| РегистрНакопления.СебестоимостьТоваров.Остатки(&Дата, ) КАК СебестоимостьТоваров
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
| ПО СебестоимостьТоваров.Номенклатура = ЦеныНоменклатуры.Номенклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
| ПО ЦеныНоменклатуры.Номенклатура = Номенклатура.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен
| ПО ЦеныНоменклатуры.ВидЦены = ВидыЦен.Ссылка
|ГДЕ
| ВидыЦен.Ссылка = &ВидЦены
| И СебестоимостьТоваров.КоличествоОстаток > 0—
Обратите внимание:
— Используйте Остатки регистра накопления, чтобы получить актуальные остатки и стоимость.
— Явно соединяйте таблицы по ключам.
— Везде указывайте алиасы и поля с алиасами.
—
Если хотите, могу помочь составить запрос под вашу задачу, укажите, что именно хотите получить и из каких регистров.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.