Оптимизация типовых функций/кода 1с в 8-ке - оптимизация типовых функций 1С типа ВыделитьСлово, РазложитьСтрокуВМассивПодстрок и т.д.
В продолжение обсуждения //infostart.ru/public/64222
Все алгоритмы предлагаю выкладывать в виде:
Название типовой/штатной функции 1С - например, ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок
Можно приложить типовую реализацию функции
Далее выкладываем свой оптимизированный вариант, который должен 100% выполнять ту же самую функцию.
Возможно описать некоторые ограничения, связанные с использованием оптимизированной функции - например, нужна ли первоначальная инициализация (может быть медленной)
- Функция ОбщегоНазначения. РазложитьСтрокуВМассивПодстрок
Описание
Функция "расщепляет" строку на подстроки, используя заданный разделитель. Разделитель может иметь любую длину.
Если в качестве разделителя задан пробел, рядом стоящие пробелы считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр игнорируются.
Например,
РазложитьСтрокуВМассивПодстрок(",ку,,,му", ",") возвратит массив значений из пяти элементов, три из которых - пустые строки, а РазложитьСтрокуВМассивПодстрок(" ку му", " ") возвратит массив значений из двух элементов
Параметры:
Стр - строка, которую необходимо разложить на подстроки.
Параметр передается по значению.
Разделитель - строка-разделитель, по умолчанию - запятая.
Возвращаемое значение:
массив значений, элементы которого - подстроки
Самая быстрая реализация этого метода ( по состоянию на 28.01.2010)
Перем Script2;
Функция РазложитьСтрокуВМассив(Строка, Разделитель = ",") Экспорт
Возврат Script2.eval("Split(""" + Строка + """, """ + Разделитель + """)").Выгрузить();
КонецФункции
Процедура Инит() Экспорт
Script2 = Новый COMОбъект("MSScriptControl.ScriptControl");
Script2.Language = "vbscript";
КонецПроцедуры
[u]Ограничения реализации - требуется предварительная инициализация[/u]