Быстрое объединение строк в одну

Публикация № 1743594 18.10.22

Приемы и методы разработки - Универсальные функции

конкатенация строк сложение быстрая быстрое

Хочу предложить ещё одно быстрое объединение большого количества строк в одну классическим способом без использования платформозависимых функций СтрСоединить, ЗаписьXML и т.д.

     Большинство способов быстрого объединения строк подразумевают использование продвинутых функций платформы, таких как: СтрСоединить, ЗаписьXML и т.д.

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

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

      Основные этапы использования: 


	СтрАгригатор = Обработки.АгригаторСтрок.Создать();

	СтрАгригатор.Добавить_Строку( строка 1) );
    . . . 
	СтрАгригатор.Добавить_Строку( строка N );
	
	ИтоговаяСтрока =  СтрАгригатор.Получить_Всю_Строку();
	

 

Вот реальный пример применения АгрегатораСтрок:

	//СтрКодов = "";
	СтрАгригатор = Обработки.АгригаторСтрок.Создать();
	
	первый_эл = Истина;
	Для каждого стр из ТЗ_элементов_Запрета Цикл 
		
		Если  первый_эл = Ложь тогда
			//СтрКодов = СтрКодов+";";	
			СтрАгригатор.Добавить_Строку(";");
		КонецЕсли;
			
		//СтрКодов = СтрКодов+стр.Код;	
		СтрАгригатор.Добавить_Строку( СокрЛП(стр.Код) );
	
		первый_эл = Ложь;	
	КонецЦикла;
	
    СтрКодов = СтрАгригатор.Получить_Всю_Строку();

 

Похожие публикации:

Формирование строки большой длины

Варианты конкатенации строк в 1С и замеры производительности

Скорость сложения строк большой длины в 1С разными методами (конкатенация строк)

Скачать файлы

Наименование Файл Версия Размер
Быстрое объединение строк в одну:

.epf 4,69Kb
19
.epf 4,69Kb 19 Скачать бесплатно

Специальные предложения

Лучшие комментарии
5. SlavaKron 18.10.22 15:32 Сейчас в теме
(2) Такой замер:
&НаКлиенте
Перем МассивСлов;

&НаКлиенте
Процедура ТекстПриИзменении(Элемент)
	МассивСлов = СтрРазделить(Текст, " ", Ложь);
КонецПроцедуры

&НаКлиенте
Процедура СпособАвтора(Команда)
	
	ТекстРезультат = "";
	
	ВремяНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
	СпособАвтораНаСервере(МассивСлов);
	ВремяВыполнения = ТекущаяУниверсальнаяДатаВМиллисекундах() - ВремяНачала;
	Сообщить("Время выполнения (способ автора): " + ВремяВыполнения + " мс");
	
КонецПроцедуры

&НаСервере
Процедура СпособАвтораНаСервере(Знач МассивСлов)
	
	ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
	
	Для Каждого Слово Из МассивСлов Цикл ОбработкаОбъект.Добавить_Строку(Слово) КонецЦикла;
	
	ТекстРезультат = ОбработкаОбъект.Получить_Всю_Строку();
	
КонецПроцедуры

&НаКлиенте
Процедура СпособСтрСоединить(Команда)
	
	ТекстРезультат = "";
	
	ВремяНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
	ТекстРезультат = СтрСоединить(МассивСлов, " ");
	ВремяВыполнения = ТекущаяУниверсальнаяДатаВМиллисекундах() - ВремяНачала;
	Сообщить("Время выполнения (способ СтрСоединить): " + ВремяВыполнения + " мс");
	
КонецПроцедуры
Показать
Прикрепленные файлы:
user1203706; RocKeR_13; ixijixi; 0ct0ber; sashapere; tolyan_ekb; +6 Ответить
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 538 18.10.22 12:07 Сейчас в теме
"Агригатор" - уже настораживает о фальсификате.

Зачем пытаться ускорить с помощью 1с, если самый быстрый метод - сцепка элементов массива.
7OH; kamisov; RocKeR_13; ardn; mrChOP93; PowerBoy; +6 Ответить
20. sashapere 152 19.10.22 22:20 Сейчас в теме
(1) Попытка ускорить не ускоряемое)
2. tolyan_ekb 197 18.10.22 12:37 Сейчас в теме
А где замеры и сравнение с другими способами?
kamisov; t278; ardn; mrChOP93; +4 Ответить
5. SlavaKron 18.10.22 15:32 Сейчас в теме
(2) Такой замер:
&НаКлиенте
Перем МассивСлов;

&НаКлиенте
Процедура ТекстПриИзменении(Элемент)
	МассивСлов = СтрРазделить(Текст, " ", Ложь);
КонецПроцедуры

