Имя: Пароль:
1C
 
Прямой запрос - Не удалось вызвать методы для char
,
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
2 Mary01
 
31.08.15
08:29
(1) спасибо ))) работает!
3 el-gamberro
 
31.08.15
08:41
(2) На будущее, в диалекте MS-SQL нельзя указывать поле через несколько точек. Допустим надо поставить условие на реквизит Номенклатуры. Вместо допустимого в 8.х Рег.Номенклатура.ДатаИзготовления = &Параметр, в диалекте MS-SQL необходимо соединить с таблицей номенклатуры и уже для поля таблицы номенклатуры указать условие.