1С сцепить строки в запросе

1С сцепить строки в запросе

Строка — примитивный тип данных в языке программирования 1С. Помимо 1С, этот тип данных используется во всех известных языках программирования, обычно он называется «string».

Функции работы со строками в 1С

Рассмотрим основные функции встроенного языка программирования 1С.

Строка

Функция Строка() позволяет получить текстовое представление переменных других типов.

СтрДлина

Функция позволяет получить количество символов в строке 1C, включая пробелы и незначащие символы.

СокрЛП, СокрЛ, СокрП

Полезная функция для удаления незначащих символов в строковом значении. СокрЛ обрабатывает символы, стоящие слева от последнего значащего символа, СокрП — справа. А СокрЛП — справа и слева.

Помимо пробелов, функция 1C удаляет такие символы, как перенос строки, неразрывный пробел и т.д.

Лев, Прав, Сред

С помощью данных функций очень просто получить первые (Лев) или последние (Прав) символы в строке, а также произвольное количество символов (Сред).

Найти

Функция для поиска подстроки внутри другой подстроки. Синтаксис Найти( , ). Функция возвращает число — номер позиции символа (или символов) в исходной подстроке. Если подстроки не найдено, вернётся число 0. Если в искомой подстроке есть несколько вхождений, вернется номер позиции первого совпадения.

ВРег, НРег, ТРег

Функции для управления регистром строки. ВРег — преобразует строку в верхний регистр. НРег — в нижний. ТРег — у каждого нового слова первая буква преобразуется в верхний регистр, остальные в нижний.

ПустаяСтрока

Функция, позволяющая сравнить исходную строку с пустой строкой. Проверяется наличие незначащих символов.

Получите 267 видеоуроков по 1С бесплатно:

Аналогично можно проверить строку на пустое значение следующим образом:

СтрЗаменить

Функция СтрЗаменить позволяет массово заменить искомое значение на нужное нам. Синтаксис:

СтрЧислоСтрок

Позволяет получить количество строк в многострочном тексте. Функция считает количество переносов строк (Символы.ПС).

Например, построчная обработка текстового фрагмента:

СтрПолучитьСтроку

С помощью данной функции можно получить произвольную строку из многострочного текста. Синтаксис — СтрПолучитьСтроку( , ).

СтрЧислоВхождений

Функция для подсчета числа вхождений произвольного фрагмента в строку. Например, подсчитать количество вхождений определенных символов или слов в текст.

Символ и КодСимвола

Две обратные функции. С помощью КодСимвола можно получить код символа в кодировке Unicode. Функцией Символ можно получить символ, зная Unicode кодификатор.

Читайте также:  Программы для стабильного пинга

Часто встречающиеся задачи по работе со строками в 1С

Рассмотрим классические примеры решения задач в работе с текстовыми переменными.

Конкатенация строк в 1С

Конкатенация, или объединение строк в 1С делается оператором «+».

Преобразовать число в строку

Тут всё просто. Достаточно использовать метод «Строка()»:

Однако может смущать наличие неразрывного пробела.

Его можно убрать с помощью замены неразрывного пробела на пустую строку:

или с помощью метода Формат:

Кавычки в строке 1С

Для новичков достаточно трудно установить кавычки внутри строки, хотя в этом нет ничего сложного. Достаточно внутри строки поставить вместо одних кавычек двое.

Символ переноса строки

Символ переноса строки необходим для переноса строки на следующую строку. В 1С это можно сделать с помощью специальной конструкции «Символы.ПС».

Сравнение строк в 1С

Сравнить строки достаточно просто с помощью оператора сравнения — «=».

Однако для получения корректного сравнения часто требуется возвести строки в один регистр и убрать незначащие символы:

Таким образом, мы получим более точное сравнение двух строк.

Убрать пробелы в строке 1С

Достаточно часто нужно убрать пробелы в строке 1С.

Если требуется убрать пробелы справа и слева:

Если требуется убрать абсолютно все пробелы, можно заменить их на пустую строку:

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

Другие статьи по 1С:

Если Вы начинаете изучать 1С программирование, рекомендуем наш курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

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

Страницы

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

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

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

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

Читайте также:  Лучшие аудиоплееры для iphone

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

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

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

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

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

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

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

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

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

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

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

Обучение программированию на 1С

Объединение таблиц запроса 1С

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

Результатом выполнения объединения запросов будет слияние двух результатов вместе. То есть данные будут получены по обоим запросам, но соединены в одно. К примеру, по следующим данным

необходимо вычислить общий долг по каждому контрагенту. Очевидно, что для этого необходимо сложить по каждому контрагенту расход, что соответствует отгрузке товара в суммовом выражении и вычесть приход, т.е. реально поступившую оплату за продукцию. Чтобы получить корректный результат, нужно применить конструкцию языка запросов «ОБЪЕДИНИТЬ ВСЕ». Как это будет выглядеть на практике:

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

Читайте также:  Рейтинг зарядных устройств для смартфонов

Теперь результатом запроса будут следующие данные:

Контрагент Долг
Мебель + 200
Квант 1000
Траст 300
Сложности при объединении запросов

Если задача – объединить два запроса, то при этом у них должно совпадать количество по показателю «Поле». К примеру, если в таблице Расход есть информация о скидке, которая не предусмотрена в таблице данных Приход, то это поле в данные таблицы Приход необходимо добавить в форме констант. В дальнейшем скидку нужно будет вычесть, а результаты вычислений сгруппировать. Не стоит пренебрегать порядком расположения полей, потому что объединение информации происходит именно в той порядковой очередности, в которой поля указаны для секций ВЫБРАТЬ в каждом из запросов.

Различия в конструкциях

Неправильное применение конструкций «ОБЪЕДИНИТЬ» и «ОБЪЕДИНИТЬ ВСЕ» языка запросов приводит к негативным последствиям. К примеру, если выполнить запрос в следующем виде:

то в полученной таблице будет две одинаковые строки. Для данного случая необходимо ОБЪЕДИНИТЬ заменить на — ОБЪЕДИНИТЬ ВСЕ. В чём же главное отличие этих двух конструкций и почему иногда нужно ставить «ОБЪЕДИНИТЬ», а в других случаях только «ОБЪЕДИНИТЬ ВСЕ».

Конструкция «ОБЪЕДИНИТЬ ВСЕ» не выполняет группировку по строкам полученного результата. Конструкция «ОБЪЕДИНИТЬ» производит слияние двух результатов и при этом выполняет группировку повторяющихся строк. В том случае, когда заранее известно, что получить одинаковые строки невозможно, эффективнее использование конструкции «ОБЪЕДИНИТЬ ВСЕ». Это улучшает быстродействие, так как не приходится проверять результаты на идентичность для их последующей группировки.

Стоит понимать, что операция объединения и операция соединения совершенно различны. Для соединения требуется ключ, в то время как для объединения наличие или отсутствие ключа роли не играет. Произвольный показатель по количеству полей при выполнении запроса соединения допустим, а вот при конструкции объединения не только должно совпасть количество полей, но и их последовательность. То есть сам процесс выполнения конструкции объединения подразумевает работу по 2-м запросам, а уже результат работы объединяется в единый формат.

Ссылка на основную публикацию
Adblock detector