прямой запрос

1. an2007 11.10.23 12:55 Сейчас в теме
Добрый день, помогите с прямым запросом:
Из табличной части документа Продажи делаю отбор:
|
SELECT
	|  продажа.IDDoc as [док $Документ.НМпродажа],
	|  жур.$ОбщийРеквизит.Сотрудник as [продавец $Справочник.Сотрудники],
	|  $продажа.Товар as [аналог $Справочник.Номенклатура],
	|  $продажа.Количество as кол,
	|  $продажа.Сумма as сум,
	|  $продажа.Партия as [партия $Справочник.Партии],
	|  $партии.Заказ as [заказ $Документ]
	|FROM
	|  $ДокументСтроки.НМпродажа as продажа 
	|INNER JOIN
	|  $Документ.НМпродажа as док ON док.IDDoc = продажа.IDDoc
	|INNER JOIN
	|  _1SJourn as жур ON жур.IDDoc = продажа.IDDoc AND 
	|                     жур.Date_Time_IDDoc BETWEEN :ДатаНач AND :ДатаКон~
	|LEFT JOIN
	|  $Справочник.Партии as партии with (nolock) on $продажа.Партия = партии.id
	|WHERE
	|  док.$ОбщийРеквизит.Магазин = :выбМагазин";
Показать


Реквизит <заказ> ( $партии.Заказ as [заказ $Документ]) может быть пустым или иметь значения двух типов: Документ.Заказ или Документ.ИнтернетЗаказ.
Как сделать отбор по типу реквизита <заказ>?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. dvk09 2 03.07.24 04:44 Сейчас в теме
(1) Внутреннее соединение с нужной таблицей документов, как вариант... (INNER JOIN)
2. Good_Smile 11.10.23 13:21 Сейчас в теме
как я понимаю, вам нужен $партии.Заказ.IDDocDef = $ВидДокумента.Заказ / ИнтернетЗаказ
3. an2007 11.10.23 13:23 Сейчас в теме
(2) Да, понимаю, что необходимо написать какое-то соединение, но какое?
4. starjevschik 11.10.23 14:20 Сейчас в теме
внутреннее соединение сделать с таблицей документов Заказ...
5. an2007 11.10.23 22:07 Сейчас в теме
7. an2007 13.10.23 23:41 Сейчас в теме
(4) Пробую так:
стрЗапроса = "
    |SELECT
    |  продажа.IDDoc as [док $Документ.НМпродажа],
    |  жур.$ОбщийРеквизит.Сотрудник as [продавец $Справочник.Сотрудники],
    |  $продажа.Аналог as [аналог $Справочник.НовАналоги],
    |  $продажа.Количество as кол,
    |  $продажа.Сумма as сум,
    |  $продажа.Партия as [партия $Справочник.Партии],
    |  $партии.Заказ as [заказ $Документ]
    |FROM
    |  $ДокументСтроки.НМпродажа as продажа 
    |INNER JOIN
    |  $Документ.НМпродажа as док1 ON док1.IDDoc = продажа.IDDoc
    |INNER JOIN
    |  $Документ.ЗаказИнтернет as док2 ON док2.IDDoc = заказ.IDDoc
    |INNER JOIN
    |  _1SJourn as жур ON жур.IDDoc = продажа.IDDoc AND 
    |                     жур.Date_Time_IDDoc BETWEEN :ДатаНач AND :ДатаКон~
    |LEFT JOIN
    |  $Справочник.Партии as партии with (nolock) on $продажа.Партия = партии.id
    |WHERE
    |  док.$ОбщийРеквизит.Магазин = :выбМагазин";
Показать

Скрыть

