// Функция извлекает посимвольно число из строки // 234Вася89 превратится в 23489 Функция ИзвлечьЧислоИзСтрокиПосимвольно(ИсходнаяСтрока) Экспорт ЧислоСтрока=""; Для стр = 1 по СтрДлина(ИсходнаяСтрока) цикл СледующийСимвол = Сред(ИсходнаяСтрока, стр, 1); Попытка ЧислоСтрока = ЧислоСтрока + Строка(Число(СледующийСимвол)); Исключение КонецПопытки; КонецЦикла; Попытка ЧислоВернуть = Число(ЧислоСтрока); Исключение ЧислоВернуть = 0; КонецПопытки; Возврат ЧислоВернуть; КонецФункции // ИзвлечьЧислоИзСтрокиПосимвольно() // Функция очищает строку от цифр посимвольно // 234Вася89 превратится в Вася Функция ОчиститьСтрокуОтЦифрПосимвольно(ИсходнаяСтрока) Экспорт ЧистаяСтрока=""; Для стр = 1 по СтрДлина(ИсходнаяСтрока) цикл СледующийСимвол = Сред(ИсходнаяСтрока, стр, 1); Попытка ДляПроверки = Число(СледующийСимвол); Исключение ЧистаяСтрока = ЧистаяСтрока + Строка(СледующийСимвол); КонецПопытки; КонецЦикла; Возврат ЧистаяСтрока; КонецФункции // ОчиститьСтрокуОтЦифрПосимвольно()
Пример использования:
Имеем ТЗ, с колонкой, содержащей значения вида БукваЧисло (например R7,R2,R1,R10)
Перед нами стоит задача отсортировать по этой колонке по числовой части (R1,R2,R7,R10), а не так, как отсортирует 1С по умолчанию (R1,R10,R2,R7)
// сначала добавим числовую колонку, по которой потом отсортируем ТЗ.Колонки.Добавить("Индекс"); Для каждого Стр Из ТЗ Цикл // заполним колонку Индекс индексами из КолонкаДляСортировки Стр.Индекс = ИзвлечьЧислоИзСтрокиПосимвольно(Стр.КолонкаДляСортировки); КонецЦикла; // отсортируем по числовому индексу. ТЗ.Сортировать("Индекс");
Вуаля! (R1,R2,R7,R10)