Доброго дня, коллеги!
Обе функции запросов Подстрока() и Выразить() могут быть использованы для преобразования строки неограниченной длины, но есть существенное отличие. Если про него не знать, то может получиться как в той басне про мартышку и очки «вертит очками так и сяк…очки не действуют никак» :)
Вопрос
Ответ
Добрый день!
Есть вот такая рекомендация на сайте ИТС – https://its.1c.ru/db/metod8dev#content:2667:hdoc. В ней говорится, что из-за особенностей Microsoft SQL Server лучше использовать операцию приведения типа ВЫРАЗИТЬ.
Также есть следующая особенность. Существует ограничение на 1024 символа при использовании функции ВЫРАЗИТЬ. В таком запросе возникнет синтаксическая ошибка:
ВЫБРАТЬ РеализацияТоваровУслуг.Ссылка, ВЫРАЗИТЬ(РеализацияТоваровУслуг.Комментарий КАК СТРОКА(1025)) КАК Поле1 ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ГДЕ РеализацияТоваровУслуг.Ссылка = &Ссылка
А вот такой запрос будет выполнен без ошибок:
ВЫБРАТЬ РеализацияТоваровУслуг.Ссылка, ПОДСТРОКА(РеализацияТоваровУслуг.Комментарий, 1, 1025) КАК Поле1 ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ГДЕ РеализацияТоваровУслуг.Ссылка = &Ссылка
P.S.
Понимать, как работают запросы и уметь их строить - обязательный навык для всех, кто дорабатывает и внедряет 1С.
После курса Вы сможете:
- Строить сложные запросы с несколькими источниками данных
- Уверенно задействовать вложенные запросы и временные таблицы
- Использовать встроенный язык для обработки результатов запроса
- Учитывать особенности соединений и объединений нескольких таблиц.
- Разрабатывать запросы на уровне задач Аттестации 1С:Специалист по платформе.