Ошибка: State 42000, native 4104, message [Microsoft][ODBC SQL Server Driver][SQL Server]Не удалось привязать составной идентификатор "заказ.IDDoc".
6. an2007 12.10.23 07:52 Сейчас в теме
Пробую так:
стрЗапроса = "
	|SELECT
	|  продажа.IDDoc as [док $Документ.НМпродажа],
	|  жур.$ОбщийРеквизит.Сотрудник as [продавец $Справочник.Сотрудники],
	|  $продажа.Аналог as [аналог $Справочник.НовАналоги],
	|  $продажа.Количество as кол,
	|  $продажа.Сумма as сум,
	|  $продажа.Партия as [партия $Справочник.Партии],
	|  $партии.Заказ as [заказ $Документ]
	|FROM
	|  $ДокументСтроки.НМпродажа as продажа 
	|INNER JOIN
	|  $Документ.НМпродажа as док1 ON док1.IDDoc = продажа.IDDoc
	|INNER JOIN
	|  $Документ.ЗаказИнтернет as док2 ON док2.IDDoc = заказ.IDDoc
	|INNER JOIN
	|  _1SJourn as жур ON жур.IDDoc = продажа.IDDoc AND 
	|                     жур.Date_Time_IDDoc BETWEEN :ДатаНач AND :ДатаКон~
	|LEFT JOIN
	|  $Справочник.Партии as партии with (nolock) on $продажа.Партия = партии.id
	|WHERE
	|  док.$ОбщийРеквизит.Магазин = :выбМагазин";
Показать

Ошибка: State 42000, native 4104, message [Microsoft][ODBC SQL Server Driver][SQL Server]Не удалось привязать составной идентификатор "заказ.IDDoc".
9. Parazyte 37 11.07.24 22:32 Сейчас в теме
Что-то в этом роде не сработает?? (раз уж некропостинг пошел)
	|WHERE
	|		
	|		Заказ.IDDocDef = $ВидДокумента.Заказ
	|		OR
	|		Заказ.IDDocDef = $ВидДокумента.ИнтернетЗаказ
	|		
10. an2007 22.07.24 11:34 Сейчас в теме
(9)
|WHERE
|
| Заказ.IDDocDef = $ВидДокумента.Заказ
| OR
| Заказ.IDDocDef = $ВидДокумента.ИнтернетЗаказ
|


То же самое:
State 42000, native 4104, message [Microsoft][ODBC SQL Server Driver][SQL Server]Не удалось привязать составной идентификатор "заказ.IDDocDef".
11. Anton_new01 22.07.24 12:03 Сейчас в теме
(10)
система не понимает что такое "заказ.IDDoc"

в частности у вас не описана таблица "заказ", хотя вы ее описали как "док2"

Имха как-то так должно быть.

|INNER JOIN
| $Документ.ЗаказИнтернет as док2 ON док2.IDDoc = партии.Заказ

Ps. но по прямым запросам не силен.
12. an2007 23.07.24 14:04 Сейчас в теме
Решил вопрос так:
стрЗапроса = "
|SELECT
| продажа.IDDoc as [докПродажа $Документ.НМпродажа],
| $продажа.Продавец as [продавец $Справочник.Сотрудники],
| $продажа.Сумма as сум,
| $продажа.Партия as [партия $Справочник.Партии],
| $партии.Заказ as [заказ $Документ],
| LEFT($партии.Заказ,5) as заказ1
|FROM
| $ДокументСтроки.НМпродажа as продажа
|LEFT JOIN $Справочник.Партии as партии on $продажа.Партия = партии.id
|INNER JOIN $Документ.НМпродажа as док on док.IDDoc = продажа.IDDoc
|INNER JOIN _1SJourn as жур on жур.IDDoc = продажа.IDDoc AND жур.Date_Time_IDDoc BETWEEN :дата1 AND :дата2~
|WHERE
| док.$ОбщийРеквизит.Магазин = :выбМагазин AND LEFT($партии.Заказ,5) = ' 4TF '";

' 4TF ' - внутренний ИД видаДокумента ИнтернетЗаказ

Пока всё, всем спасибо.
Тема закрыта.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот