1с запрос неоднозначное поле номенклатура ссылка
Неоднозначное поле
Неоднозначное поле
Причина ошибки в совпадении названия (псевдонима) таблицы и имени поля таблицы или реквизита, либо реквизитов соединяемых таблиц. Причем совпадение псевдонимов полей в разных источниках допускается.
Данная ошибка может возникнуть:
Текст запроса, который может вызвать ошибку
ВЫБРАТЬ
Ссылка.Ссылка КАК Ключи
ИЗ
Справочник.Ключи КАК Ссылка
Ошибка при соединении
Чаще всего ошибка возникает не в простых запросах (как выше), а при соединении похожих или одинаковых таблиц.
Например, справочников по полям ссылка, наименование, код (присутствующих у всех)
ВЫБРАТЬ
ключи.Ссылка КАК ключи
ИЗ
Справочник.Ключи КАК ключи
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Ключи КАК Ключи2
ПО Наименование = Наименование
Исправление ошибки
Пример кода с временными таблицами — «Наименование» не вызывает ошибку в отличии от ссылка (Поле не используется при соединении, но есть в полях выборки):
ВЫБРАТЬ
«ключ» КАК Ссылка
ПОМЕСТИТЬ Ключи
;
Безошибочный код
ВЫБРАТЬ
ключи.Ссылка КАК ключи
ИЗ
Справочник.Ключи КАК ключи
Скриншот «искусственной» ошибки в 1С
Половина денег, которые идут на рекламу, выбрасываются впустую; но как узнать, какая именно половина?
Неоднозначное поле «Номенклатура»
Запрос = Новый Запрос;
Запрос.УстановитьПараметр(«ТекущийДокумент», СсылкаНаОбъект);
Запрос.УстановитьПараметр(«Контрагент», СсылкаНаОбъект.Контрагент);
Запрос.Текст =
«ВЫБРАТЬ
| НомерТЧ,
| НомерСтрокиТЧ,
| Номенклатура,
| ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК Товар,
| Номенклатура.Код КАК Код,
| Номенклатура.Артикул КАК Артикул,
| Количество,
| КоличествоМест,
| ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
| ЕдиницаИзмеренияМест.Представление КАК ЕдиницаИзмеренияМест,
| Цена,
| Сумма,
| СуммаНДС,
| ПроцентСкидкиНаценки КАК Скидка,
| ПроцентАвтоматическихСкидок КАК АвтоматическаяСкидка,
| ХарактеристикаНоменклатуры КАК Характеристика,
| СерияНоменклатуры КАК Серия,
| НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента КАК НоменклатураКонтрагента
|ИЗ
| (ВЫБРАТЬ
| 1 КАК НомерТЧ,
| МИНИМУМ(НомерСтроки) КАК НомерСтрокиТЧ,
| Номенклатура КАК Номенклатура,
| ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ЕдиницаИзмеренияМест КАК ЕдиницаИзмеренияМест,
| Цена КАК Цена,
| СтавкаНДС КАК СтавкаНДС,
| ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
| ПроцентАвтоматическихСкидок КАК ПроцентАвтоматическихСкидок,
| СерияНоменклатуры КАК СерияНоменклатуры,
| ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| СУММА(Количество) КАК Количество,
| СУММА(КоличествоМест)КАК КоличествоМест,
| СУММА(Сумма) КАК Сумма,
| СУММА(СуммаНДС) КАК СуммаНДС,
| НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента
| ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
| ПО (РеализацияТоваровУслуг.Номенклатура = НоменклатураКонтрагентов.Номенклатура)
| ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
| И НоменклатураКонтрагентов.Контрагент = &Контрагент
| СГРУППИРОВАТЬ ПО
| Номенклатура,
| ЕдиницаИзмерения,
| ЕдиницаИзмеренияМест,
| Цена,
| СтавкаНДС,
| ПроцентСкидкиНаценки,
| ПроцентАвтоматическихСкидок,
| СерияНоменклатуры,
| ХарактеристикаНоменклатуры
| ) КАК ВложенныйЗапросПоТоварам
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 2,
| НомерСтроки,
| » + СтрокаВыборкиПоляСодержания + «,
| » + СтрокаВыборкиПоляСодержания + «,
| Номенклатура.Код КАК Код,
| Номенклатура.Артикул КАК Артикул,
| Количество,
| NULL,
| Номенклатура.ЕдиницаХраненияОстатков.Представление КАК ЕдиницаИзмерения,
| NULL,
| Цена,
| Сумма,
| СуммаНДС,
| ПроцентСкидкиНаценки,
| 0,
| NULL,
| NULL,
| НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента КАК НоменклатураКонтрагента
|ИЗ
| Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслуг
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
| ПО (РеализацияТоваровУслуг.Номенклатура = НоменклатураКонтрагентов.Номенклатура)
|
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
| И НоменклатураКонтрагентов.Контрагент = &Контрагент
|
|УПОРЯДОЧИТЬ ПО
| НомерТЧ, НомерСтрокиТЧ
|»;
запрос выдает ошибку: Неоднозначное поле «Номенклатура»
Ошибка при вызове метода контекста (Выполнить): <(37, 3)>: Поле не входит в группу «НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента»
>НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента
(8) всегда пишут полностью. Ну напиши по-человечески,
НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента
хрена ты всё сокращаешь?
Неоднозначное поле в запросе 1С 8.3
Ошибка Неоднозначное поле в запросе 1С 8.3 связана с наличием одинаковых имен в запросе 1С. В этом случае возникает неопределенность обработки запроса при обращении к данным и появляется соответствующее сообщение:
Ошибка, как правило, возникает у начинающих программистов. А исправляется она простым переименованием одинаковых имен в запросе.
Неоднозначное поле в запросе 1С 8.3
Ошибка 1С Неоднозначное поле может возникать как в Конфигураторе при написании запроса, так и в пользовательском режиме при выполнении некорректного программного кода.
Получите понятные самоучители 2021 по 1С бесплатно:
Рассмотрим причины возникновения ошибки и порядок ее исправления на примере.
Одинаковые имена объектов в таблице запроса
При чтении цен номенклатуры по регистру сведений Цены номенклатуры из внешнего отчета, появляется ошибка Неоднозначное поле «ТипЦен.Номенклатура».
Для поиска и устранения ошибки выполните следующие действия:
В результате возникает двойственность чтения данных, и программа не может однозначно определить, что в этом случае нужно использовать. Команда ТипЦен.Номенклатура может относиться как к самой таблице, так и к реквизиту таблицы.
Исправление ошибки Неодназначное поле
Сохранение процедур с корректным кодом WORK и некорректным кодом ERROR выполняется отдельно для удобства демонстрации работы запросов в 1С.
Пример ошибки
Протестируем работу внешнего отчета с корректным и некорректным запросом на примере:
См. также:
Если Вы еще не подписаны:
После оформления подписки вам станут доступны все материалы Бухэксперт8, записи поддерживающих эфиров и вы сможете задавать любые вопросы по программе 1С.
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Похожие публикации
Карточка публикации
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Вы можете задать еще вопросов
Доступ к форме «Задать вопрос» возможен только при оформлении полной подписки на БухЭксперт8
Нажимая кнопку «Задать вопрос», я соглашаюсь с
регламентом БухЭксперт8.ру >>
Благодарю Климову М.А. за великолепный вебинар, как всегда много полезной информации, изложенной в доступной форме. Особенно интересный для меня материал по изменениям в ПБУ 18, я сама изучаю сейчас эту тему, было полезно услышать мнение эксперта по этому вопросу. Было бы великолепно, если бы еще показали как это реализовано в программе, я имею ввиду балансовый метод. Мы с 2019 года начали работать в Бухгалтерии 8.3, пока еще только учимся, поэтому очень нужна ваша поддержка. Спасибо всей вашей команде за то благородное дело, которое вы делаете для бухгалтеров, «замученных» бесконечными изменения в законодательстве. Ждем запись этого эфира для ознакомления всех заинтересованных сотрудников. Желаю вам финансового благополучия и непрерывного потока клиентов.
1С Неоднозначное поле
1. Причина ошибки Неоднозначное поле
«Неоднозначное поле» – это ошибка программы 1С, возникающая в результате формирования некорректного текста запроса. А именно, когда имя таблицы и поле – идентичны. Неопределенность возникает из-за одинаковых имен полей и имен таблиц в запросе.
Ниже приведен скрин-пример с простым текстом без ошибки в запросе «Неоднозначное поле» и умышленное ее допущение:
Причина возникновения ошибки неоднозначного поля в 1С
Правило о недопущении неоднозначности поля является аксиомой. В результате такого искаженного текста запроса возникает неоднозначность и попытка двойственного чтения данных.
Также ошибка «Неоднозначное поле» в 1С может появиться в менее примитивном примере, в результате связи двух таблиц, где имя одной таблицы совпадет с именем поля другой таблицы:
Ошибка в результате связи двух таблиц
Об этом пользователя оповестит окно конструктора запроса (ошибка Неоднозначное поле) и высветит предупреждение с вопросом игнорировать его или нет.
Окно конструктора запросов с оповещением об ошибке
В случае подтверждения будьте готовы к тому, что конструктор запроса Вы не сможете открыть повторно, пока не устраните ошибку неоднозначности поля непосредственно в самом тексте без использования конструктора запросов:
Тут “зарыта собака” ошибки Неоднозначное поле в тексте запроса
При попытке открытия конструктора запроса система выдаст оповещение об ошибке неоднозначности поля с указаниям места текста «конфликта».
Система сама указывает на место ошибки Неоднозначное поле
2. Как устранить ошибку в запросе Неоднозначное поле
Для устранения ошибки в запросе в 1С «Неоднозначное поле» достаточно переименовать таблицу, назначив имя, отличное от имени поля:
Устранение ошибки Неоднозначное поле
Проговорим еще раз:
1. Имя справочника не должно совпадать с именем ресурса регистра сведений.
Псевдоним Справочник.Номенклатура КАК Номенклатура
совпадает с именем поля ЦеныНоменклатуры.Номенклатура
Справочник.Номенклатура КАК спрНоменклатура
2. Используем переименование таблиц в случае возможного совпадения с полями ссылочного характера.
3. При создании временных таблиц не допускайте повторения имен таблиц в запросе и их совпадения, т.к. это вызовет большую вероятность возникновения ошибки в случае связи или объединения этих таблиц.
Объединение таблиц с ошибкой Неоднозначное поле
Частая ошибка начинающих программистов – обращение к данным и запрос к табличным частям документа с их незамысловатым переименованием, например, как ЗаказПокупателя.
Типичная ошибка начинающих программистов, приводящая к ошибке Неоднозначное поле
На выходе получаем все ту же ошибку неоднозначного поля «ЗаказПокупателя.Ссылка». Где в запросе ошибка? Правильно – в совпадение имен таблиц.
Достаточно переименовать ТоварыЗаказКлиента и УслугиЗаказКлиента (или ЗаказКлиента и ЗаказКлиента1) – ошибка запроса неоднозначное поле исчезнет.
Ошибка в запросе «Неоднозначное поле» при связи двух таблиц
спустя 968 дней, для тех, кто сегодня и завтра столкнется с проблемой.
Пример текста запроса:
Запрос составлялся в Комплексной автоматизации 1.1
Соответственно, проблема была в следующем:
1. СКД (или вы) создавали: Справочник.Номенклатура КАК Номенклатура
2. Соответственно было не правильное обращение по синониму «Номенклатура» в ЦеныНоменклатурыСрезПоследних. Номенклатура
«Неоднозначное поле «Номенклатура.наименование»
ПО ЦеныНоменклатуры.Номенклатура = >Номенклатура.наименование»
А оказывается все очень просто.
Спасибо ответам в этой ветке
Подскажите пожалуйста где ошибка
Ошибка при вызове метода контекста (Выполнить)
по причине:
<(37, 109)>: Неоднозначное поле «Субконто1»
РегистрБухгалтерии.ПланСчетовОсновной2014.Остатки ( &ПозицияДокумента, Счет В (&СписокСчетовОрганизация), >Субконто1 В (&СписокТМЦОрганизация) ) КАК ПланСчетовОсновнойОстаткиОрганизация
в тоне текста уже мозги плавятся, элементарные вещи не замечаю, очень нужен был взгляд со стороны.
И огромное спасибо за помощь в воскресение ночью
Смотрю, не только я вкалываю по выходным ))
Пометил жирными где были изменения.
Ругается на то, когда название реквизита регистра сведений совпадает с названием объекта справочника(именно в наименовании таблицы в запросе).
Ошибка будет:
«Неоднозначное поле «Номенклатура»
втТипЦен КАК >Номенклатура»
т.к. поле с названием «Номенклатура» уже есть в исходной ВрТ ‘втТипЦен’, хоть и не используется явно в результирующем запросе.