Как сделать строку в запросе 1с
Функция ПОДСТРОКА() в запросе 1С.
Функция ПОДСТРОКА() используется в запросе для данных строкового типа.
Формат: ПОДСТРОКА(Исходная строка, Начало, Длина).
Где:
Исходная строка — строка, из которой будет выделена новая строка.
Начало — номер символа в Исходной строке. Номера начинаются с номера один. Новая строка будет начинаться с этого символа.
Длина — количество символов в Исходной строке.
Пример:
Очень важно! Так, как строки могут быть неограниченной длины, необходимо использовать Операцию приведения типа ВЫРАЗИТЬ() в 1С:Предприятие 8.2,8.3.
Иначе будет возможно аварийное завершение выполнения запроса.
На SQL сервере максимальная длина строки ограниченной длины равна 4000 символам.
Строка — это один из примитивных типов данных существующих 1С и работать с ним приходится практически постоянно. Следовательно необходимо иметь представление о том, какие функции для работы со строками существуют, как и когда они используются, а также, что получается в результате. Этим и займемся.
Функции для работы со строками в 1С 8.2 и 8.3
Строка
Функция Строка(x) возвращает текстовое представление переданного ей значения “x”.
СтрДлина
Функция СтрДлина(x) вычисляет количество символов в строке “x”, учитывая пробелы и ничего не значащие символы.
СокрЛП, СокрЛ, СокрП
Функции СокрЛП(x), СокрЛ(x) и СокрП(x) убирают пробелы и ничего не значащие символы у переданной строки “x” с обеих сторон, слева и справа соответственно.
Лев, Прав, Сред
Функции Лев(x, y) и Прав(x, y) возвращают количество символов “y” с левого или правого края переданной им строки “x”. А функция Сред(x, y, z) возвращает количество символов “z” из указанного места “y” переданной строки “x”.
ВРег, НРег, ТРег
Функция ВРег(x) преобразует все символы переданной строки “x” в верхний регистр, НРег(x) — в нижний регистр, ТРег(x) — первую букву каждого слова преобразует в верхний регистр, а все остальные нижний.
Найти
Функция Найти(x, y) возвращает номер первого символа первого вхождения подстроки “y” в строку “x”, если, конечно, такое вхождение найдено (при этом нумерация начинается с 1). Если же вхождений не найдено, то функция возвращает 0.
СтрЧислоВхождений
Функция СтрЧислоВхождений(x, y) возвращает количество вхождений подстроки “y” в строку “x”.
СтрЗаменить
Функция СтрЗаменить(x, y, z) позволяет в указанной строке “x” заменить все вхождения одной подстроки “y” на другую “z”, результатом выполнения функции будет строка с проведенными заменами.
ПустаяСтрока
Функция ПустаяСтрока(x) сравнивает переданную ей строку “x” с пустой и возвращает результат этого сравнения — Истина или Ложь, при этом строка состоящая из пробелов и/или ничего не значащих символов приравнивается к пустой.
СтрЧислоСтрок
Функция СтрЧислоСтрок(x) возвращает количество строк в многострочном тексте “x”.
МногострочныйТекст = СтрЗаменить("тест1,тест2,тест3,тест4", ",", Символы.ПС); //тест1 тест2 тест3 тест4
СтрПолучитьСтроку
Функция СтрПолучитьСтроку(x, y) возвращает строку с номером “y” из многострочного текста “x”.
МногострочныйТекст = СтрЗаменить("тест1,тест2,тест3,тест4", ",", Символы.ПС); //тест1 тест2 тест3 тест4
Символ, КодСимвола
Функция Символ(x) получает код символа “x” и возвращает строку содержащую соответствующий символ (в кодировке Unicode). Функция КодСимвола(x) делает обратное действие — получает символ “x” и возвращает его код в кодировке Unicode. Таблицу символов Unicode можно найти, например, тут.
Символы
Это не функция, а набор наиболее часто используемых специальных символов, состоит из:
- ВК (CR) — возврат каретки;
- ВТаб (VTab) — вертикальная табуляция;
- НПП (NBSp) — неразрывный пробел;
- ПС (LF) — перевод строки;
- ПФ (FF) — перевод формы;
- Таб (Tab) — символ горизонтальной табуляции.
ЗначениеВСтрокуВнутр, ЗначениеИзСтрокиВнутр
Функция ЗначениеВСтрокуВнутр(x) возвращает системное строковое представление значения “x”. Функция ЗначениеИзСтрокиВнутр(x) проделывает обратную операцию и возвращает значение, полученное из строкового системного представления “x”. Обе эти функции используются для сохранения функциональной совместимости с версией 7.7. Использование для каких-либо других целей не рекомендуется. В новых версиях платформы данные функции не работают (хотя их описание присутствует в справке).
ВвестиСтроку
Функция ВвестиСтроку(x, y, z, w) вызывает диалог для ввода строки, введенная строка записывается в переменную “x”, кроме этого можно указать подсказку “y”, длину вводимой строки “z”, отметку многострочности вводимого текста “w”. Функция возвращает Истина — если ввод был произведен, Ложь — если пользователь отказался от ввода. Выглядит это окно примерно так:
Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен . Имя типа XDTO: может быть любым из перечисленных: string, anySimpleType, anyURI, duration, gDay, gMonth, gMonthDay, gYear, gYearMonth, NOTATION.
Существует достаточно большой список функции работы со строками в 1С, перечень функций:
- СтрДлина
- СокрЛ
- СокрП
- СокрЛП
- Лев
- Прав
- Сред
- СтрНайти
- ВРег
- НРег
- ТРег
- Символ
- КодСимвола
- ПустаяСтрока
- СтрЗаменить
- СтрЧислоСтрок
- СтрПолучитьСтроку
- СтрЧислоВхождений
- СтрСравнить
- СтрНачинаетсяС
- СтрЗаканчиваетсяНа
- СтрРазделить
- СтрСоединить
- ПолучитьСклоненияСтроки
Представленные функции строк в 1С поддерживается платформой 8.3. Для платформ более ранних версий список функций может отличаться. Подробнее о функциях – во встроенной к языке справке.
Далее каждая функция будет рассмотрена более детально.
СтрДлина – функция возвращает длину строки (число).
Сигнатура (жирным курсивом выделены обязательные параметры):
СокрЛ, СокрП, СокрЛП – эти функции очень похожи по своей сути, поэтому будут рассмотрены совместно. Функции убирают пробелы, переносы строк, перевод каретки слева (СокрЛ), справа (СокрП), слева и права (СокрЛП).
- тонкий клиент
- веб-клиент
- мобильный клиент
- сервер, толстый клиент
- внешнее соединение
- мобильное приложение (клиент)
- мобильное приложение (сервер)
Лев, Прав, Сред – данные функции также будут рассмотрены совместно. Функции получают определенное количество символов слева, справа, с середины строки. Результат выполнения – строка.
Сигнатура (жирным курсивом выделены обязательные параметры):
- тонкий клиент
- веб-клиент
- мобильный клиент
- сервер
- толстый клиент
- внешнее соединение
- мобильное приложение (клиент)
- мобильное приложение (сервер)
Как (Какой-то текст)
кст (Какой-то текст)
СтрНайти – Функция находит подстроку (первое вхождение) в строке с учетом регистра. Результат выполнения – строка.
Сигнатура (жирным курсивом выделены обязательные параметры):
- Строка – исходная строка;
- ПодстрокаПоиска – подстрока, которую нужно найти;
- НаправлениеПоиска – системное перечисление (СКонца, СНачала);
- НачальнаяПозиция – число. Указывает позицию в строке, с которой начинается поиск.
Если параметр не задан и в параметре НаправлениеПоиска указано значение СНачала, то значение по умолчанию равно 1.
Если параметр не задан и в параметре НаправлениеПоиска указано значение СКонца, то значение по умолчанию равно длине строки.
- НомерВхождения – Число. Номер вхождения подстроки в строку.
- тонкий клиент
- веб-клиент
- мобильный клиент
- сервер
- толстый клиент
- внешнее соединение
- мобильное приложение (клиент)
- мобильное приложение (сервер)
- интеграция
10 (Какой-то текст, просто пробный текст)
32 (Какой-то текст, просто пробный текст)
32 (Какой-то текст, просто пробный текст)
10 (Какой-то текст, просто пробный текст)
ВРег, НРег, ТРег – данные функции будут рассмотрены совместно. Функции изменяют регистр строк. Верхний, нижний, каждое слово с заглавной буквы.
Сигнатура (жирным курсивом выделены обязательные параметры):
- тонкий клиент
- веб-клиент
- мобильный клиент
- сервер
- толстый клиент
- внешнее соединение
- мобильное приложение (клиент)
- мобильное приложение (сервер)
Символ – функция возвращает символ (строку) код которой был передан (код в формате unicode).
Сигнатура (жирным курсивом выделены обязательные параметры):
- тонкий клиент
- веб-клиент
- мобильный клиент
- сервер
- толстый клиент
- внешнее соединение
- мобильное приложение (клиент)
- мобильное приложение (сервер)
КодСимвола – Функция обратная функции Символ, т.е. на вход принимает строку, возвращает код (число) символа в формате unicode.
Сигнатура (жирным курсивом выделены обязательные параметры):
- тонкий клиент
- веб-клиент
- мобильный клиент
- сервер
- толстый клиент
- внешнее соединение
- мобильное приложение (клиент)
- мобильное приложение (сервер)
ПустаяСтрока – функция проверяет, пустая ли строковая переменная, возвращает тип булево. Игнорируются пробелы, переносы строк, перенос каретки.
Сигнатура (жирным курсивом выделены обязательные параметры):
- тонкий клиент
- веб-клиент
- мобильный клиент
- сервер
- толстый клиент
- внешнее соединение
- мобильное приложение (клиент)
- мобильное приложение (сервер)
СтрЗаменить – функция заменяет все подстроки в строке.
Сигнатура (жирным курсивом выделены обязательные параметры):
- тонкий клиент
- веб-клиент
- мобильный клиент
- сервер
- толстый клиент
- внешнее соединение
- мобильное приложение (клиент)
- мобильное приложение (сервер)
СтрЧислоСтрок – функция возвращает количество строк в многострочном документе, строки разделенные символом переноса строки.
Сигнатура (жирным курсивом выделены обязательные параметры):
- тонкий клиент
- веб-клиент
- мобильный клиент
- сервер
- толстый клиент
- внешнее соединение
- мобильное приложение (клиент)
- мобильное приложение (сервер)
СтрПолучитьСтроку – Получения строки по номеру из многострочного документа.
Сигнатура (жирным курсивом выделены обязательные параметры):
- тонкий клиент
- веб-клиент
- мобильный клиент
- сервер
- толстый клиент
- внешнее соединение
- мобильное приложение (клиент)
- мобильное приложение (сервер)
СтрЧислоВхождений – функция возвращает число вхождений подстроки в строку. Поиск регистронезависимый.
Сигнатура (жирным курсивом выделены обязательные параметры):
- тонкий клиент
- веб-клиент
- мобильный клиент
- сервер
- толстый клиент
- внешнее соединение
- мобильное приложение (клиент)
- мобильное приложение (сервер)
СтрСравнить – функция сравнивает строки без учета регистра. Возвращается число, если -1 – тогда первая строка меньше второй, 1 – первая строка больше второй, 0 – строки равны.
Сигнатура (жирным курсивом выделены обязательные параметры):
- тонкий клиент
- веб-клиент
- мобильный клиент
- сервер
- толстый клиент
- внешнее соединение
- мобильное приложение (клиент)
- мобильное приложение (сервер)
Строка "Какой-то текст" больше "Какой-то"
СтрНачинаетсяС, СтрЗаканчиваетсяНа – определяют (с учетом регистра) начинается/заканчивается строка с определенной подстроки. Возвращает булево.
Сигнатура (жирным курсивом выделены обязательные параметры):
- тонкий клиент
- веб-клиент
- мобильный клиент
- сервер
- толстый клиент
- внешнее соединение
- мобильное приложение (клиент)
- мобильное приложение (сервер)
"Какой-то текст" начинается с "как"
"Какой-то текст" заканчивается на "ст"
Основное применение функции ВЫРАЗИТЬ() в запросе 1С:Предприятия – выделять из значений составного типа значение требуемого типа.
Синтаксис функции следующий:
Если преобразуемое выражение имеет тип значения отличный от того, к которому требуется привести, то функция вернет NULL.
Проблема выглядит так: при попытке получить данные через точку от полей составного типа происходит соединение со всеми таблицами объектов 1С, входящих в составной тип. А если нужные реквизиты есть не у всех регистраторов или реквизиты имеют различные имена? В таких ситуациях рекомендуется сообщить системе, к какой таблице объектов 1С мы хотим обратиться, чтобы оптимизировать запрос.
Здесь для каждого выбранного типа ссылки мы обращаемся к своей таблице, чтобы из нее выбрать нужный нам реквизит.
Но у функции ВЫРАЗИТЬ() есть еще несколько областей применения.
2. Дополнительное применение функции ВЫРАЗИТЬ в запросе 1С 8.3
1. Для строковых типов:
· Приведение неограниченной строки к строке фиксированной длины. Строки неограниченной длины не могут быть обработаны в запросах 1С:Предприятия при сравнении значений, группировке, если требуется получить РАЗЛИЧНЫЕ. Чтобы обойти эти ограничения нужно преобразовать неограниченную строку к ограниченной:
2. Для числовых типов:
Округление числовых значений в запросе до определенного знака:
Обратим внимание, что ВЫРАЗИТЬ() – это не функция преобразования типов. И хотя ВЫРАЗИТЬ() и имеет английский синоним Cast, не обманывайтесь, это не аналог неявного преобразования типов в SQL. Например, система выдаст ошибку при попытке преобразовать тип из числа в строку.
Вас могут заинтересовать следующие статьи:
Основное применение функции ВЫРАЗИТЬ() в запросе 1С:Предприятия – выделять из значений составного типа значение требуемого типа.
Синтаксис функции следующий:
Если преобразуемое выражение имеет тип значения отличный от того, к которому требуется привести, то функция вернет NULL.
Проблема выглядит так: при попытке получить данные через точку от полей составного типа происходит соединение со всеми таблицами объектов 1С, входящих в составной тип. А если нужные реквизиты есть не у всех регистраторов или реквизиты имеют различные имена? В таких ситуациях рекомендуется сообщить системе, к какой таблице объектов 1С мы хотим обратиться, чтобы оптимизировать запрос.
Здесь для каждого выбранного типа ссылки мы обращаемся к своей таблице, чтобы из нее выбрать нужный нам реквизит.
Но у функции ВЫРАЗИТЬ() есть еще несколько областей применения.
2. Дополнительное применение функции ВЫРАЗИТЬ в запросе 1С 8.3
1. Для строковых типов:
· Приведение неограниченной строки к строке фиксированной длины. Строки неограниченной длины не могут быть обработаны в запросах 1С:Предприятия при сравнении значений, группировке, если требуется получить РАЗЛИЧНЫЕ. Чтобы обойти эти ограничения нужно преобразовать неограниченную строку к ограниченной:
2. Для числовых типов:
Округление числовых значений в запросе до определенного знака:
Обратим внимание, что ВЫРАЗИТЬ() – это не функция преобразования типов. И хотя ВЫРАЗИТЬ() и имеет английский синоним Cast, не обманывайтесь, это не аналог неявного преобразования типов в SQL. Например, система выдаст ошибку при попытке преобразовать тип из числа в строку.
Вас могут заинтересовать следующие статьи:
Читайте также: