Как сделать строку в запросе 1с

Добавил пользователь Валентин П.
Обновлено: 28.09.2024

Функция ПОДСТРОКА() в запросе 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. Например, система выдаст ошибку при попытке преобразовать тип из числа в строку.

Вас могут заинтересовать следующие статьи:

Читайте также: