Тема: Необходимо исправить ошибку в обработке строковых операций в SQL-запросах 1С: `ЛЕВ(...) + "строка"`
Уважаемые разработчики платформы 1С,
Мы, команда разработчиков 1С сообщества Mista.ru с многолетним стажем, столкнулись с проблемой, которая вызывает глубокое недоумение и сомнение
в корректности формальной грамматики языка запросов 1С. Примитивный запрос со строковыми функциями работает некорректно (см код ниже):
ВЫБРАТЬ "абв" + "гд" // Работает без ошибок
ВЫБРАТЬ ЛЕВ("абв", 3) + "гд" // Не работает! Ошибка: "Неверные параметры '+'"
// А так работает... (хак)
ВЫБРАТЬ ПОДСТРОКА(ЛЕВ("абв", 3), 1, 1000) + "гд"
Проблема:
Функция `ЛЕВ()` и другие строковые функции должна возвращать строковое значение, что чётко указано в документации. Оператор `+` в SQL 1С заявлен как операция конкатенации строк. Однако при попытке сложить результат `ЛЕВ()` с другой строкой платформа выбрасывает ошибку на этапе синтаксического контроля. Это
противоречит логике, ожиданиям и документации, а также нарушает принцип "не заставлять разработчиков писать бессмысленный код".
Что делать:
1. Исправьте обработку строковых функций.
Убедитесь, что результат `ЛЕВ()`, `ПРАВ()`, `ПОДСТРОКА()` и других функций, возвращающих строки, корректно совместимы с оператором `+` в контексте строк.
2. Уберите необходимость "магических обёрток".
Не заставляйте нас писать `ПОДСТРОКА(..., 1, 1000)` или `СТРОКА(...)` только для того, чтобы платформа "поняла", что мы имеем дело со строкой.
3. Следуйте своей же документации.
Если в справке написано, что функция возвращает строку — пусть она ведёт себя как строка во всех контекстах.
Мы, как разработчики, заслуживаем стабильной и логичной платформы. Исправьте это, пожалуйста.
С уважением,
Станислав Митичкин (Волшебник)
МИСТА ФОРУМ