1с запрос конкатенация строк в запросе

Маленький IT блог с характером 1С.

Страницы

Поиск по блогу

вторник, 5 июля 2016 г.

Супер-пупер быстрая конкатенация(сложение) строк

И снова сложно о простом. Что бы присоединить одну строку к другой, в платформу 1С заложена операция конкатенации («+»).

При выполнении конкатенации:

  • длина результирующей строки равна сумме длин соединяемых строк;
  • в случае несовпадения типа данных второго или последующих операндов со строковым типом, их значение преобразуется к строковому типу в соответствии с правилами преобразования типов.

Пример: ФИО = Фамилия + » » + Имя + » » + Отчество;

Выполним операцию конкатенации 100000 раз по алгоритму:
ИтоговаяСтрока = «»;
Для Счетчик = 1 По Объект.КоличествоИтераций Цикл
ИтоговаяСтрока = ИтоговаяСтрока + Объект.РеквизитСтрока;
КонецЦикла;

Переменные содержат следующие значения:

  • Объект.КоличествоИтераций = 100000;
  • Объект.РеквизитСтрока = «ПроизвольнаяСтрока».

Произведем замер длительности выполнения алгоритма (см. рисунок 1).

Рисунок 1. Замер скорости операции конкатенации

Время выполнения алгоритма составило почти 52 секунды, что не очень быстро. Существует еще один способ конкатенации строк, который работает заметно быстрее, я бы сказал, значительно быстрее.

Язык программирования 1С имеет в своем арсенале объект ЗаписьXML, который предназначен для создания XML-файлов. Данный объект умеет писать данные не только в файл, но и в строку, что позволяет его использовать для конкатенации строк. Роль операции конкатенации выполняет метод ЗаписатьБезОбработки().

Выполним операцию конкатенации 100000 раз по алгоритму:
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
Для Счетчик = 1 По Объект.КоличествоИтераций Цикл
ЗаписьXML.ЗаписатьБезОбработки(Объект.РеквизитСтрока);
КонецЦикла;
ИтоговаяСтрока = ЗаписьXML.Закрыть();

Войдите как ученик, чтобы получить доступ к материалам школы

Язык запросов 1С 8.3 для начинающих программистов: функции для работы со строками

Автор уроков и преподаватель школы: Владимир Милькин

Функции для работы со строками в запросе

Прямо скажем механизмов для работы со строками в запросах 1С мало. Во-первых, строки можно складывать . Во-вторых, от строки можно взять подстроку . Во-третьих, строки можно сравнивать , в том числе по шаблону . Вот пожалуй и всё, что можно делать со строками. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

Когда мы говорим строка в запросе, то имеется в виду либо строковая константа:

либо реквизит таблицы, у которого тип СТРОКА:

Сложение строк

Для сложения используется операция +

Функция ПОДСТРОКА

Данная функция предназначена для выделения подстроки из строки.

В качестве параметров принимает:

  • строку , из которой необходимо выделить подстроку;
  • позицию символа, с которого начинается выделяемая из строки подстрока;
  • длину выделяемой подстроки.

Функция ПОДОБНО

Если нужно убедиться, что строковый реквизит соответствует определённым критериям мы его сравниваем. Например, так:

А что, если нужно более хитрое сравнение? Не просто на равенство или неравенство, а на подобие определенному шаблону? Вот как раз для этого и создана функция ПОДОБНО.

Если быть совсем точным, то это даже не функция, а оператор, который позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа.

Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.

Давайте уже рассмотрим пример, чтобы ситуация прояснилась:

Результатом выполнения данного запроса будет вся еда, наименование которой начинается на букву «К»:

Думаю вы догадались, что здесь вся «хитрость» сосредоточена в строке шаблона «[К]%». Буква «К» в квадратных скобках в данном случае означает, что первым символом наименования должна быть буква «К». Знак «%», идущий следом означает, что после буквы «К» могут идти (или не идти) любые символы в любом количестве. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

Конечно, я всё это не из головы придумал. При формировании строки шаблона есть определенные правила, которые нужно соблюдать:

  • % означает любое количество произвольных символов
  • _ означает один произвольный символ
  • [] означает любой одиночный символ, перечисленный внутри скобок
  • [^] означает любой одиночный символ, кроме тех, что перечислены внутри скобок после ^

Примеры шаблонов с пояснениями:

«%» абсолютно любая строка (в том числе пустая):

«___» строка из трёх символов (любых):

«[ЧЛ]%[ЫН]» строка, начинающаяся с буквы Ч или Л и оканчивающаяся на Ы или Н:

«[^К]%» строка, не содержащая в начале букву К:

«[А-К]%» строка, начинающаяся с буквы из диапазона с А по К:

Обратите внимание на приём, использованный в шаблоне «[А-К]%». Вместо того, чтобы перечислять все буквы от А до К, например так «[АБВГДЕЁЖЗИЙК]%» мы указали диапазон значений через дефис. Квадратные скобки это позволяют делать.

Рецепты решения проблем с компьютерами и программами

это нужно, например, чтобы в условии запроса сначала сложить строки, а потом сделать их результат проверяемым параметром. Или просто с помощью этого можно получить строку образованную сложением и преобразованием в строку различных значений, например, строк.

Понравилась статья? Поделиться с друзьями:
Vkontakte.INFO
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: