Как исправить ошибку соединения в запросе 1С для СчетНаОплату?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как исправить ошибку соединения в запросе 1С для СчетНаОплату?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #36532
      Фото аватараOdineski
      Участник

        «ВЫБРАТЬ
        | СчетНаОплатуПокупателюСчетТовары.Ссылка.Контрагент КАК Контрагент,
        | СчетНаОплатуПокупателюСчетТовары.Ссылка.ДоговорКонтрагента КАК ДоговорКонтрагента,
        | СчетНаОплатуПокупателюСчетТовары.Ссылка КАК СчетПокупателю,
        | СчетНаОплатуПокупателюСчетТовары.НомерСтроки КАК НомерСтроки,
        | СчетНаОплатуПокупателюСчетТовары.Номенклатура КАК НоменклатураСчет,
        | СчетНаОплатуПокупателюСчетТовары.ДатаПоставки КАК ДатаПоставки,
        | СчетНаОплатуПокупателюСчетТовары.Количество КАК КоличествоСчет,
        | РеализацияТоваровУслугТовары.Ссылка КАК Реализация,
        | СУММА(РеализацияТоваровУслугТовары.Количество) КАК КоличествоРТУ,
        | 0 КАК ОстатокРТУ,
        | 1 КАК КолСчет,
        | 0 КАК ОстатокДельта,
        | ЛОЖЬ КАК УдалитьСтр,
        | ЛОЖЬ КАК ПропуститьСтр
        |ИЗ
        | Документ.СчетНаОплатуПокупателю.Товары КАК СчетНаОплатуПокупателюСчетТовары
        | ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
        | ПО СчетНаОплатуПокупателюСчетТовары.Ссылка = РеализацияТоваровУслугТовары.Ссылка.СчетНаОплатуПокупателю.Ссылка
        | И СчетНаОплатуПокупателюСчетТовары.Номенклатура = РеализацияТоваровУслугТовары.Номенклатура
        | И (НЕ РеализацияТоваровУслугТовары.Ссылка.ПометкаУдаления)
        | И (РеализацияТоваровУслугТовары.Ссылка.Проведен)
        |ГДЕ
        | СчетНаОплатуПокупателюСчетТовары.Ссылка.Проведен
        | И НЕ СчетНаОплатуПокупателюСчетТовары.Ссылка.ПометкаУдаления»;

      • #36533
        bot_avaOdin — Одинэсник
        Участник

          В запросе ошибка в условии соединения:

          | ПО СчетНаОплатуПокупателюСчетТовары.Ссылка = РеализацияТоваровУслугТовары.Ссылка.СчетНаОплатуПокупателю.Ссылка

          Здесь:

          — РеализацияТоваровУслугТовары.Ссылка — это ссылка на документ реализации (Документ.РеализацияТоваровУслуг)
          — РеализацияТоваровУслугТовары.Ссылка.СчетНаОплатуПокупателю — это ссылка на документ «СчетНаОплатуПокупателю» (если такой реквизит есть)
          — Но вы пытаетесь взять .Ссылка у этого реквизита, что избыточно и скорее всего неверно.

          Правильно сравнивать:

          | ПО СчетНаОплатуПокупателюСчетТовары.Ссылка = РеализацияТоваровУслугТовары.Ссылка.СчетНаОплатуПокупателю

          Если у РеализацияТоваровУслугТовары.Ссылка есть реквизит «СчетНаОплатуПокупателю» — это ссылка на документ «СчетНаОплатуПокупателю».

          Если такого реквизита нет, то нужно сравнивать напрямую с СчетНаОплатуПокупателюСчетТовары.Ссылка.

          Итого, исправьте строку соединения на:

          | ПО СчетНаОплатуПокупателюСчетТовары.Ссылка = РеализацияТоваровУслугТовары.Ссылка.СчетНаОплатуПокупателю

          Если же реквизит «СчетНаОплатуПокупателю» отсутствует, то нужно пересмотреть логику соединения.

          Также обратите внимание, что в запросе есть агрегатная функция СУММА(РеализацияТоваровУслугТовары.Количество), но нет группировки (GROUP BY). В 1С запросах обязательно нужно добавить группировку по всем неагрегатным полям.

          Добавьте в конец запроса:

          |СГРУППИРОВАТЬ ПО
          | СчетНаОплатуПокупателюСчетТовары.Ссылка.Контрагент,
          | СчетНаОплатуПокупателюСчетТовары.Ссылка.ДоговорКонтрагента,
          | СчетНаОплатуПокупателюСчетТовары.Ссылка,
          | СчетНаОплатуПокупателюСчетТовары.НомерСтроки,
          | СчетНаОплатуПокупателюСчетТовары.Номенклатура,
          | СчетНаОплатуПокупателюСчетТовары.ДатаПоставки,
          | СчетНаОплатуПокупателюСчетТовары.Количество,
          | РеализацияТоваровУслугТовары.Ссылка

          Итого:

          1. Исправьте условие соединения, убрав лишний «.Ссылка» в конце.

          2. Добавьте группировку по всем полям, кроме агрегатных.

          Это решит ошибки запроса.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С