&НаКлиенте
Процедура СпособАвтора(Команда)
	
	ТекстРезультат = "";
	
	ВремяНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
	СпособАвтораНаСервере(МассивСлов);
	ВремяВыполнения = ТекущаяУниверсальнаяДатаВМиллисекундах() - ВремяНачала;
	Сообщить("Время выполнения (способ автора): " + ВремяВыполнения + " мс");
	
КонецПроцедуры

&НаСервере
Процедура СпособАвтораНаСервере(Знач МассивСлов)
	
	ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
	
	Для Каждого Слово Из МассивСлов Цикл ОбработкаОбъект.Добавить_Строку(Слово) КонецЦикла;
	
	ТекстРезультат = ОбработкаОбъект.Получить_Всю_Строку();
	
КонецПроцедуры

&НаКлиенте
Процедура СпособСтрСоединить(Команда)
	
	ТекстРезультат = "";
	
	ВремяНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
	ТекстРезультат = СтрСоединить(МассивСлов, " ");
	ВремяВыполнения = ТекущаяУниверсальнаяДатаВМиллисекундах() - ВремяНачала;
	Сообщить("Время выполнения (способ СтрСоединить): " + ВремяВыполнения + " мс");
	
КонецПроцедуры
Показать
Прикрепленные файлы:
user1203706; RocKeR_13; ixijixi; 0ct0ber; sashapere; tolyan_ekb; +6 Ответить
6. tolyan_ekb 197 18.10.22 15:39 Сейчас в теме
7. SlavaKron 18.10.22 15:44 Сейчас в теме
(6) Надеюсь, ирония. В среднем, способ автора в 1000 раз медленнее СтрСоединить, зато платформонезависимо.
8. tolyan_ekb 197 18.10.22 15:44 Сейчас в теме
(7) Конечно, ирония. Спасибо за тест.
11. sashapere 152 18.10.22 18:01 Сейчас в теме
(7) Дело в том что , в обработке используется обычные соединение строк через + , прирост в скорости по сравнению с обычным сложение достигается за счёт разделения строк на фрагменты, которые постепенно укрупняются , чтобы избежать частого добавления "кусочков" к большой строке.
9. sashapere 152 18.10.22 17:57 Сейчас в теме
3. KVIKS 193 18.10.22 13:46 Сейчас в теме
А обычный + уже не работает?
Aphanas; sashapere; +2 Ответить
4. RocKeR_13 1183 18.10.22 13:54 Сейчас в теме
Автора так и не насторожили различные "варианты" написания одного слова? Существенный минус - доступность только на сервере: о каком быстродействии может быть речь, если нужен будет серверный вызов как при добавлении отдельной части, так и для сбора итоговой строки? Собственно, в статье не описан сам подход к конкатенации строк с обоснованием выбранного метода
12. sashapere 152 18.10.22 18:03 Сейчас в теме
(4) По доступности ограничений тут нету, можно использовать как на Сервере так и на Клиенте, так и в Мобильном приложении
13. sashapere 152 18.10.22 18:07 Сейчас в теме
(12) Хотя для клиента, надо взять модуль из обработки и разместить эти процедуры и функции в Клиентской части
10. sashapere 152 18.10.22 17:58 Сейчас в теме
(3) При больших количествах соединений, обычный + довольно медленно отрабатывает
14. sashapere 152 18.10.22 18:08 Сейчас в теме
Модуль открыт, (т)дерзайте!
15. TMV 14 18.10.22 20:44 Сейчас в теме
Зачем обработка, когда лучше Общий модуль?
16. Ветер в поле 3 19.10.22 08:59 Сейчас в теме
(15)
Потому что обработка имеет собственные переменные, это некий заменитель класса. А Общий модуль один на всех и нет гарантии, что во время конкатенации строк сразу несколько алгоритмов не будут одновременно формировать строку.
sashapere; +1 Ответить
17. RocKeR_13 1183 19.10.22 09:02 Сейчас в теме
(16) зато сразу получаем ограничение, о котором писал выше: доступность исключительно на сервере. Зачем собственные переменные для конкатенации строк?
19. sashapere 152 19.10.22 22:07 Сейчас в теме
(17) Чтобы отвязаться от сервера, надо руками перенести процедуры и функции из обработки в модуль клиента, должно работать. В обработке есть собственная переменная , которая отвечает за кэш строк, её по сути обработкой и закрываем
21. TMV 14 21.10.22 06:26 Сейчас в теме
18. sashapere 152 19.10.22 22:06 Сейчас в теме
(16) Да, да , именно поэтому!
Оставьте свое сообщение

См. также

Скорость сложения строк большой длины в 1С разными методами (конкатенация строк)

Механизмы платформы 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

