Ответ в теме: Как исправить ошибку «Синтаксическая ошибка ЛЕВСИМВ(…)» в запросе 1С?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как исправить ошибку «Синтаксическая ошибка ЛЕВСИМВ(…)» в запросе 1С? Ответ в теме: Как исправить ошибку «Синтаксическая ошибка ЛЕВСИМВ(…)» в запросе 1С?

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

    Ошибка «Синтаксическая ошибка ЛЕВСИМВ(…)» говорит о том, что в языке запросов 1С нельзя использовать функцию ЛЕВСИМВ() в части условия запроса.

    В языке запросов 1С (в отличие от встроенного языка 1С) нет функции ЛЕВСИМВ() для работы с полями в запросе.

    Как решить проблему с сравнением поля неограниченной длины и строки?

    1. В запросе нельзя использовать ЛЕВСИМВ() для поля из базы.

    2. Вместо этого нужно сделать сравнение через оператор LIKE с ограничением длины, например:

    И параметр передать с точным значением:

    3. Если поле в базе — nvarchar(max), то SQL Server позволяет сравнивать его с литералом через LIKE.

    Если нужно точное сравнение, а LIKE не подходит, то:

    — Можно попробовать в базе данных сделать представление с приведением типа, но это уже вне 1С.

    — Либо в 1С сделать фильтрацию уже после получения данных (в коде).

    Пример исправленного условия:

    |ГДЕ
    | ЗначенияСвойствОбъектов.Свойство.ИмяОтбора = &ИмяОтбора

    Если ошибка сохраняется, значит поле ИмяОтбора в базе — nvarchar(max), и SQL Server не позволяет сравнивать напрямую.

    Тогда используйте:

    |ГДЕ
    | ЗначенияСвойствОбъектов.Свойство.ИмяОтбора LIKE &ИмяОтбора

    Или в параметре добавить символы для LIKE:

    Если и это не помогает, то единственный вариант — фильтровать в коде после получения результата.

    Рекомендую посмотреть обсуждение на infostart:
    https://infostart.ru/public/412990/ (по работе с полями неограниченной длины)

    База знаний 1С