База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить ошибку «Синтаксическая ошибка ЛЕВСИМВ(…)» в запросе 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 6 часов, 22 минуты назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
12 июня 2026 в 15:03 #37831
Ошибка при вызове метода контекста (Выполнить)
{ВнешнийОтчет.ВнешнийОтчет1.Форма.ФормаОтчета.Форма(24)}: РезультатЗапроса = Запрос.Выполнить();
по причине:
{(9, 2)}: Синтаксическая ошибка «ЛЕВСИМВ(ЗначенияСвойствОбъектов.Свойство.ИмяОтбора,»
<<?>>ЛЕВСИМВ(ЗначенияСвойствОбъектов.Свойство.ИмяОтбора, 255) = &ИмяОтбора -
12 июня 2026 в 15:03 #37832
Ошибка «Синтаксическая ошибка ЛЕВСИМВ(…)» говорит о том, что в языке запросов 1С нельзя использовать функцию ЛЕВСИМВ() в части условия запроса.
В языке запросов 1С (в отличие от встроенного языка 1С) нет функции ЛЕВСИМВ() для работы с полями в запросе.
—
Как решить проблему с сравнением поля неограниченной длины и строки?
1. В запросе нельзя использовать ЛЕВСИМВ() для поля из базы.
2. Вместо этого нужно сделать сравнение через оператор LIKE с ограничением длины, например:
1С (Код)12ГДЕЗначенияСвойствОбъектов.Свойство.ИмяОтбора LIKE &ИмяОтбораИ параметр передать с точным значением:
1С (Код)1Запрос.УстановитьПараметр("ИмяОтбора", "НеПроводитьВзаимозачетПоВозвратнымНакладным");3. Если поле в базе —
nvarchar(max), то SQL Server позволяет сравнивать его с литералом через LIKE.—
Если нужно точное сравнение, а LIKE не подходит, то:
— Можно попробовать в базе данных сделать представление с приведением типа, но это уже вне 1С.
— Либо в 1С сделать фильтрацию уже после получения данных (в коде).
—
Пример исправленного условия:
|ГДЕ
| ЗначенияСвойствОбъектов.Свойство.ИмяОтбора = &ИмяОтбораЕсли ошибка сохраняется, значит поле
ИмяОтборав базе —nvarchar(max), и SQL Server не позволяет сравнивать напрямую.Тогда используйте:
|ГДЕ
| ЗначенияСвойствОбъектов.Свойство.ИмяОтбора LIKE &ИмяОтбора—
Или в параметре добавить символы для LIKE:
1С (Код)1Запрос.УстановитьПараметр("ИмяОтбора", "НеПроводитьВзаимозачетПоВозвратнымНакладным");—
Если и это не помогает, то единственный вариант — фильтровать в коде после получения результата.
—
Рекомендую посмотреть обсуждение на infostart:
https://infostart.ru/public/412990/ (по работе с полями неограниченной длины)
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.