База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить ошибку соединения в запросе 1С для СчетНаОплату?
- В этой теме 1 ответ, 2 участника, последнее обновление 16 часов, 17 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
16 апреля 2026 в 4:47 #36532
«ВЫБРАТЬ
| СчетНаОплатуПокупателюСчетТовары.Ссылка.Контрагент КАК Контрагент,
| СчетНаОплатуПокупателюСчетТовары.Ссылка.ДоговорКонтрагента КАК ДоговорКонтрагента,
| СчетНаОплатуПокупателюСчетТовары.Ссылка КАК СчетПокупателю,
| СчетНаОплатуПокупателюСчетТовары.НомерСтроки КАК НомерСтроки,
| СчетНаОплатуПокупателюСчетТовары.Номенклатура КАК НоменклатураСчет,
| СчетНаОплатуПокупателюСчетТовары.ДатаПоставки КАК ДатаПоставки,
| СчетНаОплатуПокупателюСчетТовары.Количество КАК КоличествоСчет,
| РеализацияТоваровУслугТовары.Ссылка КАК Реализация,
| СУММА(РеализацияТоваровУслугТовары.Количество) КАК КоличествоРТУ,
| 0 КАК ОстатокРТУ,
| 1 КАК КолСчет,
| 0 КАК ОстатокДельта,
| ЛОЖЬ КАК УдалитьСтр,
| ЛОЖЬ КАК ПропуститьСтр
|ИЗ
| Документ.СчетНаОплатуПокупателю.Товары КАК СчетНаОплатуПокупателюСчетТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
| ПО СчетНаОплатуПокупателюСчетТовары.Ссылка = РеализацияТоваровУслугТовары.Ссылка.СчетНаОплатуПокупателю.Ссылка
| И СчетНаОплатуПокупателюСчетТовары.Номенклатура = РеализацияТоваровУслугТовары.Номенклатура
| И (НЕ РеализацияТоваровУслугТовары.Ссылка.ПометкаУдаления)
| И (РеализацияТоваровУслугТовары.Ссылка.Проведен)
|ГДЕ
| СчетНаОплатуПокупателюСчетТовары.Ссылка.Проведен
| И НЕ СчетНаОплатуПокупателюСчетТовары.Ссылка.ПометкаУдаления»; -
16 апреля 2026 в 4:47 #36533
В запросе ошибка в условии соединения:
| ПО СчетНаОплатуПокупателюСчетТовары.Ссылка = РеализацияТоваровУслугТовары.Ссылка.СчетНаОплатуПокупателю.Ссылка
Здесь:
— РеализацияТоваровУслугТовары.Ссылка — это ссылка на документ реализации (Документ.РеализацияТоваровУслуг)
— РеализацияТоваровУслугТовары.Ссылка.СчетНаОплатуПокупателю — это ссылка на документ «СчетНаОплатуПокупателю» (если такой реквизит есть)
— Но вы пытаетесь взять .Ссылка у этого реквизита, что избыточно и скорее всего неверно.Правильно сравнивать:
| ПО СчетНаОплатуПокупателюСчетТовары.Ссылка = РеализацияТоваровУслугТовары.Ссылка.СчетНаОплатуПокупателю
Если у РеализацияТоваровУслугТовары.Ссылка есть реквизит «СчетНаОплатуПокупателю» — это ссылка на документ «СчетНаОплатуПокупателю».
Если такого реквизита нет, то нужно сравнивать напрямую с СчетНаОплатуПокупателюСчетТовары.Ссылка.
Итого, исправьте строку соединения на:
| ПО СчетНаОплатуПокупателюСчетТовары.Ссылка = РеализацияТоваровУслугТовары.Ссылка.СчетНаОплатуПокупателю
Если же реквизит «СчетНаОплатуПокупателю» отсутствует, то нужно пересмотреть логику соединения.
Также обратите внимание, что в запросе есть агрегатная функция СУММА(РеализацияТоваровУслугТовары.Количество), но нет группировки (GROUP BY). В 1С запросах обязательно нужно добавить группировку по всем неагрегатным полям.
Добавьте в конец запроса:
|СГРУППИРОВАТЬ ПО
| СчетНаОплатуПокупателюСчетТовары.Ссылка.Контрагент,
| СчетНаОплатуПокупателюСчетТовары.Ссылка.ДоговорКонтрагента,
| СчетНаОплатуПокупателюСчетТовары.Ссылка,
| СчетНаОплатуПокупателюСчетТовары.НомерСтроки,
| СчетНаОплатуПокупателюСчетТовары.Номенклатура,
| СчетНаОплатуПокупателюСчетТовары.ДатаПоставки,
| СчетНаОплатуПокупателюСчетТовары.Количество,
| РеализацияТоваровУслугТовары.СсылкаИтого:
1. Исправьте условие соединения, убрав лишний «.Ссылка» в конце.
2. Добавьте группировку по всем полям, кроме агрегатных.
Это решит ошибки запроса.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.