Как известно, в 1С со строковыми переменными часто приходится работать в режиме добавления строк в одну переменную. Когда строка небольшой длины, все происходит достаточно быстро и можно работать вот так: Строка1 = "Привет"; Строка2 = "мир!"; Результат = Строка1 + Строка2; И все замечательно ровно до того момента, когда эти строки не становятся большими... Тогда скорость работы значительно падает. Я провел небольшие замеры производительности и выношу их на суд общественности.

1 стартмани

02.01.2022    6997    2    Diversus    74    

Универсальное сворачивание табличной части документа

Универсальные функции Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Бесплатно (free) Бесплатно (free)

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

14.12.2020    5891    91    Andrei_Ivanov    4    

Получение ссылки из форматированной строки

Универсальные функции Платформа 1С v8.3 Платформа 1С v8.3 Россия Россия Бесплатно (free) Бесплатно (free)

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

05.06.2020    8490    0    VZhulanov    1    

Варианты конкатенации строк в 1С и замеры производительности.

Механизмы платформы 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

Практики использования типовых и самописных конфигураций 1С иногда сталкиваются с "торможениями" продуктов. Причины могут быть разными - некоторые любит делать множественные обращения через точку в циклах, другие используют вложенные запросы в параметрах виртуальных таблиц, третьи бессмысленно гоняют мегабайты контекста в клиент-серверной модели. Но иногда можно получить огромную потерю производительности на банальной операции сложения строк. Давайте рассмотрим эту ситуацию детальнее.

1 стартмани

12.06.2014    35526    23    Dementor    14    

Ручная запись версии объекта (для снеговика)

Печатные формы Универсальные функции Документооборот и делопроизводство Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

Печатная форма для УПП 1.3.6.1 и алгоритм создания для любых других конфигураций с существующей системой версионирования.

07.11.2010    21432    30    anig99    1    

АЦРК: Чтение/Запись XML-файлов

Универсальные функции Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

Обработка является примером работы с XML-файлами. Работа с XML-файлами - это не сложно.

23.09.2010    25667    998    acrk    7    

Обработка для генерации штрих-кодов EAN13

Универсальные функции Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

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

03.09.2009    19506    347    candy    12    

Конвертор чисел (1с8)

Универсальные функции Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Бесплатно (free) Бесплатно (free)

Обработка переводит целое положительное число из любой системы счисления от двоичной до 36-ричной в любую систему счисления от двоичной до 36-ричной.

07.07.2009    14074    115    YVolohov    11    

Процедуры по работе с объектами MSOffice

Универсальные функции Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

Общий модуль, содержащий процедуры по чтению данных из документов MSOffice v0.5

27.04.2009    25988    1144    acsent    6    

Форма вывода справочника с настройкой колонок

Работа с интерфейсом Универсальные функции Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

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

31.03.2009    23071    543    O-Planet    31    

Работа со списком значений ОБНОВЛЕНО 10.08.09

Универсальные функции Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

Подсистема работы со списком значений (к возможностям стандартной формы работы со списком, возникающей, к примеру, при установке отбора "в списке", добавлена загрузка произвольного набора данных из табличного документа). ПРОВЕРЯЛАСЬ ТОЛЬКО ДЛЯ СКД!

19.03.2009    18379    185    e.kogan    3    

Получение времени с точностью до миллисекунд в 8.х

Универсальные функции Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

Для некоторых задач необходимо бывает определить текущее время с точностью большей чем секунда. Встроенные в платформу средства не позволяют получить такую точность. Обработка демонстрирует методику получения точного времени

06.03.2009    23305    278    ValeriVP    12    

Структура подчинённости

Универсальные функции Печатные формы Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

Немного переписанная типовая обработка "Структура подчинённости". Отличается от типовой тем, что видит все подчинённые документы, а не только упомянутые в критерии отбора.

04.02.2009    33049    1803    e.kogan    26    

Гибкое администрирование прав пользователей на редактирование реквизитов

Универсальные функции Роли и права Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Бесплатно (free) Бесплатно (free)

Если вам необходимо для каждого пользователя 1С установить персональные права на редактирование определенного реквизита формы справочника (документа), то данная технология возможно станет для вас отправной точкой.

21.01.2009    15174    152    mdbm    6    

Поиск подчиненных документов

Обработка документов Поиск данных Универсальные функции Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

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

11.12.2008    23757    519    PointAnd    11    

Демонстрация некоторых интересных возможностей платформы

Работа с интерфейсом Универсальные функции Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

Демонстрация некоторых интересных возможностей платформы: выполнение каких-либо процедур чаще 1 раза в секунду и параллельная работа процедур

02.09.2008    11103    1041    Sturm LS    9    

COM-объект, реализующий метод Sleep

Разработка внешних компонент Универсальные функции Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

COM-объект, реализующий метод Sleep. Может использоваться на сервере 1С, в win x86 и x64

13.08.2008    25130    252    ValeriVP    26