База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как устранить ошибку «неоднозначное поле Товары» в запросе 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 4 минуты назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
10 августа 2026 в 6:24 #38359
неоднозначное поле товары ошибка ВЫБРАТЬ
DISTINCT Реализация.Ссылка КАК Ссылка
ПОМЕСТИТЬ ВТ_Доки
ИЗ
Документ.РеализацияТоваровУслуг КАК Реализация
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК Товары
ПО Товары.Ссылка = Реализация.Ссылка
ГДЕ
Реализация.Проведен
И Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)
;ВЫБРАТЬ
ВТ_Доки.Ссылка КАК Ссылка
ИЗ
ВТ_Доки КАК ВТ_Доки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
ПО ВТ_Доки.Ссылка = ТоварыНаСкладах.Регистратор
ГДЕ
ТоварыНаСкладах.Регистратор ЕСТЬ NULL -
10 августа 2026 в 6:24 #38360
Ошибка «неоднозначное поле Товары» возникает из-за того, что в запросе есть поле или таблица с именем «Товары», и 1С не может однозначно определить, к какой таблице относится поле «Номенклатура.ТипНоменклатуры».
В вашем запросе:
|ВЫБРАТЬ
| DISTINCT Реализация.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ВТ_Доки
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Реализация
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК Товары
| ПО Товары.Ссылка = Реализация.Ссылка
|ГДЕ
| Реализация.Проведен
| И Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| И Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)Здесь поле «Номенклатура» — это ссылка на справочник, у которого есть реквизит «ТипНоменклатуры». Но 1С требует явно указать, что «Номенклатура» — это поле таблицы «Товары», а «ТипНоменклатуры» — реквизит справочника.
Чтобы исправить неоднозначность, нужно явно указать путь к полю, например:
| Товары.Номенклатура.ТипНоменклатуры
Если ошибка сохраняется, попробуйте использовать псевдоним для поля «Номенклатура» и явно указать путь.
Пример исправленного запроса:
|ВЫБРАТЬ
| DISTINCT Реализация.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ВТ_Доки
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Реализация
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК Товары
| ПО Товары.Ссылка = Реализация.Ссылка
|ГДЕ
| Реализация.Проведен
| И Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| И Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)Если ошибка «неоднозначное поле» связана с тем, что в запросе есть несколько таблиц с полем «Товары», то можно переименовать таблицу в JOIN:
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТовары
| ПО РеализацияТовары.Ссылка = Реализация.СсылкаИ тогда в условии:
| И РеализацияТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)
—
Итоговый пример:
|ВЫБРАТЬ
| DISTINCT Реализация.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ВТ_Доки
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Реализация
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТовары
| ПО РеализацияТовары.Ссылка = Реализация.Ссылка
|ГДЕ
| Реализация.Проведен
| И Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| И РеализацияТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)
|;
|
|ВЫБРАТЬ
| ВТ_Доки.Ссылка КАК Ссылка
|ИЗ
| ВТ_Доки КАК ВТ_Доки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
| ПО ВТ_Доки.Ссылка = ТоварыНаСкладах.Регистратор
|ГДЕ
| ТоварыНаСкладах.Регистратор ЕСТЬ NULL—
Так запрос будет корректно работать без неоднозначности по полю «Товары».
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.