Содержание:
1. Добавление лидирующих нулей в системе программы 1С
2. Результаты замеров в системе программы 1С: Предприятие
1. Добавление лидирующих нулей в системе программы 1С
Часто при обменах возникает необходимость обогащать номера (коды) объектов лидирующими нулями для последующей корректной обработки. Чтобы не тратить каждый раз время на разработку или поиски готовых вариантов решения таких задач, можно применить методы, описанные в этой статье.
Чтобы не просто «лишь бы как» сделать метод элемента создания строки с лидирующими нулями, а с толком и с нацеленностью на быстродействие, проведем эксперимент. Реализуем для сравнения 3 алгоритма, и выполним замер времени 1С выполнения на 100000 итераций.
В качестве длины требуемого номера возьмем тоже не совсем маленькое значение: например, 100 символов.
Чтобы получить нужное количество нулей, можно воспользоваться функцией соединения строк массива – «СтрСоединить».
Результат = СтрСоединить(Новый Массив(Количество + 1), "0");
Через форматирование числа «0» так же можно получить необходимое количество нулей. Для этого необходимо указать дополнительные параметры у функции.
Результат = Формат(0, "ЧЦ=" + Строка(Количество) + ";ЧН=; ЧВН=; ЧГ=0");
// ЧЦ – Число цифр, ЧВН – Выводить лидирующие нули, ЧГ – Группировка разрядов
Последовательно добавляя нули, пока не будет достигнута требуемая длина.
Пока СтрДлина(Результат) < Количество Цикл
Результат = "0" + Результат;
2. Результаты замеров в системе программы 1С: Предприятие
На первом месте с незначительным отрывом от ближайшего конкурента оказался метод обработки через массив. На втором месте метод обработки через форматирование. Фактически, эти 2 алгоритма можно сравнивать исключительно по строке получения нужного количества нулей, так как далее выполняется абсолютно идентичный код, а замеры этого кода могут немного плясать, тем самым улучшая / ухудшая позицию того или иного метода. Третье непочетное место занял обработчик с использованием цикла. Он остался далеко позади.
Новый
Безусловно, метод цикличной обработки можно немного улучшить, если не вычислять каждый раз «СтрДлина», но он все равно не получит таких результатов, как первые 2.
Таким образом, можно остановить свои поиски на любом из первых двух алгоритмов добавления лидирующих нулей, так как разница во времени их выполнения крайне незначительная.
И, ниже, код обработки.
Область
Специалист компании "Кодерлайн"
Сергей Пушкин