При разработке печатных форм в среде 1С:Предприятие мы нередко сталкиваемся с ошибками, которые на первый взгляд кажутся странными. Одной из таких ошибок является «Неоднозначное поле», возникающая в момент выполнения запроса. Давайте разберем, почему это происходит и как быстро вернуть работоспособность вашему коду.
Ошибка «Неоднозначное поле» появляется тогда, когда платформа не может понять, к какому именно объекту метаданных вы обращаетесь. В вашем случае основной документ называется УходТовара, и у него есть табличная часть с точно таким же именем — УходТовара.
Когда система выполняет запрос ИЗ Документ.УходТовара КАК УходТовара, она создает внутреннюю ссылку. Однако, когда вы пытаетесь обратиться к полям внутри этого документа, интерпретатор 1С путается, ссылаетесь ли вы на сам документ или на его вложенную табличную часть, так как их идентификаторы идентичны.
Самый быстрый способ исправить ситуацию без изменения структуры метаданных — это задать уникальные псевдонимы (алиасы) для таблиц в тексте вашего запроса. Это позволит системе однозначно различать «шапку» документа и его «состав».
Рассмотрим, как изменить текст запроса. Мы добавим псевдоним ДокументУходТовара для самой таблицы документа:
ВЫБРАТЬ
ДокументУходТовара.Дата,
ДокументУходТовара.Договор,
ДокументУходТовара.Контрагент,
ДокументУходТовара.Номер,
ДокументУходТовара.Склад,
ДокументУходТовара.Сотрудники,
ДокументУходТовара.УходТовара.(
НомерСтроки,
Товар,
Количество,
Цена,
Сумма
)
ИЗ
Документ.УходТовара КАК ДокументУходТовара
ГДЕ
ДокументУходТовара.Ссылка В (&Ссылка)
Используя конструкцию КАК ДокументУходТовара, мы четко указываем платформе, что работаем с документом, а уже внутри него обращаемся к табличной части УходТовара.
Хотя использование псевдонимов решает сиюминутную проблему, профессиональный подход в разработке 1С подразумевает соблюдение стандартов именования объектов. Использование одинаковых имен для документа и его табличных частей — это «архитектурный долг», который в будущем может привести к новым ошибкам.
Мы рекомендуем вам выполнить следующие шаги для приведения конфигурации в порядок:
УходТовара.УходТовара в более подходящее название, например, Товары или Состав.Например, ваш запрос станет гораздо более читаемым и понятным для других разработчиков:
ВЫБРАТЬ
УходТовара.Дата,
УходТовара.Товары.(
Товар,
Количество,
Сумма
)
ИЗ
Документ.УходТовара КАК УходТовара
При создании печатных форм мы всегда советуем придерживаться нескольких правил:
Выборка.Товары.Выбрать(), учитывая переименованную табличную часть.Используя эти методы, вы сможете не только исправить текущую ошибку, но и улучшить качество своего программного кода, сделав его более профессиональным и легким для поддержки.