-

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

0
47050
28.01.2021 Ольга Волкова

Содержание:

1.       Операция конкатенации строк

2.       Конкатенация в запросах  


1.   Операция конкатенации строк


Конкатена́ция — это операция склеивания объектов линейной структуры. В 1С конкатенации (+ или &) используется для того, чтобы присоединить одну строку к другой. В результате использования конкатенации значений длина строки получается равна сумме длин соединяемых строк. Если типы данных второго или последующих операндов со строковым типом не совпадают, их значение преобразуется к строковому типу переменных (т.е., например, число автоматически будет преобразовано к типу переменной, указанной слева от оператора +).

 

Пример:


Имя= «Остап»;

Отчество= «Ибрагимович»;

Фамилия= «Бендер»;

ФИОГР=Имя+ “ “ +Отчество+ “ “ +Фамилия + “ гр- “ + 1987;

//получим Остап Ибрагимович Бендер гр-1987

 

Если нужно из некоторой коллекции строк получить одну единую, это можно сделать в цикле:


ИтогСтрока = Строка + ЭлементКоллекции;

 

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


Есть несколько вариантов получения строки из коллекции.


Первый – с помощью текстового документа. В этом случае все составные части будут идти отдельными строками. При использовании функции ПолучитьТекст(), нужно будет сделать замену символов переноса строк в коде на пустую строку, а после получения результата использовать метод обратного преобразования.


Другой способ – занести все подстроки в массив, который преобразуется в текстовое представление с помощью функции ЗначениеВСтрокуВнутр(), а далее лишнее очищается.


Пример:


СтрокаКолекц=Сред(СтрЗаменить(ЗначениеВСтрокуВнутр(Массив), """}," + Символы.ПС + "{""S"",""", ""), 53 + СтрДлина(Формат(Массив.Количество(), "ЧГ=")));

При массовых операциях конкатенации строк можно использовать методы платформы СтрРазделить и СтрСоединить.


Например:


ИзвТекст= Новый Массив;
Для НомерКолонки = 1 По Макет.ШиринаТаблицы Цикл
ИзвТекст.Добавить(ТекстОбласти);

РезультатТекст = СтрСоединить(ИзвТекст, Символы.ПС);


Еще один способ операции конкатенации строк — использование объекта ЗаписьXML. У этого объекта можно использовать метод ЗаписатьБезОбработки() для «сборки» документа в том виде, какой подается на вход, т.е. без лишних тегов. 

 

2.      Конкатенация в запросах


При создании текстов запросов используя функцию конкатенации можно сделать запросы более гибкими.

 

Конкатенация в запросах может использоваться при программной "сборке" текста запроса. Пример:

 

ТекстЗапроса =
"ВЫБРАТЬ
Номенклатура.Наименование КАК Наименование,
&ИмяПоляКод КАК КодНоменклатуры
ИЗ
Справочник.Номенклатура КАК Номенклатура ;

 

ТекстЗапроса = СтрЗаменить(ТекстЗапроса , "&ИмяПоляКод ", "Номенклатура." + ИмяПоляКод);

 

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

 

ТекстЗапроса =

"ВЫБРАТЬ
|ТаблицаСправочника.Наименование КАК Наименование,
|ТаблицаСправочника.Код КАК КодСправочника
|ИЗ
|&ТабСправочника КАК ТаблицаСправочника";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса , "&ТабСправочника", "Справочник." + ИмяСправочника);


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


ВЫБРАТЬ

ВЫРАЗИТЬ(ВЫРАЗИТЬ("123" КАК Строка(3))+ВЫРАЗИТЬ("789" КАК Строка(3))

КАК Строка(6)) КАК Результат

ИЗ

Справочник.Номенклатура КАК Номенклатура

 

Специалист компании «Кодерлайн»

Ольга Волкова

Задать вопрос автору статьи
Тема вопроса*
Ваше имя*
E-mail или телефон*
Ваш вопрос*
 

Добавить комментарий
Текст сообщения*
Защита от автоматических сообщений
 
Услуги программиста 1С
Получите специалиста
для решения всех задач
в области 1С
Программы 1С
Цены и подробное описание программ 1С:Предприятие 8.