0
Mary01
31.08.15
✎
08:24
|
Помогите пожалуйста сделать правильное условие:
SELECT
|$Рег.Покупатель as [Контрагент $Справочник.Контрагенты],
|$Рег.Номенклатура as [Номенклатура $Справочник.Номенклатура],
|Рег.IDDoc as [Док $Документ],
|Жур.IDDocDef as Док_вид,
|$Рег.Количество AS Кол1,
|$Рег.ПродСтоимость AS Сум1,
|FROM
| $Регистр.Продажи as Рег
|INNER JOIN _1SJOURN as Жур WITH (NOLOCK) ON Рег.IDDOC = Жур.IDDOC
|INNER JOIN $Справочник.Контрагенты AS Контрагенты With (NOLOCK) ON $Рег.Покупатель = Контрагенты.ID
|WHERE
|Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~"
|AND Рег.sp2343.id IN (' 4 ',' 2M ' )
|GROUP BY [Номенклатура $Справочник.Номенклатура], [Контрагент $Справочник.Контрагенты]
Ошибка "Не удалось вызвать методы для char" возникает из-за строки |AND Рег.sp2343.id IN (' 4 ',' 2M ' )
Здесь я пытаюсь сделать отбор по номенклатуре, а точнее по id нескольких элементов справочника Номенклатура. sp2343 - это измерение Номенклатура в регистре.
Пробовала так: |AND Рег.Номенклатура.id IN (' 4 ',' 2M ' ) - тогда ошибка Недопустимое имя столбца "Номенклатура".
|
|
1
el-gamberro
31.08.15
✎
08:27
|
Убери id, пиши так:
AND Рег.sp2343 IN (' 4 ',' 2M ' )
ЗЫ это ж вам не восьмерка, настоящий SQL
|
|
3
el-gamberro
31.08.15
✎
08:41
|
(2) На будущее, в диалекте MS-SQL нельзя указывать поле через несколько точек. Допустим надо поставить условие на реквизит Номенклатуры. Вместо допустимого в 8.х Рег.Номенклатура.ДатаИзготовления = &Параметр, в диалекте MS-SQL необходимо соединить с таблицей номенклатуры и уже для поля таблицы номенклатуры указать условие.
|
|